头条面试回忆录
废话
一面
当天上午投的简历,下午让我第二天面试,时间很紧,很多东西都没来得及准备….
1.自我介绍一下(balabalabala)
2.学过操作系统和计算机网络吗?(网络学了,操作系统下学期开,其实我很想说操作系统自学了,您可以问……)
3.说一下tcp和udp的区别(balabalabala)
- 2.1那个快?为什么?(udp快,因为三次握手四次挥手会占用cpu时间?)
- 2.2去掉三次握手四次挥手那个快?(不知道)
4.写两个题吧
- 3.1 给你一个数字矩阵,每行每列都是增序,问你某个值是否存在(剑指offer原题,我100%做过,但是我忘了怎么做的,只知道从角上枚举,然后先说了一下从右下角枚举,说不对,然后换成右上角,没啥问题….)
- 3.2 给一个矩阵,四联通,找到一个最长上升子序列(简单dp,写完就过了)
- 3.2.1 能把路径输出一下吗?(记录前驱….)
- 3.2.2 能把前驱数组去掉吗?(可以,瞎搞一下就行了…..)
4.闲聊(emmmmm)
二面
二面感觉更严格,感觉答的不好…..
1.自我介绍(balabalabala)
2.有什么数据结构可以做到查询和插入都是o(1)的?(第一反映,显然不可能啊,这不是不可调和的矛盾吗?面试官说:知道hash吗?哇,感觉被鄙视了,确实傻了)
3.给你n个有序链表(从大到小),怎么找到这n个链表的前K大,(先取出每个链表的最大,然后建最大堆,然后每次取出堆顶,然后取出对应链表的后续元素,加入堆,然后一次操作,直到有k个元素)
- 3.1 复杂度多少?(o(n+klogn))
- 3.2 n是怎么来的?(建堆时间)
- 3.3 能证明一下吗?(假设堆是用类树状数组的结构维护,先把数据随机放进来,然后每次从大到小枚举一个下标ind,比较当前位置ind和(ind>>1),然后根据大小关系交换一下,可以证明每次都是两个数比较,并且最多有n次比较,所以o(n))
4.写两个题吧
- 2.1 给你一个字典,给你一个询问串,问你能否用字典中的某些单词(每个单词只能用一次),构成询问串.(想复杂了,一直在想怎么优化,后来才知道直接暴力就行,我当时还傻乎乎的用了lower_bound企图缩小范围,结果返回结果还死活不对,搞了30分钟才搞定,感觉要凉)
- 2.2 可能是看我太菜,没问第二道题,感觉好像对我不感兴趣就溜了???
三面
不知道自己怎么活过二面的…….
1.聊天,纯聊天,可能是怕我太紧张,感觉面试官很好
2.提出自我介绍被拒绝…….
3.简单说一下项目,(也不用详细说,因为项目就是很简单……)
4.有啥很厉害的技术要说明的吗?(没有……)
5.我们写两个题吧
- 5.1 给你一个无根树,让你转化成有根树,使得树的深度最小(一眼直径的中点,写了一下,好像有点问题,我问他我是调一下还是?他说不用调了,想法没啥大问题)
- 5.2 初始位置0,速度1,两个操作
- 1.position+=spead,spead*=2
- 2.spead>0,spead = -1;else spead = 1
- 问你最少操作几次,使得,从0到x
- 我第一想法二进制拆分,然后瞎搞,写了一下,没啥大问题
- 复杂度?(32^2?)
- 怎么证明,我说每次考虑最高位的1,然后瞎搞一下balabalabala
- 说正解是dp,比我复杂,emmmmm……..
6.浏览器输入baidu.com会发生啥?(balabalabala,昨天看过,不知道说的对不对)
7.你有啥觉得自己的技术亮点要说吗?(感觉瞎bb都能加分,但是我怂,老老实实说自己没啥技能点……)
8.你想过一些大的厂商,背后的技术部门都是怎么运行的吗?(不知道……..)
9.面试官可能觉得没啥聊的了,就放我走了……
总结
总的来说,面试官还是很和蔼的,有些问题还会引导你向正确的方向思考,问题都不难,好好准备应该好过,就这样吧…….