腾讯后台一面挂掉——菜鸟的一次惨痛面试经验

本来感觉面试发挥一般,后来仔细想想发挥简直屎到爆!

自我介绍

唯一吸引面试官注意的部分是说自己有个人博客,但面试官看了博客后也没有什么反应,说明博客并不突出,不是加分项。

个人介绍中没有突出自己技术优势,过于注重于一些无关的经历了,面试官兴趣不大!

项目部分

项目中遇到的难点?

重新设计 E-R 模型 —— 问了数据库一个简单的查询例子(找出姓张的用户,like 查询,挂掉),还有 DB 的第二范式、第三范式,挂掉。

有一些小问题,比如添加翻译文件,编译不成功,不断去 Google 的痛苦过程(给人感觉错误太low,无脑Google类型)。

项目有什么改进的地方?

说是添加一个缓存机制,加快访问速度。但又不知道有什么缓存解决方案,只是想法,没有价值。(中规中矩,没有价值的思考)

算法部分

100 亿个数字中找出最大的 1000 个,提醒数据非常多,放不进内存。(算是比较老的一个题目)

简单思考了一下,考虑用 BitMap,可以将数据放进内存。面试官提示,里面数字可能非常大,BitMap 会很稀疏,仍然放不进内存。然后又提示用哪种数据结构,可以实现每次插入一个数字,取出最大的。想到用堆,接着被问到用什么堆实现,我说用最大堆,然后面试官让我再仔细想想。(面试官不是很满意)

用小顶堆,首先读入前1000个数字,调整好堆。然后每次读入一个数,和堆顶比较,如果堆顶大,那么丢弃该数字,否则,弹出堆顶,将新的数入堆,调整堆结构。

最喜欢哪一个排序算法,为什么?算法实现的时间复杂度?

回答说是快排,然后时间复杂度平均 O(nlogn),最差O(n2 )。实现的话就是一个 partition 和递归快速排序。

C++ 语言部分

你觉得 C++ 语言怎么样?

没有系统的回答,只是浅显地说了自己的感觉,面试官没有继续交流下去。

你最喜欢 C++ 哪部分?

说是指针,然后简单说了下指针的好处,同时又说自己怕使用指针,怕内存泄漏。面试官笑而不语!

C++ 如果要改进,有什么改进地方?

回答增加内存自动回收机制,感觉回答太过浅显,不够深入。接着面试官问了解过C++ 11中的智能指针(实现了智能内存回收)了没?回答没有,然后就问对 C++ 11标准了解多少,回答了解的不多,就用过简单的类似 auto类型推导关键字。面试官即兴问了一下,auto 的实现是在编译期还是运行期,思考了一下猜测说是运行期(挂掉)。面试官耐心地给我说运行期间内存里面全部只是地址值,没法判断类型的,编译期就会明确对象的类型。

C++ STL 了解多少?

看过部分源码,知道容器的实现。然后要我介绍一个最熟悉的容器,我选了 vector,但是介绍的有点乱(面试官估计也没怎么听)。问到为什么地址是以 2 倍增加,而不是 1.5 倍增加,或者 3 倍增减,我回答2倍便于操作,因为可以用移位实现 * 2(其实不是很对,面试官没有点评)。

这部分问我看了 STL 的哪部分源码,自己回答地太缺乏自信了,没有加分,反而给人不自信的感觉!

如果程序中遇到错误,一般怎么做?

回答说遇见错误就 Google 和在 cplusplus.com 上查看函数说明,后来又补充说逻辑错误一般慢慢改逻辑,其它函数错误就可以在 cplusplus.com 上面看函数使用。(挂掉挂掉挂掉) 回答前完全没有搞清楚面试官想问的是什么,后来想想应该问的是如何调试程序啊,至少可以扯 GDB 之类的调试方法!

网络部分

TCP、UDP 区别?

TCP 面相连接、可靠的字节流服务,UDP 无连接,不可靠;TCP 有拥塞控制、流量控制机制,UDP 没有,TCP 必须校验,UDP 可选。然后又问如何保证可靠,回答通过Seq和 Ack 来确认是否丢包,丢包的话重传。

TCP 三次握手,流量控制,拥塞控制?

三次握手画了一个图,看了没问题,然后问到流量控制,拥塞控制,说了一下大致的目的以及原理(这一块自己搞的很清楚,但面试时只是浅尝辄止,没有说详细),面试官也没有什么问题。

Socket 编程搞过吗?

以前搞过,忘的差不多了。然后就问 socket 写一个服务器的简单流程,回答首先创建 socket 套接字,然后 listen ,面试官提醒有没有少了什么,一时没有想起来,最后提醒 bind。(跪掉)接着自己又少掉了 accept(跪掉),后面说 read 和 write,面试官根本就不感兴趣,这一块能力已经被否定了!(跪掉)

select,epoll 区别?

回答自己没有用过,不过了解过一点点,然后就简单说了 select 基于轮训,epoll 基于回调机制。面试官不满意!

经验教训

  1. 自己真的很菜,基础不牢固,犯了很多致命错误,能过面试才怪呢!
  2. 回答的时候没有想清楚面试官到底要问什么,过于急地给出一个欠思考的答案!
  3. 整个面试中没有给出一个让面试官感到耳目一新,眼前一亮的答案。也就是说,没有自己的核心竞争力!
  4. 项目部分准备不充分,面试官问了几个简单的 DB 问题,都没有得到满意的答案。
  5. 个人介绍部分没有突出自己的特点,面试官兴趣不大!
  6. 面试官不断换问题,就说明自己危险了,很可能是觉得你上面的回答很差,想换个领域看看你还有没有救!所以,不断听到ok,下一个问题,那么很可能会挂掉。
  7. 面试挂了也没什么,能认清自己就好,找到薄弱点,思考对策,争取校招时不再犯同样的错误!
全部评论
是的 你总结的很好 尤其是 “回答的时候没有想清楚面试官到底要问什么,过于急地给出一个欠思考的答案!” 其实说到底就是想着自己发挥,没有考虑对方需求,这也是我这次的问题所在。
点赞 回复 分享
发布于 2016-04-11 12:26
事后感觉没发挥好的事情:面试
点赞 回复 分享
发布于 2016-04-11 12:59
菜不可怕,可怕的是不敢直面。继续准备,加油
2 回复 分享
发布于 2016-04-11 15:03
确实面试官问的问题不难,楼主继续加油吧^_^
点赞 回复 分享
发布于 2016-04-11 12:21
楼主心态很棒,共勉,加油!!!
点赞 回复 分享
发布于 2016-04-11 14:42
楼主硕士吗?
点赞 回复 分享
发布于 2016-04-11 12:56
结合其他 两个面经,我猜楼主是小本
点赞 回复 分享
发布于 2016-04-11 12:59
能过笔试已经很了不起了
点赞 回复 分享
发布于 2016-04-11 13:58
我也是,每次卡住了,面试官就说我问你另一个问题吧,然后就挂了,还是太渣,自己项目都好多不明白,或者做的不好
点赞 回复 分享
发布于 2016-04-11 14:10
感觉楼主遇到的问题和我好像。。 不会是同一个面试官吧,哈。
点赞 回复 分享
发布于 2016-04-11 14:11
我擦,活抓赵老师
点赞 回复 分享
发布于 2016-04-11 14:15
活捉赵老师
点赞 回复 分享
发布于 2016-04-11 15:57
继续加油~总结很好,感谢分享
点赞 回复 分享
发布于 2016-04-11 16:07
楼主是第一次现场面吗?感觉有点紧张
点赞 回复 分享
发布于 2016-04-11 17:17
请问怎么知道自己面试挂了没有哇?
点赞 回复 分享
发布于 2018-03-23 01:07

相关推荐

不愿透露姓名的神秘牛友
昨天 20:55
阿里国际 Java工程师 2.7k*16.0
摆河:一个月一两千吗
点赞 评论 收藏
分享
研J小政:刚打了个电话给你😁😁😁
点赞 评论 收藏
分享
15 101 评论
分享
牛客网
牛客企业服务