米哈游 服务器开发(实习) 一面面经
3月13日参加的笔试,笔试大概包括以下几个部分:
1. 多项选择:包含计算机基础,和一些C++题,C++题有些直接就蒙的
2. 编程题:两道,难度不大
3. 场景设计:投的岗位不同题目也不同,服务器开发的话是设计类似王者荣耀的5v5匹配系统,设计相关数据结构和函数,虽然上面是C++的模板,我硬是用golang在写。。
3月23日进行的一面,是电话面试,30分钟
1. 问C++相关背景(米哈游的服务器开发那边应该C++比较多),我表示很少用C++
2. 请简单介绍一下快速排序,说一下时间复杂度;平均复杂度O(nlogn)是如何算出来的
3. 算法设计:有N个数,求其中前K个数(TopK),说一下时间复杂度,O(nlogk)如何计算的
4. 算法设计:有N+1个数,这些数大小是1-N,只有一个数出现两边,请找出这个数
这里我说了三个办法:bitmap;哈希表;把出现过的数对应的下标位置的数取反,最后只有一个位置的数是正的;
5. 算法设计:简述一下Dijkstra算法,该算法能否处理负权值边的情况?如果希望能处理负权边,该怎么办?
6. 有什么算法可以检测出图中的环?
我说了个拓扑排序,但这个应该是只能检测有向图的,但面试官没追问我无向图的情况
7. 说一下python,python中的numpy数组和python中的列表有什么区别,这里是因为我在简历里写了我用过这些库
8. 机器学习你用的什么库?Keras是上层的库,下边的是实现是什么(我用的是TensorFlow)
9. 说一下python里的装饰器
10. 你知道printf怎么实现的吗?(完全不知道。。。)
11. DNS基于什么协议?为什么要采用UDP协议?
12. TCP连接结束时的TIME_WAIT状态有什么用
13. HTTPS基于的SSL连接是如何结束的?()
14. Redis中的跳表是实现什么数据结构的(ZSET)?具体是如何实现的
15. Redis里哈希表重哈希策略是怎么样的?
这里我说我不了解,但知道Java里的Hashmap的重哈希实现,面试官就让我说了Java里的,我也顺便说了下go里的map实现
16. Docker里的容器和镜像分别是什么?
17. Go里的调度模型有GMP的概念,解释一下,并说一下go的调度过程
这个要说的话真的有点长,这里我说了一半就被打断了,可能面试官也不是特别了解?要么就是我说错了被面试官发现了。。。
18. Go的调度模型里为什么要有P?
19. 你为什么想做游戏服务器开发呢?你对游戏怎么看?
XX. 项目一些细节,每个项目都问了点,
反问环节:
1. 服务器开发和网站上的Golang服务器开发有什么区别
米哈游的服务器开发主要和游戏相关的,Web开发的话会用Golang多一点
大概就是这样,有些问题没答上来比较可惜
#米哈游##实习##面经##校招#