面试时间:2017年4月
首先说下自己的情况,本人是国内211学校计算机专业大三学生,马上就要进入大四准备校园招聘了。无实习经历,因此找学长内推了蘑菇街的暑期实习生。学业成绩一般,无项目经历,无竞赛经历,平时会经常在LintCode上刷一些算法和数据结构的题。很幸运,最终顺利通过面试,拿到了蘑菇街暑期实习的offer。
以前都是围观大牛的面经,第一次自己动手写还有些小激动呢。我尽量回忆自己的完整面试过程,还是少废话,多干货啦。
面试感受先写在前面,后面会附上主要的面试题目。三轮面试下来,我感觉题目难度并不是很大,可能我运气真的很不错,面试官们简直是可以用和蔼友善来形容。他们的花名也很有意思的!蘑菇街还是比较重视个人技术基础的,算法和数据结构也问得很多。所以说,心态和准备真的重要。可以从多刷算法题来准备。我就一 直在刷LintCode (http://www.lintcode.com/)上的题目,题目很全的。中间也接触过别的刷题网站,但是比较下来还是觉得这个比较实用,从简单到复杂,我完全可以控制自己的学习进度。
一面 专业初面
在进行自我介绍之后,进入的是很常规的算法面试流程。前半部分面试官问了我一些基础的算法和数据结构知识。包括:
(1)链表的删除、插入、反向。
(2)Hash表的hash函数,冲突解决方法有哪些。
(3)动态规划的原理。
(4)数据处理过程
后半部分的话是手写代码,面试的时候碰到自己刷过的原题真的是一种惊喜。
(1)写一个程序来找第 **n** 个超级丑数。
题目:http://www.lintcode.com/zh-cn/problem/super-ugly-number/
参考答案:http://www.jiuzhang.com/solution/super-ugly-number/
这是LintCode上一道中等难度的题,但是在面试比较紧张的状态下想要顺利写出来还是有点难度的,但是因为之前已经遇到过,所以十分顺畅的写出来的。连面试官都有些惊讶,可能这个时候就给面试官留下了基础过硬的好印象哈哈。
(2)房屋染色
题目:http://www.lintcode.com/zh-cn/problem/paint-house/
参考答案:http://www.jiuzhang.com/solution/paint-house/
关于写代码的问题,我还想提醒一下一定要注意代码的规范性。
二面 专业复面
第二轮问了一些机器学习算法的一些知识。
(1)boost和bagging的区别
(2)朴素贝叶斯,决策树的主要原理。
(3)神经网络的相关知识
(4)因为我的简历上没有实习经历,最后面试官就问了问我有没有自己动手写过什么小项目或者说解决一些问题。我就挑了两个自己在学习过程中我觉得比较有意思的几个实践项目。
如果说第一面是对基础知识的考察的话,第二面应该是对应用能力的考察。所以说,还是要多理解,多动手练习呀。
三面 HR面
HR是个小姐姐,人很贴心。跟我聊了聊工作氛围,问了一些我在学校的经历,整个过程应该说还是比较愉快的。最后小姐姐说让我回去等通知就好。
最后的最后还是提醒各位宝宝一定要准备充分,多刷 lintcode。另外,有时间一定要提前积累项目经验,别像我一样,实属侥幸。