一共三轮面试,全是技术面,那天约的下午5点面试,在中航广场,我大概4点半左右到的,一直面到晚上11点。头条的面试效率很高,每面完一轮在休息室等一会儿就会有结果,如果没通过的话Hr就会直接说xxx你可以走了,欢迎秋招再来。
第一轮,首先自我介绍,然后问简历上的项目,我简历上就两个项目,一个c++写的httpserver,一个简单的os。面试官主要问的是第一个,基本把项目细节讲清楚就可以,问了几个异步io的问题都还答得可以,线程安全的单例模式。(分享一个小tip,面试的时候每答完一个题可以立刻跟面试官要反馈,问他这题答得怎么样,这样如果这个题你答得还有遗漏面试官一般会提示,如果你不问的话可能面试官就认为你的理解就到这个程度了就直接下一题了...)。然后就开始血崩了,面试官开始问数据库的题,问一个不会一个。。。面试官:这么简单你都不会?我:我简历上也没写会数据库啊。面试官:那好吧,那就问两个算法题吧。然后是两个算法题,都很简单,第一个题是给一个正整数x求x有多少位为1。第二个题是给一个整数数组,求最大连续子序列和。两个很简单的题,应该主要不是考思维能力,是看你能不能把这两个题bug free的写出来。吃晚饭。(头条食堂很赞)
第二轮,第二轮面试官非常nice,首先自我介绍,然后问我比较擅长什么,我说比较擅长算法和汇编,然后她问了两个有一定思考难度的算法题。第一个题已经记不清楚了。是一个找规律的题。第二题是折半枚举+线段树优化。应该说是超过了本科数据结构的范围的,可能跟我说比较擅长算法有点关系(跟acm大佬们没法比)。然后这两个题都是要求在纸上bug free的写出来。然后问了一些计算机网络相关的,没有问汇编,可能面试官自己不太熟悉汇编。TCP流量控制,在浏览器浏览网页都发生了什么,等等,一些基础题漫长地等待。
第三轮,第三轮面试官应该是总监之类的吧,看着就很牛。面试官先给了我一个微笑,然后问你用今日头条不,手机上有不?我很尴尬的说不用,没有。面试官又给了我一个微笑,说那你先介绍一下你自己吧。然后照常自我介绍,介绍学习经历和项目经历。面试官说你还写了个os啊,那我看看源码(我在简历上写了github地址),然后他就打开github看。我说这是很久以前写的了,差不多一年前了,面试官说你是在跟我说一会儿我问你问题你可能会说忘了么?然后问了几个操作系统的问题,对保护模式的理解,进程切换,lseek为什么慢,在dos上有没有多进程?可以怎么实现?(这个题基本考你想象力,,乱扯)。我问面试官您觉得我这些题答得怎么样,他又给了我一个微笑,说不及格。然后开始做一个系统设计的题,实现今日头条的粉丝和关注系统(类似于知乎的粉丝和关注系统)。我说这肯定得存数据库里头可是我不怎么熟悉数据库,面试官数据结构你熟悉不,我说还好,他说那你就自己设计一个数据结构然后存在文件里头吧。然后我就各种稀里糊涂扯,各种链表索引k叉树B+树读写缓存一通乱搞,期间跟面试官保持交流,面试官时不时给我一个微笑。
最后面试官对我给出的方案应该还是比较满意的,虽然我已经记不清楚我到底做了什么。面试官说,你其实已经实现了一个简单的数据库的存储模块了,你觉得一个比较完整的数据库还需要点什么呢?我说还需要提供给别的程序操作我这个数据库数据的一些接口,本质是进程间通信,可以通过balabala实现,请让我想十分钟我跟您详细说。面试官给了我一个微笑说11点多了,今天的面试就到这里吧,你回去好好想想吧。最后,作为那天最后一个走的面试者,打发了一瓶水让回去等消息。(本来都是当天出结果,但是我面的太晚了hr都走光了所以说明天电话通知结果)。第二天收到了面试通过的消息,一周后收到了offer。总结:面试头条算法不刷点题肯定gg,然后基础也别太差,操作系统,计网什么的。
你觉得一个比较完整的数据库还需要点什么呢?
...查看全文