2017暑期实习春招面经:网易互娱+腾讯IEG
从春季开学至今陆陆续续面了很多实习,岗位是C++/后台开发,也被刷了很多次,最后拿到的是网易互娱和腾讯IEG(魔方工作室)的offer,这里简单记录一下准备过程和面试时的问题,希望能帮到同样在找实习的同学们。一、面试准备
首先从去年9月开始,陆陆续续看了下面这些面试相关书籍:《C++
Primer》(精读)、《数据结构与算法分析——C语言描述》(精读)、《剑指offer》(精读)、《Linux/UNIX系统编程手册》(部分章节精读)、《计算机网络(谢希仁版)》(部分章节精读)、《Effective
C++》(略读)、《STL源码剖析》(略读)。
平时练习的内容,一般是在leetcode上做编程题,同时在牛客网上做专项的基础题。在面试前一个多月,主要是看牛客网的面经来查漏补缺并熟悉面试题型,这里特别感谢下面几位前辈的面经,看完之后收获很大:
https://www.nowcoder.com/discuss/3038?type=2&order=0&pos=2&page=3
https://www.nowcoder.com/discuss/21565?type=2&order=0&pos=16&page=1
https://www.nowcoder.com/discuss/19487?type=2&order=0&pos=21&page=1
二、网易游戏(C++研发,笔试+面试)
网易游戏(广州)今年的笔试题大家应该都知道,做对一题妥妥的就能面试了,这里不多说。不过听同学说,他第一题做对
90%的case,也得到了面试机会,但他面试了两次,可能各个岗位要求不同吧。
面试只有一面,开始20分钟面试官问了做的项目,然后是C++和linux的基础知识,最后是几道算法题,主要问的一些问题如下:
1、vector如何实现动态增长(面过的几家公司都问到这个问题,感觉不能只说resize之类的函数,还需要细化到vector内部的allocator如何工作等细节,具体可参考《STL源码剖析》)
2、如何实现申请一大片连续空间,避免多次使用new等调用(当时说的是allocator,不知道还有没有其他答案)
3、map的key和value的类型选择,都有哪些限制(key要支持operator<,如果没有,那么map模板必须增加第三个模板参数,value类型要支持operator=,此map要支持拷贝构造并有默认的构造函数。楼主想到的是这些,欢迎补充)
4、浅拷贝与深拷贝(介绍完按位拷贝等内容后,最好再指出按位拷贝会导致内存多次释放等风险)
5、线程的同步(这里我扩展地说了很多,互斥锁、信号量、cond变量等等)
6、互斥锁与自旋锁的区别
7、用sort处理文本的各种参数
8、算法题:
如
何得到链表倒数第k个元素(快慢指针,记得要判定是否越界)
9、算法题:
求一棵树中最大的距离,在一颗树中,两个结点之间所经历的边数(即从一个节点到另一个节点需要经过多少条边)称为距离(递归求解,当前节点的左右子树深度之和,即为经过当前节点的最大距离,然后同步更新所求的最大距离)。
10、算法题:
最大子段和(DP经典问题)
11、算法题:
二维最大子段和(上一题的拓展,把所有可能的数组两两相加即可,时间复杂度O(n3))。
三、腾讯IEG(后台开发,电话一面+现场二面)
腾讯算是面的最多的公司,前后总共面了4次......前两次经验不足,感觉面试官什么也没问就结束了,可能是自己水平太渣......准备了半个月之后,在三月底参加了IEG的电面和现场面试,这两次面试有明显区别,一面侧重于基础,二面的问题比较开放,感觉面试官考察的是思维体系。
首先说一面,前10-20分钟依然是聊项目,然后是各类基础题:
1、虚函数的内存管理(常见问题,建议把虚函数表、多态的实现过程这些都讲一讲)
2、全局与局部静态变量区别(感觉面试官是想问比较深入的内容,但我当时就答了作用域以及内存分配......请大神指点)
3、空类默认生成哪些函数(构造函数、析构函数、拷贝构造函数、以及拷贝赋值函数,参考《Effective
C++》)
4、explicit关键字的作用(修饰构造函数,用于抑制隐式转换,“原则上应该在所有的构造函数前加explicit”
----《C++ Primer》)
5、类如何实现只能静态分配和只能动态分配(前者是把new、delete运算符重载为private属性。后者是把构造、析构函数设为protected属性,再用子类来动态创建)
6、算法题:数组中只有一个数出现了两次,求这个数,并使得空间
效率最优(用位图bitmap,比O(n)的线性空间更优)
7、哈希表解决冲突的方法(开放定址、再哈希、链表、公共溢出区,可以适当深入,比如分析各自的优缺点)
8、设计题:有500W个QQ号,设计一个合适的数据结构进行储存、查找与维护(这里考虑到查找的高效性,我想的是字典树,但和面试官探讨的过程中,感觉他不是很满意这个答案,大家如有更高效的结构欢迎分享)
9、TCP三次握手有没有被攻击的可能(如果一个恶意攻击的ip一直请求连接,服务器会发送ack确认,但永远等不到回复,就会导致服务器资源浪费)
10、TCP四次挥手时最后一次等待要多久,为什么(如A向B发送挥手,则A需要等待2MSL,MSL为最大报文生命期,这是为了确保A的挥手能到达B,不然B会重传第三次挥手的信息。另外也是确保所有此次通话相关报文在网络中消失)
11、ssh协议以及如何预防中间人攻击、如何免去使用密码(这个网上很多都有介绍,回答时记得理清顺序即可)
12、http和https有什么区别(前者运行在TCP,后者运行在SSL/TLS上,安全性更高)
一面还有一些小问题记不太清了,总体上是考察基础为主,很多问题面试官会顺着你的回答一直问下去,能回答更多细节固然好,答不出也没关系,很多底层实现面试官也没指望你全部答出来,只要整体的知识脉络把握清楚,再想办法转到自己了解更多的问题就行。
然后是二面,因为楼主的研究生课题是深度学习与图像识别,所以前面问了相关的一些问题,比如深度学习可否应用于游戏中,如何用机器学习来分析用户行为等等,然后就是几道设计题:
1、设计题
:在MOBA游戏如英雄联盟、王者荣耀中,一般有多个玩家同时游戏,要如何实现游戏的实时性,如何处理玩家角色之间的同步(这个题感觉回答得不理想,主要说了同步的处理机制,对于单个用户的移动这些局部数据单独处理,团战时如何划分优先级,如何划分处理区域等等)
2、设计题:有一个3阶魔方,设计一个数据结构来储存,并设计一个算法来求解魔方(当时设计出了数据结构,但求解算法只能想到DFS+剪枝,显然时间开销太大......事后在网上没找到特别好的求解算法,如有大神知道,还请指教~~)
3、设计题:设计一个麻将游戏(规则可以选自己熟悉的,我选的是长沙麻将,因为就这个懂一点......这个题熟悉OOP的同学应该会得心应手一点,做到明确的功能划分,把几个类和相应的成员函数写清楚,应该没太大问题)。
以上就是二面的内容,题目数量不多,但真心烧脑。面试官很nice,全程都很有耐心地启发吾等学渣……二面的问题并没有一个明确的答案,面试官主要考察的是你解题的思路,所以多把自己想到的和面试官交流,勇于动脑和动笔,让面试官在解题过程中发现你的闪光点才是最重要的。
以上就是楼主这次春季面试的一些感受,文章内容若有纰漏还请大家多多担待。欢迎大家留言或私信交流,希望能帮到一起找实习的各位同学。最后祝大家都能找到自己心仪的实习岗位,fighting~
转载自:https://www.nowcoder.com/discuss/23255
页:
[1]