快手游戏开发服务端暑期实习一面面经
5.14面的
自我介绍
c++相关
1.类的静态成员函数的特点(卡壳)
2.虚函数是怎么实现的
3.一个对象最多只有一个虚函数指针吗
4.友元函数能作为虚函数吗(不知道)
5.内联成员函数可以是虚函数吗(没记住,答不知道)
6.模板函数可以是虚函数吗
7.模板函数是怎么实现的,为什么能实现多态(没答出来)
8.有用过智能指针吗,有哪些类型,分别是什么区别
9.noexcept关键字了解吗(没答出来)
10.完美转发了解吗(没答出来)
11.vector底层是怎么实现的,是线程安全的吗
12.说一下最小堆的插入和删除的过程(删除答错了被当场指出)
13.解决哈希冲突有哪些方法
14.快速排序是稳定排序吗,插入排序是稳定排序吗(忘了,只说出来平均时间复杂度)
操作系统
15.用户态和内核态的区别(回答提到了系统调用),除了系统调用还有哪些情况会切换用户态和内核态
16.零拷贝了解吗
17.知道什么是写时拷贝吗
18.知道什么是缺页中断吗
19.常见的页面替换算法有哪些
网络
20.每次https请求的过程中会发生什么
21.tls握手的过程详细讲一下
22.具体有哪些对称加密算法和非对称加密算法(不知道,这玩意还要问呢?这我回头查完也记不住啊?)
23.你知道什么是mtu吗(不知道。最大传输单元,定义了在某一通信协议的某一层上能够通过的数据包的最大尺寸)
24.针对游戏开发你觉得tcp和udp哪个更好
25.你说udp允许一定的丢包的话,那玩家释放的技能被丢包了造成不好的体验了怎么办(我答了用quic来保证可靠)
手撕:
有一个链表,比如说12345,然后希望重排序成15243(从头第一个,从尾第一个,从头第二个,从尾第二个,从头第三个...)
我回答了先反转链表同时记录链表长度,再两个链表合并
追问这种方法的空间复杂度,o(n),问能不能o(1)解决,我又提了个迭代的思路但是面试官说还是o(n),然后我就没思路了
后续查了gpt知道是把后半链表反转然后和前半链表合并好吧我是笨比
反问:
多久出结果(最快当天),有什么学习建议(说你自己答下来也知道,c++还需要加强)
第二天hr和我说寄了,呜呜呜呜呜呜呜