#后端开发##网易##软件开发笔面经#
7-26更新
今早一起来就看到网易发的短信说确认二面时间,感觉有点神奇。
一面真的不知道自己在说什么,这是一面面试官要求太低了,还是我运气好啊,或者说是参加一面的都推到二面了???
算了,既然发了二面,还是准备准备吧。
------------------------------------------------------
TimeLine:
7-5 笔试
7-8 约面试
7-24 一面 7-26 二面通知
7-29 二面
------------------------------------------------------
网易的面试也太难了,而且牛客上网易面经似乎比较少。
问的很底层,常规八股可能就问了三四个,追问的基本一个问题卡好久说不出话来,但是面试官真的很有耐心。
吐槽一下面试官的摄像头,从下往上拍,一直照着他的手,劈里啪啦一直在打字。
一面(60min):
1. 自我介绍
--------C++----------
2. 虚函数知道不?
直接开始吟唱虚函数的组成、存放位置之类的。
3. 构造函数中可以用虚函数吗?
我以为是问构造函数可以是虚函数吗,搞错了问的是能不能调用虚函数。我说虚函数表是放在常量区嘛,所以应该是可以用的,但是不能在有未初始化的成员函数时用,所以还是最好别用。(我开始乱答了,而且这里卡了好久)
4. 假如一个base,一个继承类继承了这个base,而且这个base里面有一个虚函数,那么这两个表的虚函数地址有什么关联?
这里一直没有懂他在问啥,最开始回答了一个如果继承类重写了虚函数,那么就会指向继承类的虚函数地址。如果没有重写的话就是保存基类虚函数地址。结果他重复了一遍问题。。。
这里一直没答出来,断断续续说我感觉基类和base类虚函数地址应该没啥联系吧。然后我沉默的时候面试官一直在重复问题,还换了个说法,但是我一直没有搞懂这想问啥。
5. 看我没答出来,换了个问题,比如一个类有两个虚函数,那么你是怎么知道虚函数的地址呢?
这里我说虚函数表,程序可以直接找到。他说不是,问你知道程序干了啥找到的吗,就比如说这两个虚函数,程序是如何找到你要的那个虚函数地址?我又有点懵了,说不会。
6. 平常用cast吗?
我又懵了,然后他说比如static cast,const cast。我就简单说了下static和const的用法和优点。
7. 说完他又问了一些别的,我没听懂,就直接说不会。
8. 用stl吗?
我给听成了用sql吗,哈哈哈哈笑死我了。我说用。
9. 平常用vector吗?讲下vector?
常规八股。讲了动态数组以及优缺点。
10. 给了道场景题,如何删除一个vector里面所有的2?
给了两个方案,一个双指针,让2和最后面的数换位,这样最后面就全都是2,相当于删除了。一个是用一个新的vector直接去存。感觉面试官说好的好的,感觉不满意这个答案?
11. 平常用map吗?和unordered_map关联?
我说主要用unordered_map,然后他问为什么不经常用map呢?常规八股,讲了下这两个的底层以及适用情况。然后讲完了他说对,但是你为什么主要用unordered_map,我又重复了一下这个底层是hash,时间复杂度低啥的,感觉不了了之了。
12. 如果你的unordered_map插入太多了,桶空间满了怎么办。
我说插入太多会让其哈希冲突过多,性能下降,这个时候需要rehash,rehash预分配更多的空间,并且可能导致重新分配元素。(这里也是拉扯了一会)
--------数据库----------
13. 刚听你说了sql(就是把stl听成了sql),你平常用吗?你平常是怎么考虑你的sql的时间复杂度的。
基本没写过sql,就背了八股。我就说主要看where的循环嵌套和索引。
14. 索引的话,系统怎么知道用哪个索引呢?
我这里以为问的最左匹配啥的,说了一个联合索引区分度大的放前面,他说问的不是这个。比如说系统知道你有一个索引班级和一个索引姓名,那么是怎么判断要把班级放前面呢?这里我也不知道答啥,又battle了一会。
15. 索引有啥数据结构?
就答了B+树,答了实现、时间复杂度和优点这些,这么久总算是有道会的了。
--------计算机网络----------
16. TCP三次握手后处于啥状态?
这又给我搞懵了。我说三次握手时,最后处于ESTABLISHED已连接状态,他说不是三次握手时,是已经三次握手后。我不知道在问什么了,过了一会我又弱弱的说了个处于已连接状态?他就放我到下一题了。
17. 假如TCP握手后,一端crash掉怎么办。
本来又没搞懂想说四次挥手,他又赶快打断我说不是这个。我就说我记得TCP有个保活机制,如果一端crash掉的话,由于TCP会定时发送探测报文,如果没有回应,在多次超时重传后会认定连接有问题。所以应该是发送端发现有问题的时候,会自己主动中断连接?
18. 又问了道类似的TCP的,不太记得了突然。
--------项目----------
19. 大概问了下我自己做的项目,又是问的机器学习和自然语言处理。这里问了下OCR的过程,大概讲了下。
--------反问----------
20. 八股问的这么底层,要如何准备呢?
面试官就说他不是很喜欢学生上来直接背诵八股,那样太浅显了也没意思。他自己的学习方法就是把一个软件直接学到硬件层,比如TCP他就学到网卡接收后的动作这个层面。
21. 没敢问项目组,因为感觉自己答得依托。就拜拜了。
总结:面试的时候就感觉自己的答得依托,好多问题直接卡半天说不出话的感觉。主要是面试谁都不知道会问什么,所以需要先保证背的广度。然后又需要深挖,面试官指不定会出什么问题。这次面试给我的感觉就是全都背过这些知识点,但是一深挖直接汗流浃背,虽然面试官有一直笑眯眯,但是我面试完就感觉自己要挂了。