腾讯暑期实习游戏客户端开发一二面凉经+系统测试全面经
本人大三,三月份先投递了游戏客户端开发岗,挂在二面。
后被系统测试岗捞起,面完了一二三四+总监+hr面,作最后更新啦!
----------------------------------分割线----------------------------------
游戏客户端开发:
比较奇怪的一点是我投了游戏客户端开发,结果一面是PC客户端的面试官,二面是移动客户端的面试官,懵逼~
一面(视频面):
上来先是两道代码题:
1.给出输入2->3->4 + 0->7->4(具体数值不记得了),输出3->0->8(即432+470=803),手动实现链表,存储输入的2个数,并将结果计算出后存入链表并输出
思路:链表的简易实现及应用
2.给出数字如100000000,要求不能以字符串形式读入,并给它加上千分位并输出(如10,000,000)
思路:数字除十取模转字符串,每三位加一个",",当然面试官后来说除一千更好,想想的确是这样。
总体来说代码题不是很难(我运气好,我同学就遇到了二叉树中序遍历非递归,换做我估计也忘了)
之后问了有关我数学建模国赛的问题,具体做了些什么,代码怎么写的(19年C题机场出租车问题)。
在之后问了我自己写的个人项目,我用C# Winform + Sql Server写了一个数据库管理系统,怎么·实现的,效果如何,就巴拉巴拉讲了一大堆。
最后问我有啥问题,就自己想了一个问了面试官。结束以后五分钟就显示进入复试了。(估计代码写过了就没卡我)
二面(视频面):
二面上来先问我有没有在一面写过代码题,我说有,就直接进入了正题。
先问的数据结构,如何判断链表是否有环,若有环,环的入口在哪里(floyd判圈法,快慢指针)我只答出了怎么判断有无环,没有答出怎么找到入口。
之后问如何用两个栈模拟队列,这个比较容易,一个入队栈,一个出队栈就可以了。
之后考察了操作系统的知识,讲了讲进程,线程的概念,他们之间的联系,进程分配有哪些方式(信号量,消息队列,管程,共享内存等等),信号量重点考察了一下。
然后同样问了我建模以及项目的事情。
最后又是提问题环节,面试官让我打好基础(听到这句话多半是凉了)
果不其然,面试流程三天没有更新,最后灰了,估计是因为二面链表答得一般,然后岗位和他的部门不匹配。
----------------------------------分割线----------------------------------
等了大概一天,系统测试部门捞我了,三天面完三次。
一面(电话面):
聊了一个多小时,问了我很多问题
C++方面:什么是多态,什么是虚函数,指针和引用有什么差别
个人项目:看你C#项目有用Sql Server,为啥没学Mysql(学校教的Sql Server ->_->),那行,说说看你的索引怎么用的,我就巴拉巴拉一顿讲。
建模:你们建模整体思路是什么样的,你为什么用模拟退火算法,你怎么证明他是很好的,我说模拟退火算法是通过迭代,引入随机因素,快速达到符合精度要求的值,比直接强算来得快,效率高(证明就是强算看看结果和模拟退火算法差多少)
Linux:会Linux吗(不会),那基本的指令知道吧,怎么进入某个路径(cd),主要我这学期才学Linux,所以一堆不会,后面恶补
计网:计网学了么(没学),好吧。
最后又到了问问题环节,我问面试官对我有啥建议,面试官让我这几天好好看看Linux和计网。(实际上只给了我十来个小时,因为第二天下午就二面了)
(狂补Linux基本指令和计网经典问题(握手挥手,TCP/UDP差别,url输入到浏览器发生了什么))
二面(视频面):
40分钟不到吧。
很和善的面试官,上来很亲切地问了我的名字,让我放送了不少。
C++:又问了一次指针和引用的差别,之后问了struct和union的差别(不会),什么是字节对齐(不会),说一说#if(好像是预编译?不会)三个不会慌得不行。
建模问的类似的问题,项目也是。
之后就结束了。
面完以为很凉,心态很崩的开着班会,结果开到一半收到了下一面的通知(欣喜!)
三面(视频面):
一个小时左右,被腾讯气派的办公室给惊艳到了hhh
C++:说一说C++的动态内存分配(new);new和malloc的区别;const有什么用;构造函数可以是虚函数么,为什么?这些都答出来了,感觉海星。
计网:url输入到浏览器,发生了什么(准备到了)
Sql:什么是索引,它的底层是什么(B树)?说说看B树的结构,B树我只是依稀记得,就只好凭着记忆一顿说(复习了红黑树,复习了AVL树,就是没复习B树,不能偷懒啊),如果B树退化成了一条线(全都只有左子树或者右子树)怎么处理?这个倒是知道的,左旋右旋。
写一段程序,要求对一个文件读入里面的内容,文件中有很多loglevel(比如error,warning等),形式如同"xxx,xxxxxxx",请统计不同种类loglevel的个数。
我的思路:用map<string, int>,以","作为分隔,读到就用substr把前面的错误类型读出来,放到map里,就可以统计了(应该用Python+正则表达式更好,可惜我只会C++)
写完以后面试官让我测试我写的程序(黑盒测试),我想到了数据量(数据量太大需要哈希),边界条件,文件读取方式。面试官问我还有没有,我说想不到了,面试官就说还有大小写(很重要的一点)。
然后还是建模和C#的项目。
最后问我会不会python,我说不会,面试官有问有写过小工具吗,我说有写过一个统计目标路径下不同类型文件个数的python小工具,参考网上思路写的,面试官说可。
最后面试官建议我自学一下python,因为工作中会很常用。
----------------------------------分割线----------------------------------
最后贴出我遇到的两道逻辑题,因为我不记得具体那次面的,就放最后
1.100本书,每次只能拿1-5本,自己先拿,怎么拿保证自己一定拿到第100本
2.两根规格不一的蜡烛,每根蜡烛燃烧完需要1小时,如何用两根蜡烛确定15分钟
(要是拿到了offer就要来还愿,拿不到就算是为后面的同学提供一下参考)