个人背景介绍
本科应届生,计算机科学专业,自己有幸拿到了网易雷火、京东、去哪儿、字节跳动、地平线等互联网公司的实习Offer,因为某些自身原因最终选择了地平线,所以来分享一下自己面经,希望对大家有帮助,从而少走一点弯路,同时也整理了相关面试题,大部分都是类似的,留在文末了。
自己的一点心得
注重实力,保持良好心态:面试过程中,继续巩固好自己的技术栈,然后保持一个良好的心态,尤其是还没有Offer的时候,心态别崩,其实到最后大家都会找到工作的,唯一的区别就是公司的方向、规模、待遇方面,也别太在意别人拿到了牛X的Offer。好多之前一直没Offer的人,可能突然某一天就收获到了几份Offer,所以不断提升自己的综合能力才是关键,与其在这羡慕别人,不如让自己心态沉静下来,认真复习、厚积薄发。
及时复盘,查漏补缺:每一场面试大家都要尽力展现出自己更优秀的一面,对于线上面试,自己都是有完整录屏的,就是为了能够之后总结面经、查漏补缺,对自己面试的真实表现也有一个完整的了解。对于线下面试,自己前几场面试都是开着手机录音的,之后复盘。最后因为一天要跑很多面试,就没录音了,面经就靠记忆写啦~。在面试过程中,大家肯定也会发现企业都会问到的一些面试问题,对于这类高频问题,最好自己总结下来,对以后的面试也是很有帮助的。我在文末将附上自己总结的面经题库,基本涵盖了所有的高频面试题。
一面:(约30分钟)
- 序数组排序,二分,复杂度
- 常见排序算法,说下快排过程,时间复杂度
- 有N个节点的满二叉树的高度。1+logN
- 单元点最短路的方法,时间复杂度
- 如何实现关键字输入提示,使用字典树,复杂度多少,有没有其他方案,答哈希,如果是中文呢,分词后建立字典树?
- hashmap的实现讲一下吧,讲的很详细了。讲一下红黑树的结构,查询性能等。
- Java中的垃圾回收讲一下,讲了分代,gc算法,gc root可达性分析等
- 死锁是怎么产生的
- 线程和进程的区别
- 进程的通信方式
- CPU的执行方式
- 代码中遇到进程阻塞,进程僵死,内存泄漏等情况怎么排查。通过ps查询状态,分析dump文件等方式排查。
- Linux了解么,查看进程状态ps,查看cpu状态 top。查看占用端口的进程号netstat grep
- 讲一下Tomcat的基本架构和组件,以及请求的整个流程。说了一下connector和container架构和servlet请求过程。
二面:(约30分钟)
- 快排的时间复杂度,冒泡时间复杂度,快排是否稳定,快排的过程
- 100w个数,怎么找到前1000个最大的,堆排序,怎么构造,怎么调整,时间复杂度。
- 先说了一下dfs递归实现。面试官说要优化。说了一下用迪杰斯特拉的思路,说可以。
- 四辆小车,每辆车加满油可以走一公里,问怎么能让一辆小车走最远。说了好几种方案,面试官引导我优化了一下,但是还是不满意,最后他说跳过。
- hashmap的实现,hashtable,concurrenthashmap实现。
- MySQL的索引,B+树性质。
- Linux的cpu 100怎么排查,top jstack,日志,gui工具
- Redis内存数据库的内存指的是共享内存么
- Redis的持久化方式
- 秒杀系统的架构设计
三面:(约30分钟)
- 十亿个数的集合和10w个数的集合,如何求它们的交集。集合的数字不重复。
- 十亿和数找到前100个最大的,堆排序,怎么实现,怎么调整。
- TCP和UDP的区别,具体使用场景呢。
- TCP四次挥手讲一下过程,最后一次ack如果客户端没收到怎么办。
- 对于socket编程,accept方法是干什么的,在三次握手中属于第几次,可以猜一下,为什么这么觉得。
- 对于单例模式,有什么使用场景了,讲了全局id生成器,他问我分布式id生成器怎么实现,说了zk,问我zk了解原理不,讲了zab,然后就没问啦。
- 除了单例模式,知道适配器模式怎么实现么,有什么用
- 回到网络,刚才你说到直播场景,知道直播的架构怎么设计么,要点是什么,说了几个不太对,他说要避免广播风暴,答不会。
- 问了一下最近看什么书,什么时候开始写博客的
- 问了还有几轮面试,他说这轮我可以过,有点小惊喜
HR面
- 自我介绍
- 实习收获
- 之前实习公司的情况,拿到offer了吗,会如何选择呢
- 排一下公司,部门,薪资和城市等因素。
- 你的优缺点,如何改进
- 学生时代最成功的事
- 你的预期薪资
最后基本上大部分公司问的技术点也换汤不换药,所以刷题肯定还是有帮助的,所以自己搜集还有加上自己的理解整理了一个pdf,涵盖了不同的技术点。
收集整理了各方面的,下面的图片截取了部分,有如果有需要的自取
各大公司面试题集合:
简历模板: