面头条的时候已经是十月底了。大半个月没有面试,之前准备的知识点比如http状态码之类的记忆性的东西,早就忘光了。
二面的时候问了一堆状态码,全都不记得了。面试官态度很好,跟我说,你现在不记得了,说明你这些知识只是为了面试临时抱佛脚,并没有深入理解,所以时间一长就忘了。确实是这样。
总的来说,头条的面试比较注重算法能力,两面都手写了算法,算法不算特别难,但是真正实现好,还是会有很多细节要考虑到,而且要写的代码都比较长。头条也比较喜欢出场景题,感觉面试官也没有标准答案,主要看你的回答和思路。
临时抱佛脚背的知识会忘掉,但刷题后的代码能力解题能力却是内功,可以说一劳永逸的,所以多刷题很重要,面试的时候代码写的好或许可以弥补有些问题没答上来。
一面
1、自我介绍
2、数据库优化有什么思路?你了解的只有分库分表和索引?
3、索引的原理?如何减少回表操作?
4、联合索引,如果联合索引(a,b),现在查询a>0,b>0可以用到这个联合索引么?(太久没看,生疏了,答错了,答案应该是不能,只能用到a的索引,范围索引只能用到一列)
5、数据库执行计划你会关注哪些字段?
6、Java虚拟机了解么?使用中有什么注意事项?说下jit?codecache了解吗?
7、手写一个单例模式和观察者模式
8、写一个算法吧,一个二维数组,每一行从左到右递增,每一列从上到下递增,给一个数,判断他是否在在二维数组中,在返回下标,不在返回(-1,-1),要做到最优
9、了解nio么?讲一下nio的理解。
10、Linux命令了解么?查看网络状态的命令,查看内存占用的命令。Awk命令。
11、CLOSE_WAIT状态过多有哪些情况造成?怎么排查?
二面
1、自我介绍
2、http协议的chunk知道么?是干什么的?
3、http的状态码了解么?说一下
4、301和302的区别?502和503的区别?(这么久没面,早忘了,然后被面试官教育了一番,说没有真正掌握这些知识)
5、Redis的数据结构的底层实现?说下zipList结构及其优缺点?
6、Mysql集群数据是怎么同步的
7、手撕算法:一个链表,奇数位置递增,偶数位置递减,给链表排序。要求O(n)的时间复杂度
8、Select,poll,epoll的区别,说下epoll原理?epoll为什么要用红黑树?epoll 为什么要有 EPOLLET 触发模式?
9、场景题,设计一个高并发的系统。
三面
1、自我介绍
2、服务器处理接受一个请求的过程?
3、数据库的索引的原理?Innodb都是聚簇索引么?
4、设计一个文件分发系统,分发到10000台服务器,做到高效可靠,如何保证高效?如何保证可靠?
5、有什么offer?你的优点缺点?你觉得你在同龄中处于什么水平?
“面经哥”已累计3000+条真实面试经验,期待你的加入~