巨人网络,游戏开发工程师一面
电话面,四月1号通知四月8号面试。
前言:
大学什么专业 计算机
项目
你之前做过一个2D过关小游戏是吧,你偏向做客户端还是服务器?对,客户端。
这个游戏你使用c#写的吧,你对c++熟悉吗?相比c#我更熟悉c++。
这个游戏有在手机上跑过吗?没有。
c++
map和unordered_map的查找时间复杂度?map用rbt实现,查找时间复杂度为logn,unordered_map用哈希表实现,查找复杂度取决于哈希函数和处理冲突的方法,查找时间为常数级。
用循环语句删除map中的某个节点怎么做比较安全?使用迭代器删除。删除之后直接退出循环吗?这里不知道他要问的是什么,说了一下迭代器失效,迭代器不需要自增直接指向下一个元素。(这里太紧张说成了顺序结构容器删除,树结构删除节点只需要删除节点之前把下一个节点指针保存下来在删除该节点即可(迭代器指向的节点不仅包含节点的关键字信息,还有包括指向下一个节点的指针))。
怎么判断有没有发生内存泄漏?不知道怎么回答。扯了点智能指针和删除后要及时释放内存。我说完后面试官说这是避免,我说的是怎么判断内存泄漏。不知道。
lambda表达式?不了解。
操作系统
I/O同步异步了解吗?不了解。
死锁是怎么造成的?进程各自占有资源,又在请求其他资源,循环等待造成死锁。
不使用系统提供的互斥锁怎么让进程互斥访问?讲了一些单标志法和双标志法,没讲明白,被面试官问晕了。
计算机网络
TCP建立连接第三次握手发送失败怎么办?服务器重新发送一次。什么时候发送呢?超过最长报文段寿命的时候。第三次握手报文如果还是没有发出呢?如果有大量这样的情况怎么办?等着吗?不知道。(当失败时服务器会重新发送确认报文,当超出一定次数服务器会关闭连接,释放资源。当客户端给服务器发送数据时,服务器会发送RST报文段,客户端需要重新连接。这样做的目的是为了防止SYN洪泛攻击。)
TCP粘包?不了解。
额外问题
现在有哪些公司offer? 0 offer
提问
贵公司客户端是干什么的?第一年完成策划的一些要求,处理服务器的一些数据。后面进阶根据自己的情况实现一些复杂效果和优化。
面试官是什么职位?我是负责巨人征途项目。
贵公司客户端用什么开发语言? c++和lua。
图形学是基本要求吗?是游戏开发之路上的必经之路,但不是新手必须的。
#巨人网络面试##春招##面经#