博主坐标哈尔滨,哈尔滨工程大学本硕。4月9号收到的面试通知。地点在正明锦江大酒店12层,4月11日9:40一面。

一面:

      产品岗、技术岗都是同一天在一栋大楼面试。扫码签到后看着等候大厅里坐在周围穿西装的童鞋们互相攀谈,我实在是没有这个心情。并且我大神室友告诉我,不洗头来面试技术有大神的感觉。恩,没毛病,我还是在这眯着想想项目吧= =。

      见到面试官后,我主动提出要自我介绍,被他拒绝了……,我投的是TEG群,后台开发方向,但简历上写的包括了自然语言处理、机器学习和后台开发,针对这一点,面试官就与我展开了激烈的讨论。


“你这个简历,挺万能啊,把后台开发放最后,是不是实在不行再面试这个啊”

“不不不、三个都是并列的,本科做的后台开发比较多,研究生才逐步接触机器学习、深度学习,现在实习阶段还没有太确定,这几个意向职位都是并列的”

“你这后台项目都是Java的,C++也没开发,怎么还面试C++后台开发”

“我比较热爱算法,写的编程题也不少,大多都是C++的,对C++的特性也比较了解”

“热爱算法,你这也没写ACM啊”

“本科期间没怎么弄过,研究生阶段弄算法比较多,ccf-csp考过全国50名左右,ccf-ccsp拿过国赛铜奖,都是个人赛,leetcode周赛累计排名700左右……”

“哦,那行吧”感觉我说的这些比赛他也不了解,看了简历对我的项目也并不感兴趣,就开始问我技术问题:


1、代码在内存中的分布都有哪些区,宏定义存在刚才你说的哪个区域?堆栈有什么区别啊,堆中的数据会回收吗,malloc和new有什么区别?

2、说一下虚函数表是什么(C++后台开发必问),为什么析构函数都是虚函数,不这样会怎么样?

3、多态和重载都是什么?

4、知不知道现在C++现在发行到那个版本了?C++11有哪些新特性?

5、算法题问了三个,100万数据找top k,判断一个数是不是2的幂,两个单链表有公共节点,找出第一个。

6、TCP三次握手、四次挥手、超时重传。

7、Linux现在发行到哪个版本了?你一般用Centos还是Ubuntu啊,为什么?

8、Linux下查看内存使用命令是什么?查看负载的命令是什么?

9、SVM怎么分类的,有哪些核函数,如何优化SVM?

10、word2vec怎么实现的?

11、你有什么想问的?


      整个面试过程大概30多分钟,对面的屋子是一个实验室的同学,面了一个半小时,不过这应该只是面试官风格的问题。C++问的东西有些细节没答出来,面试官说感觉你这像背的啊再见,心态都有些崩了,还真让你说中了。

      算法题回答的还不错,top k用了4种方法寻找,同时计算了每种方法的时间复杂度。判断2的幂也用了四种(不断模2;列出了所有2的幂指数后二分搜索;减一与本身取&;统计二进制中1的个数)。两个链表公共节点用的计算长度后遍历对比,不详细说了,其实还想到另一种首尾相连找链表环头结点的方法,当时还没说面试官就打断我说这道题okay了。树、图、贪心、dp等都没问,有点扎心。

      之后的问题回答上一半左右吧,面试官虽然不是搞机器学习的,但也了解一些,看出来我这方面不行了。最后我问面试官我找机器学习的岗位还需要怎么努力,他说,今年秋招是不赶趟了……很中肯。后台他说你这还不错,算法能力也挺强,实习的时候多用心吧,感觉进二面还是很有戏的。道谢之后就走了。