————————–6月2号更—————————–
现在才被面试,都是因为自己zz。。四月份网申的时候写的远程面试,忘了改面试地点,于是成功GG错过面试。谁知五月份的时候超凡学长突然告诉我鹅厂有实习生补招,要了我最新的简历。本来觉得没什么希望,结果前几天突然收到了面试电话。截止现在前两面都过了,来趁热写一写面试总结。
一面
一面其实略GG,很多会的东西都回答得不是很好。面试时长大概20min。面试官上来让自我介绍,于是把自己简历上的东西大概都说了一下。
这一面问的主要是项目,我大概介绍了一下自己的网盘项目和http下载客户端,面试官针对我的项目提了几个问题。有一些问题以前从来没有想过,于是便现场给出了回答。其中有一个问题:如何在不加锁的情况下实现多线程安全访问一个数据结构?当时没有答上来,后来想了想,应该使用观察者模式,一个线程负责修改,剩下的线程读取就行了。优先级用读优先或者写优先。因为项目用到了mmap接口,面试官就问了我为什么mmap读写文件比较快,我就回答了内存映射。由mmap引申到了共享内存,问我有没有用过,我说用共享内存写过cache。同样被很仔细地问了如何找到内存,如何设计cache。被问到如何查看共享内存,结果忘了那个命令是什么。。其实就是ipcs查看和ipcrm删除,然后就各种尴尬,回答用过但是想不起来是什么了。还好面试官没有继续问下去orz。
问完项目,面试官还问了一道大数据处理题:如何从一个巨大的文件中找出前500大的数。这个答得不是很好。
接下来,面试官看我简历上写熟悉C++,便问我有没有用过标准库,知不知道底层实现。于是我便将map,set的实现以及vector的动态内存分配回答了一下。
还有一道判断两个链表有没有交点的题。给出的答案是把链表头尾相连,转化成判断是否有环。面试官表示太麻烦,问有没有更好的思路。其实答案很简单,直接判断最后一个结点是否相同就行了。当时太紧张,面试官提示了一下,仍然没想到这个答案orz。
最后,又问了我家是哪里的,为什么想来深圳。又问了面试官对我的建议,以及他是哪个部门的。一面就这么愉快地结束啦。
一面完后二十分钟,超凡学长帮我查了查,说我过了。能过真的是奇迹。。因为觉得这一面答得不怎么好