快手游戏服务端秋招面经
一面 1h
#面经##快手#
- [ ] static关键字
- [ ] 虚函数怎么实现,虚表存在哪里
- [ ] 多继承中的虚函数表结构
- [ ] 两个父类如果同名的虚函数怎么办
- [ ] 内存对齐是什么,规则是什么
- [ ] 怎么自定义规则,什么时候需要自定义
- [ ] 进程的内存分布
- [ ] 虚拟地址是什么,怎么映射成物理地址
- [ ] vector的内存管理
- [ ] vector的扩容机制,可以缩容么,怎么操作
- [ ] vector是线程安全么(我说是吧,源码中会对操作加条件变量,又问这样会不会没效率)
- [ ] C++11用过的新特性
- [ ] 右值引用是什么,如何实现的move
- [ ] 缓存命中(说了CPU的,面试官说和他想问的os缓存命中完全不是一个东西)
- [ ] epoll的底层实现
- [ ] 讲讲 红黑树 ,为什么比 AVL插删稳定呢?明明都是旋转
- [ ] 有向无环图的拓扑 排序 ,是为了解决什么问题
- [ ] 哈希 算法
- [ ] epoll为什么这么高效
- [ ] socket写TCP服务端设计的API函数,分别对应三次握手哪些环节
- [ ] listen函数第二个参数的含义
[ 算法 ] - [ ] 单 链表 反转
一面就 很没有交流的感觉,每个问题我balabala说完以后,过了十几二十秒面试官才啊一声,然后就下一个问题了,最后就扔了个简单题还以为肯定凉了
二面 45min
[项目]- [ ] 挖项目,参考网上做的么,哪些是你自己搞进去的
[实习]- [ ] 挖实习项目
- [ ] 设计一个抽奖系统,每次抽到的东西都不一样(一开始说用 数据 结构保存上一次抽奖结果,下次抽了先判断重复,面试官说万一有个人运气不好一直抽到重复的;然后又说那抽取之后从奖池里删除,然后重置随机种子,面试官说效率不高;最后我说那把抽到的奖品换到奖池末端,然后把抽奖范围末位置 -1,面试官才说可以)
- [ ] 战斗公式,要经常修改,怎么设计好给策划来编辑(后面说只是为了考考我有没有为策划着想,不要太说专业名词和操作emm)
二面体验感还是很好的,面试官很会沟通还一直开玩笑,有点聊天的感觉在其实,就是把实习和项目捋清楚问题就不大,前面还了解了一些意向对游戏服务端的了解之类的
三面 40min
[项目]- [ ] IO多路复用逻辑和原理
- [ ] 服务端客户端逻辑和功能怎么实现(直接代码写出来,具体配置 函数 参数都写了,写了老半天这里)
- [ ] send recv和sendto recvfrom的区别
- [ ] 多进程的缺点
- [ ] 读写分离的各种实现方法
- [ ] 讨论了各种地方为什么这样实现,对性能的影响,面试官还推荐了几个他觉得实际工作里比较好用的库和方法啥的(boost.asio、strand)
- [ ] 消息队列
- [ ] 多线程的保护机制
- [ ] 多线程互斥锁读者锁自旋锁和条件变量的具体应用场景
- [ ] 原子变量
- [ ] 原子操作了解么,还有它的四种内存模型
- [ ] memory barrier,memory order
- [ ] load hit store
- [ ] store buffer/write buffer
- [ ] Ifence sfence mfence
- [ ] 游戏服务端的技术了解
- [ ] 想做的方向, gameplayer还是引擎
前半段一直再让我写项目代码,问的很细一边写一边提问,然后就开始给我介绍很多很多工作里实用的技术,好些我也不懂只能认真听讲,感觉后半段他说的比我还多,学到了很多是真的,感觉像上了一节1v1网课。