本人大三软件工程专业,从上个月开始刷书准备面试,这是这么久以来第一次面试,有点小紧张小兴奋。昨天就从深圳过来广州,住在同学宿舍,昨晚探了路踩踩点。早上9点45分到广州希尔顿酒店,在4楼签到后等到10点28分收到短信,通知说去6009号面试官处面试,看到短信后以为是在6楼,屁颠屁颠跑过去,结果6楼是健身房。。。跑回4楼问了工作人员,原来6009是在4楼。。。过去之后被面试官问为什么那么久才到,尴尬。。。
下面记录的是我面试时回答的情况,如果有错误的话,麻烦大家指出,谢谢。
一面
简历双手递给面试官后,正式开始面试:
1. 自我介绍
blabla介绍完
2. 对什么比较熟?
C++
3. 主要用C++做什么?
主要是拿C++做算法,打ACM。
4. C++中static、const的作用?知道多少说多少
当时答的大概是const可以拿来声明常量对象,常量指针,声明常量函数,函数传参可以用const再传引用,避免拷贝时候的浪费。static可以声明静态变量,可以在类里面声明静态成员变量,静态成员函数,static声明的对象只能在本文件中使用。暂时就记得这么多。
5. 介绍一下堆排序
我问能不能在纸上写个例子来描述,面试官说可以,然后就开始blabla演示堆排序。
6. C++的三个特征
多态,封装,继承(差点想不起来继承=_=||)
7. 多态怎么实现的?
通过虚函数和继承实现的
8. 什么是编译时多态,运行时多态?
编译时多态主要是模板函数中参数是类,在调用函数时通过传入的对象类型实现多态,这是在编译时确定的。运行时多态是使用基类对象或指针引用或指向派生类对象,通过对这个基类对象调用函数实现的,这是在运行时确定的。
9. STL里的list和vector用过吗?是怎么实现的?
(我拿笔在纸上边画边说,说得顺畅了一点)vector内部是一片连续的空间,有三个指针,一个指向数据段头,一个指向数据段尾,还有一个指向可用空间的尾部。然后vector插入时候是怎么插入的,如果是插入一个数据时空间不够,则会开辟一块两倍的空间,再拷贝数据,释放原空间。(详见《STL源码剖析》)list的话内部空间不是连续的,通过指针来实现的。(忘了说STL里的list是双向链表了。。。)
10. 如果让你实现一个list,你会怎么做?
在纸上写了一个结构体,然后讲。这里嘴贱说,如果让我实现,我会增加一个不存数据的头结点,这样写代码方便一点,然后就被问这样在查找的时候是不是会多算了一次。。立马补救说会在头结点里保存当前链表的长度,不过这就跟STL的list不一样。list考虑到链表断开、整合的问题,获取链表长度的函数size()的实现是遍历一遍链表。(佩服我的机智)
11. set和map是怎么实现的?
红黑树
12. 那给我介绍一下红黑树(面试官突然笑了,我也吓到了)
把红黑树的概念讲了一遍就没了,没问我红黑树的插入、删除。
13. 在纸上写了两个字符串,让我在长字符串里找到短字符串
这里犯了个错,一开始就直接说kmp算法(结果自己忘了kmp怎么做了=_=||),然后改口说,如果数据较小的话,可以暴力匹配,然后就让我写一下暴力的代码,并讲一下。这里给大家提个醒,就算自己知道高效的算法,也最好从最差的开始讲,有个递进过程,这样逻辑比较清晰,会比较好。
14. 有什么职业规划?
blabla
15. 在学校里的朋友们是怎么评价你的?
blabla
16. 喜欢什么样的工作环境?比较喜欢在什么环境下写代码?
肯定是喜欢在安静的环境下写代码,工作环境只要不是干杂活就行(给自己挖了坑),然后就被问我认为怎么样算是干杂活?然后我很挫地说。。。交发票跑腿之类的,不涉及到编程,面试官笑了,我也尴尬地笑了。。。
17. 最近看了什么书?
最近重点看了《C++ primer》、《STL 源码剖析》,粗略看了《计算机网络:自顶向下方法》、《操作系统》、《Unix 高级环境编程》
18. 有没有什么要问的?
首先问了面试官的部门,面试官介绍了一下,是广告部门C++开发的。然后问能不能给我一些学习上的建议,面试官建议我多看那本《Unix 高级环境编程》。最后问,假如我能够通过初试,复试会在什么时候呢?(因为我是从深圳过来广州面试的),面试官说会很快的,在今天或者明天。
最后结束,跟面试官道谢,离开。
京东效率是真的高,在到同学宿舍的路上,11点50分就收到短信和邮件说下午二面,很棒。
二面
刚过去等候室扫码签到,结果发现签到按钮按不了(估计是签到系统设置的时候没考虑到一天面试两轮的情况),去问等候室门口的小哥哥,他直接就联系二面面试官,然后让我直接过去,也不用等待。过去之后发现上午一面的面试官就坐在二面面试官前面的那张桌子旁边,一面面试官也认出我,感觉他们应该交流过了。向一面面试官微笑点头后,开始我的二面之旅。
二面直接就开始了,也没有自我介绍,主要是问项目相关的。因为我之前做了个Online Judge系统,把源码放Github上并把源码和网站链接附到简历上,二面面试官一开始面试就跟我说他在看我的代码。主要就是针对项目问了一些问题,然后说项目是动手能力的体现,问我有没有去学算法。我当时回答说打的比赛都是算法比赛,所以肯定有学算法的。已经准备好开始手撕代码了,结果面试官没继续问算法了。问了我对京东的认识,跟我介绍了他们部门。还问我面试了这么多家公司,比较喜欢哪家,当时尴尬地说这是我第一次参加面试。。。最后我问面试官,如果二面通过的话,HR面还需不需要再过来广州,面试官跟我说不需要,直接在深圳面就行,还说深大过去京东也挺近的,就几个地铁站,听到这句话顿时感觉有点稳了。向面试官道谢后就离开了。总共10分钟左右吧。
小插曲,几乎每次到广州都是这个状态:出发时晴天大太阳,到达时转阴天,一觉睡醒发现下大雨,离开之后又晴天,真的迷。。。二面当天面试完也是下大雨,面试的时候感觉挺稳的,但是状态一直都是“复试中”,加上那天气,有种不祥的预感,就很慌,14号初试复试结束,15号晚上11点多更新状态为“HR未安排”。(面试期间工作人员要加班到这么晚,也是很累的)
HR面
状态一直显示未安排,也没有通知,一天刷几次状态也没变化,就佛系了。在18号中午一点多的时候,刚想睡午觉就接到来自广州座机的电话,接通后发现是京东的HR小姐姐打来的面试电话,屁颠屁颠地跑宿舍外开始面试。
主要问题有:(顺序记不清了)
1. 自我介绍
2. 读研还是就业
3. 哪里人?比较倾向在广深两地工作吗?
4. 什么时候能开始实习
5. 职业发展规划
6. 有没有拿到别的offer
7. 如果投递的公司都发offer了,会选哪个
最后让我等待后续通知。
中间我问如果通过的话,会在哪里实习,小姐姐说应该是深圳。
总共面试时间差不多10分钟吧(怎么感觉我的面试时间都好短。。。)
面试完之后,查了一下状态,就变成HR面试已完成,官网上offer发放是4月28~5月10,时间还久,也不觉得有多稳,只能继续做笔试,面其他公司,不然最后0 offer的话就只能凉凉。。。等结果出来了再来更新吧。
结果更新,28号晚上1点半收到了offer邮件,感谢东哥,春招结束。