雄安个人代做网站排名,开发公司工程部奖励规定,企业邮箱注册申请免费注册126,阿里指数数据分析平台官网文章目录
目录
文章目录
提问问题
问题1
问题2
问题3
问题4
问题5
问题6
问题7
问题8
问题9
问题10
问题11
问题12
写在最后 提问问题
介绍一下Linux常⽤命令#xff0c;例如#xff1a;Vim快捷键#xff0c;常⽤查看Log的命令#xff0c;路径相关#x…文章目录
目录
文章目录
提问问题
问题1
问题2
问题3
问题4
问题5
问题6
问题7
问题8
问题9
问题10
问题11
问题12
写在最后 提问问题
介绍一下Linux常⽤命令例如Vim快捷键常⽤查看Log的命令路径相关权限相关问题介绍下策略模式、其他的常用的设计模式了解那些为什么选Redis缓存为什么不直接⽤MyBatis⾃带的缓存 Redis有什么优缺点简单介绍一下分布式锁?为什么出现分布式锁?实现分布式锁需要注意的事项?Object有哪些方法?项目中代码的分支太多了如何解决?项目中不同接口不同这个是怎么做的?MySQL什么情况下不走索引给出具体的示例场景?关于钱的问题在数据库中的存储以及实际编码阶段上对钱的操作?给⼀个⼤⽂件电脑内存有限如何给这个⼤⽂件中的整数排序 笔试题求滑动窗口中的最大值给一个整数数组 nums有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。每次移动一位。 问题1
Linux常用命令
Vim快捷键i 进入插入模式Esc 退出插入模式:wq 保存并退出:q! 强制退出不保存。查看日志tail -f /var/log/syslog 实时查看日志grep 用于搜索特定内容如 grep error /var/log/syslog。路径相关cd 切换目录ls 列出目录内容pwd 显示当前工作目录的完整路径mkdir 创建新目录rm 删除文件或目录。权限相关chmod 修改文件或目录的权限chown 更改文件或目录的所有者ls -l 查看详细的文件权限信息。 问题2
策略模式是一种行为设计模式它定义了一系列算法将每个算法封装起来并使它们可以互换。这种模式让算法的变化独立于使用算法的客户端。
策略模式通常由三个部分组成策略接口Strategy具体策略类Concrete Strategy以及上下文环境Context。策略接口声明了算法的骨架具体策略类实现了具体的算法上下文环境则持有一个策略类的引用并通过该引用来调用相应的算法。 除了策略模式常用的设计模式还包括 单例模式Singleton确保一个类只有一个实例并提供全局访问点。工厂模式Factory定义一个用于创建对象的接口让子类决定实例化哪一个类。工厂模式让类的实例化延迟到子类进行。抽象工厂模式Abstract Factory创建一系列相关或依赖对象的接口而无需指定它们具体的类。建造者模式Builder封装一个产品的构建过程并允许按步骤构造。原型模式Prototype通过复制现有的实例来创建新的实例。适配器模式Adapter允许不兼容的接口之间工作。桥接模式Bridge将抽象与实现分离使两者可以独立变化。组合模式Composite将对象组合成树形结构以表示“部分-整体”的层次结构。装饰器模式Decorator动态地给一个对象添加一些额外的职责。外观模式Facade提供一个统一的接口来访问子系统中的一群接口。享元模式Flyweight通过共享技术支持大量细粒度对象的有效共享。代理模式Proxy为其他对象提供一个代理以控制对这个对象的访问。观察者模式Observer定义对象间的一种一对多的依赖关系当一个对象改变状态时所有依赖于它的对象都会得到通知并自动更新。迭代器模式Iterator提供一种方法顺序访问一个聚合对象中各个元素而又不暴露该对象的内部表示。命令模式Command将一个请求封装为一个对象从而使你可用不同的请求、队列或日志请求来参数化其他对象。状态模式State允许一个对象在其内部状态改变时改变它的行为对象看起来好像修改了它的类。责任链模式Chain of Responsibility使多个对象都有机会处理请求从而避免请求的发送者和接收者之间的耦合关系。备忘录模式Memento在不破坏封装的前提下捕获一个对象的内部状态并在该对象之外保存这个状态。中介者模式Mediator用一个中介对象来封装一系列的对象交互。解释器模式Interpreter给定一个语言定义它的文法的一套解释规则。 问题3 Redis缓存通常比MyBatis自带的缓存更快因为它是基于内存操作的。此外Redis支持更丰富的数据结构和操作可以实现更复杂的缓存策略。 问题4 Redis优点 速度快基于内存操作。支持丰富的数据类型。可以持久化数据到磁盘。具备原子操作和事务支持。 Redis缺点 内存资源有限。数据持久化可能导致写入延迟。高可用性配置较为复杂。 问题5 分布式锁是为了解决分布式系统中多个进程或服务需要协调访问共享资源时的同步问题。 出现分布式锁的原因是单个进程锁不能跨多个节点或服务器工作。 实现分布式锁需要注意的事项 确保锁的互斥性即同一时间只有一个客户端能持有锁。考虑锁的超时和重试机制以防客户端崩溃后锁永久持有。确保锁的高可用性和一致性。 问题6 Java中Object类提供了一些基本方法如equals(), hashCode(), toString(), clone(), getClass(), notify(), notifyAll(), wait()等。 问题7 项目中代码分支太多时可以通过代码重构、合并相似功能的分支、删除不再维护的分支、使用特性开关来减少分支数量。 问题8
项目中接口差异通常通过适配器模式、策略模式或者使用多态来处理以保证代码的通用性和可维护性。 举例厂商的参数变了如何满足 1.把所有的参数封装成一个对象然后在对象里面获取最后再根据配置中心的内容执行不同的逻辑 2.重载 3.所有的api抽象成一个配置然后修改某个字段再结合配置中心来实现 问题9 MySQL不走索引的情况 数据表非常小全表扫描比索引查找更快。索引列数据类型不一致或者存在大量NULL值。WHERE子句中包含范围查询如BETWEEN操作符。数据库优化器判断使用索引不会提高查询性能。 问题10 在数据库中通常使用固定小数点的数字格式存储钱如使用DECIMAL类型以避免浮点数运算的精度问题。 在编码阶段应该使用货币库如Java中的BigDecimal来处理钱的加减乘除等操作。 问题11 如果计算机内存有限可以使用外部排序算法对大文件进行排序。 首先将文件分割成多个可以在内存中处理的小块对每块进行排序然后将排序好的块合并起来得到最终的排序结果。这通常涉及到使用流或者临时文件来处理排序过程。 问题12
力扣上有原题滑动窗口最大值
思路是设计单调队列其他详细思路看 思路详解
class MyQueue {DequeInteger deque new LinkedList();//弹出元素时比较当前要弹出的数值是否等于队列出口的数值如果相等则弹出;void poll(int val) {if (!deque.isEmpty() val deque.peek()) { //也要判断队列当前是否为空deque.poll();}}//添加元素时如果要添加的元素大于入口处的元素就将入口元素弹出这样保证队列元素单调递减//比如此时队列元素4,3,1 ;5将要入队比4,3,1都大所以都弹出此时队列5void add(int val) {while (!deque.isEmpty() val deque.getLast()) {//push元素的数值小于等于队列入口元素的数值为止deque.removeLast();}deque.add(val);}//队列队顶元素始终为最大值int peek() {return deque.peek();}
}class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if (nums.length 1) {return nums;}int len nums.length - k 1;int[] res new int[len];//存放结果元素的数组int num 0;MyQueue myQueue new MyQueue();//自定义队列//先将前k的元素放入队列for (int i 0; i k; i) {myQueue.add(nums[i]);}res[num] myQueue.peek();for (int i k; i nums.length; i) {myQueue.poll(nums[i - k]); //滑动窗口移除最前面的元素移除是判断该元素是否放入队列myQueue.add(nums[i]);//滑动窗口加入最后面的元素res[num] myQueue.peek();//记录对应的最大值}return res;}
}写在最后 PS以上是网络上收集的一些常见的问题以及自己对答案搜索整理一次整理基本上就是面试一次的题量适合对自己的知识的查缺补漏 面试一般根据岗位要求或者简历上写的来进行扩展提问也有些是直接问公司常用到的相关方面的技术问题无论怎么准备都祝大家能拿到心怡的offer