头条后端开发面经分享(面经重发)
头条后端开发面经分享
因为每个人的理解不太一样,所以我在这里就不给出所谓的答案了,大家可以根据自己的理解加以描述,我只在一些地方做出一些提示。有的问题已经忘了,大概也就这些了。
一面:
进程和线程以及它们之间的区别(我通过对比多个面经,发现这道是必考题,划重点)
进程间的通信方式和对应的同步方式,你用过吗?具体怎么用?
TCP和UDP的区别
三次握手、四次挥手,为什么?
TCP如何保证传输的可靠性?
TCP的拥塞控制,具体过程是怎么样的?UDP有拥塞控制吗?如何解决?
算法题:
一个链表,假设第一个节点我们定为下标为1,第二个为2,那么下标为奇数的结点是升序排序,偶数的结点是降序排序,如何让整个链表有序?(分离链表,合并两个有序链表)
假设我们有一个队列,可能存放几千万上亿的数据,我们应该如何设计这个队列?写出来看看?(提问:这个队列是只需要在头尾添加和删除吗?双向队列?答:是的)
一个二维矩阵,从左到右是升序,从上到下是降序,找一个数是否存在于矩阵中(类似于二叉查找树)
二面:
前面面试官已经问了你三道算法了,那我就随便问一道吧:翻转链表(面试官:能不能用c写)....(然后让我一边写一边跟他讲redis)
redis:
你知道redis有哪几种数据类型吗?你比较熟悉哪几种?为什么?
讲讲redis里面的哈希表吧
一个URL从浏览器输入到响应页面,整个过程是怎么样的,能讲得多详细就讲多详细。
你说HTTP可以进行多路复用,具体是怎么复用?如果服务器挂掉或者客户端挂掉,会怎么样?
HTTP的各种头你了解吗?每种头具体是什么作用?说一下
你说arp会进行广播,会造成网络风暴,那应该怎么解决?
你知道CDN吗?说一下
BIO NIO AIO说一下?epoll了解吗?用过吗?具体调用OS什么方法?webSocket呢?
创建进程调用的是OS哪些方法?具体说说
我们聊聊JAVA吧,你了解JVM吗?给我讲讲
JVM具体会在什么时候进行垃圾回收?JMM具体说说?
垃圾回收算法具体说说?各种垃圾回收器了解吗?什么时候执行STOP THE WORLD?
三面:
感觉应该是总监,很高冷。
说说项目?(没啥兴趣)
我们聊聊JAVA吧,现在我要求设计一个容器,容器满的时候生产者阻塞,容器空的时候消费者阻塞(我跟他讲了一下BlockingQueue和Condition,然后用Condition来写)
二叉树的最大路径。
好吧,今天就到这里了(哈???)
三面面完一度觉得自己凉透了,过两天收到offer call,然后就收到offer了。白菜价,很高兴了。
总的来说,个人感觉头条面试算法题不难(应该是给我放水了,谢谢面试官),不过绝对不能做不出来。基础一定要牢固,一些细节问题一定要搞清楚,一般还会问一些设计问题,这种问题就要靠灵机一动了(其实主要还是看对各种原理的理解,例如说那道队列的问题)。噢,对了,还有一件事,一面是要求自己写测试用例运行的,所以coding一定要快准狠。
#Java工程师##面经##秋招#