这次是微信视频面试,除了面试官,hr也在面试现场,面了近40min,更多的是偏项目考察,因为提问就是从第一个项目到第二个项目,最后才问了一点技术栈的内容。
1.自我介绍。
2.Epoll的实现原理是什么。
3.Epoll底层为什么要用红黑树,而不是AVL树,有什么优势。
4.Http报文是如何被解析的,结合有限状态机说一下。
5.如何实现的 "利用标准库容器封装的char,实现自动增长的缓冲区",这一功能。
6.项目功能有 "基于小根堆实现的定时器,关闭超时的非活动连接",有一个场景,当出现大量客户端都要超时时,又受限于服务器的性能,你会怎么去进行处理呢?
7.日志系统采用的单例模式是哪一种方式。
8.懒汉式的单例模式存在什么问题,你会怎么去解决。
9.仅使用互斥锁,每次都需要上锁、解锁,必然带来资源的消耗,你会怎么去进行改进呢?
10.压力测试下的服务器的性能是多少。(上万qps)
11.如何实现的 "Npc的随机移动、概率计算以定时向其它Npc或用户发射炮弹",这一功能。
12.如果游戏玩家和Npc不能重叠,你会怎么去做。
13.在一个游戏场景中,例如火山等游戏物体,其游戏玩家和Npc是不可到达的,而Npc在随机移动时,如何保证不可到达这些游戏物体,以及在进行多次随机时仍定位到这些游戏物体,你会怎么处理。
14.在游戏中经常用到路由算法,讲一下常见路由算法的实现原理。(准备想问A*,我说不太熟悉,就说了dijkstra以及floyed算法的实现原理)。
15.观察者模式是什么,以及它的实现机制?
16.是否有了解Lua脚本。(没有,python和shell用得较多)
然后问我是否能接受加班,我说:"可以接受,不排斥,但希望不要加的太晚如晚上11-12点",之后反问了一下面试官在项目中处理的工作以及对新人的培养方案,面试官也提到他们公司的一个实习生成长速度很快,已经能够承担一部分责任,做一些客户端逻辑处理,且公司对于新人的培养也是十分包容的。
通过与面试官的交流,发现面试官是一个知识储备雄厚、经验丰富且擅长沟通的人,给人的面试体验比网易互娱、西山居这些游戏大厂要好很多,这也仅从我个人面试感受出发。
Hr面
周一上午通知业务面试通过了,今天上午10:30开始的Hr面,还是采用微信视频面试的方式,Hr说把视频打开,结果我打开了,她却不打开,这就只看着我说话呗。
Hr面的具体内容不再展开,都是相似的,只不过和Hr沟通时,游戏公司加班确实比较严重,正常下班是到21:30,如果遇到版本更新时就只会更晚了,谈到期望薪资时,其实我前一天就了解到冰川网络的薪资范围,给的并不多,所以我就给了Hr相对公司薪资范围较高的水平,之后Hr说要和项目负责人谈一谈,才能给你定级定薪资,其实我也不想因为薪资原因被婉拒,毕竟是一个机会,还是希望抓住这个offer,给自己更多的选择。
上午其实表现得并不好,有一点无精打采和厌烦感觉,因为面试后得感觉不太好,和Hr也相关,但毕竟是Hr面,应该不会影响太多。