一面:(约30分钟)
- 序数组排序,二分,复杂度常见排序算法,说下快排过程,时间复杂度有N个节点的满二叉树的高度。
Q:1+logN单元点最短路的方法,
Q:时间复杂度如何实现关键字输入提示,使用字典树,复杂度多少,有没有其他方案,
Q:答哈希,
Q:如果是中文呢,分词后建立字典树?
Q:hashmap的实现讲一下吧,讲的很详细了。
Q:讲一下红黑树的结构,查询性能等。
Q:Java中的垃圾回收讲一下,讲了分代,gc算法,gc root可达性分析等死锁是怎么产生的
Q:线程和进程的区别
Q:进程的通信方式
Q:CPU的执行方式
Q:代码中遇到进程阻塞,进程僵死,内存泄漏等情况怎么排查。
Q:通过ps查询状态,分析dump文件等方式排查。
Q:Linux了解么,查看进程状态ps,查看cpu状态 top。
Q:查看占用端口的进程号netstat grep讲一下Tomcat的基本架构和组件,以及请求的整个流程。
Q:说了一下connector和container架构和servlet请求过程。
二面:(约30分钟)
Q:快排的时间复杂度,冒泡时间复杂度,
Q:快排是否稳定,快排的过程100w个数,怎么找到前1000个最大的,
Q:堆排序,怎么构造,怎么调整,时间复杂度。
Q:先说了一下dfs递归实现。
- 面试官说要优化。
Q:说了一下用迪杰斯特拉的思路,
- 说可以。
Q:四辆小车,每辆车加满油可以走一公里,问怎么能让一辆小车走最远。
- 说了好几种方案,面试官引导我优化了一下,但是还是不满意,最后他说跳过。
Q:hashmap的实现,hashtable,concurrenthashmap实现。
Q:MySQL的索引,B+树性质。Linux的cpu 100怎么排查,top jstack,日志,
Q:gui工具Redis内存数据库的内存指的是共享内存么
Q:Redis的持久化方式秒杀系统的架构设计
三面:(约30分钟)
Q:十亿个数的集合和10w个数的集合,如何求它们的交集。集合的数字不重复。十亿和数找到前100个最大的,堆排序,怎么实现,怎么调整。
Q:TCP和UDP的区别,具体使用场景呢。TCP四次挥手讲一下过程,最后一次ack如果客户端没收到怎么办。
Q:对于socket编程,accept方法是干什么的,在三次握手中属于第几次,可以猜一下,为什么这么觉得。
Q:对于单例模式,有什么使用场景了,讲了全局id生成器,他问我分布式id生成器怎么实现,
- 说了zk,问我zk了解原理不,讲了zab,然后就没问啦。
Q:除了单例模式,知道适配器模式怎么实现么,有什么用回到网络,
Q:刚才你说到直播场景,知道直播的架构怎么设计么,要点是什么,
- 说了几个不太对,他说要避免广播风暴,答不会。
Q:问了一下最近看什么书,什么时候开始写博客的
- 问了还有几轮面试,他说这轮我可以过,有点小惊喜
Q:HR面自我介绍
Q:实习收获
Q:之前实习公司的情况,拿到offer了吗,
Q:会如何选择呢排一下公司,部门,薪资和城市等因素。
Q:你的优缺点,
Q:如何改进学生时代最成功的事你的预期薪资