讲道理,同一家公司,这已经是面试我的第六个人了……除去大方向的那次面试,我已经面了五轮技术面了(虽然今天的这个面试官好像不知道我之前已经面试过的事情)……不过今天还是通过面试学到了不是,应该总结一下。

今天面试的时间还是挺久的,就一个面试官直接问了我50分钟的问题,涉及的知识面也非常的广,最后感觉自己被掏空了一样(

首先是cpp的问题,问左值引用,右值以及右值引用的区别;vector存unique_ptr的问题;还有一些涉及到stl内部的一些讨论。

接着就是计算机系统基础的问题,进程线程的区别;mmap;进程间通信问题;线程间通信问题;同步等的一些操作。大的方面就这些,然后每一个都有细致地去问不少问题,并且还有一些场景分析,多线程编程的问题还是问了不少的。

然后就是算法的问题,这个还是很简单的,一道全排列的问题,一道堆排序的问题,直接口胡代码加corner case分析就解决了。

最后就是网络编程相关,这个因为了解到我相关经验也不太多吧,就问了我如何实现一个tcp server,就是整体socket是一个怎样的流程。因为我忘了具体的函数了,所以也是口胡了大致的过程,整体好像还是达到了面试官想要的情况的。

讲真的今天面试还是暴露了很多自己的问题的,挺多api的调用都忘了,只能根据自己的理解去说,大概也是最近写的不多的缘故吧。而且发现不管是c++11/14/17,多线程编程还是网络编程,都有很多需要再细致去学习,去做,去实践的地方。

结束之后问了一下面试官给我的评价,说作为一个本科大三的同学还是挺不错的,不过还得多看看书。唉~虽然不知道结果怎么样,但听到这个评价还是有些失望,感觉意思就是我还是没办法和研究生同台竞争啊,实力终究还是不够吗。还是得再努力才行啊……

=============================================分割线=============================================

6.25更新:

其实仔细想想也还是很有道理的,公司可能更想要找相关技术经验丰富的工程师,而不是你知道怎么实现,具体要用的时候还需要临时去查的学生。潜力再大也抵不住当前现实利益需求的趋势。想来可能有些本科生和研究生的差距这也是一部分吧,多了两年的时间的确是可以在某种程度上丰富对一些知识的了解。所以如果真的要更有竞争力的话,公司岗位相关的代码还是要多写写。工程师嘛,对你工具的熟悉程度还是很重要的。最近也觉得基础扎实,涉猎广泛可能并不是很多公司需要的,更多的需要的是对某一个领域有深入的理解精通的人。所以找准某个领域深入研究是很重要的。