字节跳动游戏研发三面面经
07/09更新:
打电话问了hr,hr说面试未通过。
官网上还是显示面试中,应该过一段时间会变成已结束。
感觉像我这杨三面完依然还是面试中的应该就要凉了,三面完显示面试已完成的应该还有机会。
一面 早上11点开始,持续30分钟
1. 讲讲数组和链表。
2. 说说进程线程。
3. 讲讲http。
4. get和post区别。我说最根本的差别是幂等性,然后参数放在url中,长度有限制,安全性其实差不多。他问说还有吗,我说没了。感觉我回答的不是他想要的答案。
5. 讲讲同步异步。我说了I/O多路复用和异步,说了Proactor和Reactor,再说到select,poll,epoll。
6 .除了select,poll,epoll,还了解哪些I/O复用吗,IXXX听说过吗。没听说过,IXXX是什么我都忘了,只记得I开头。
7. TCP断开连接,讲讲Close_Wait。
8. 讲讲乐观锁,悲观锁。不会。
那讲讲线程安全。我说,这个是不是是java的啊?(问完我就后悔了,这问题好蠢)
他说这不是操作系统层面的吗?就是死锁。我说死锁啊,那就是对多个任务请求占用同一个资源。然后我想说死锁四个条件的,结果给忘了。我就说,这个忘了。他说没事。
这题是我一面答得最烂的一题。
9. 讲讲数据库,索引。然后我说了Innodb支持自增,会自动建索引。然后说了B+树,他问我B+树除了扁平还有什么吗,我说叶子结点都在底部,查询效率衡定,节点之间还通过链表连起来。
10. 讲讲深浅拷贝。
11. 两个有序数组找相同元素,我说双指针,他问时间复杂度,我说O(N)。
他说那无序数组呢,我说我用dict做,空间换时间。
12. 你有什么要问我的吗?我问了他头条游戏团队有多少人,主要用什么语言。前端c#,后端java,主要语言没有c++。是的你没有看错,没有c++。
等了十分钟,发来一面通过的短信。然后HR打电话过来,说快到12点了,下一面下午开始吧,然后定的下午1点。
二面 下午1点开始,持续1个小时
1. 说说你写的C编译器。
2. 挑一个实习的项目,说说遇到的挑战。
3. 既然项目用的Tornado,说一说异步。
4. 来做道算法题吧:
一堆需求,每个需求都有需要完成的时间和deadline,求最多能完成几个。
然后我说了这个是动态规划的题,然后想了五分钟,直接跟他说我不会写。(我算法一直很渣)然后他说,那我们换个。
5. n*n格子,从左下走到右上。
一开始题目描述有问题,测试用例给的输入是3,输出是5。然后我就按斐波那契数列写了,后来输入2输出3,面试官发现不对。
然后我跟他讨论了一会儿,最后他也觉得题目有问题,让我不要管测试用例,再写一遍。
然后我按全排列写了。但是误会了题目的意思,题目说的是走格子,我理解成走边了,结果输出总是出错。比如2*2输出6,其实3*3才输出6。
后来面试官说你这个不对吧,我跟他讨论了一下,才意识到他说的是走格子,不是走边,然后把输入减1,终于过了。
这道题做完我心都凉了,一道很简单的题搞了这么久,心想这轮肯定过不了了。
6. 没时间了,问你点基础吧,说说Time_wait。
7. 说说vilotile。
8. 说说数据库四大特性。我说了A和C,I和D有点想不起来了。正在想,他直接说,没时间了,今天就到这吧,之后HR会联系你。
我心想凉透了,也很难受,难的算法不会也就算了,很简单的做了这么久,然后一个ACID竟然没说出来,就很难受。
5分钟后发来短信,我心想,头条效率真高,五分钟就告诉你凉了
结果点开一看,面试通过??Excuse me?我盯着短信看了好几遍,还刷新了面试链接,我怀疑是HR操作错了。
然后短信说30分钟内安排下一轮面试,我这30分钟就不停刷新那个链接,我觉得一定是HR搞错了。
然后30分钟后真的三面了。
三面 两点半开始,持续30分钟
1. 我看你简历写的c++和python,现在用哪种语言多一些。答曰python。
2. STL了解吗,说说常用的。
然后我说了Vector、queue、stack、deque。然后说了deque的底层实现。
然后他说set,hashmap呢?我说我没用过,基本都是用python的dict和set,只知道STL的set,map底层是红黑树实现的。
他说那python的set是什么实现的你知道吗?我说我不知道,我猜也是红黑树吧。他笑了笑,没说话。
3. 讲讲实习的项目,说说亮点。
4. 看你项目对ElasticSearch操作比较多,说说ElasticSearch。
然后我说了倒排索引,索引放在内存中,然后用了一些技巧压缩,刚想说压缩技巧被他打断了。
他说索引不大,为什么最后导出用了那么久呢。我说索引是不大,但是通过索引去找全部的doc要用很长时间,换言之查询很快,但是导出比较慢。
然后问了我数据量大概有多大,我说10亿左右,请求量较高的系统7天的数据大概有5个G,压缩后六七百兆。
5. 来问个游戏相关的题。现在有一个很大很大的地图,上面有很多角色(怪物,NPC等),每个角色视为一个质点,有一个坐标(float型)。要怎么设计底层的存储结果。
然后给了个大体方案,他又根据这个方案再往细了问。这题大概讲了十分钟吧。
6. 未来职业规划。
7. 有什么想问我的。
i.头条游戏的技术栈。
ii.是不是也在知春路。
iii.您觉得作为一个开发,之后的学习路线,往操作系统,即计算机底层深挖比较好,还是朝算法深挖比较好。
iv.头条是打算通过游戏变现吗?
v.为什么做游戏会选择lua?
三面下来,感觉问的都不深,可能因为我只是本科?基础问题基本都是我自己扩展了一些。算法除了二面的动态规划,其他都很简单,可能面试官也看出来我算法菜的一批,就不羞辱我了。
整个流程还是很快的,一天走完。但是我估计我是凉了,二面菜鸡本质暴露无疑,祝大家好运,可不要像我这么菜了。
#字节跳动##面经##Java工程师#