2018年秋招游戏公司面经+面试准备心得(游戏研发工程师)

1.面经
网易互娱:提前批第一批。
自我介绍
C++相关
const的作用?按顺序说了一遍
指针和引用的区别?
堆和栈的区别?
内存的静态分配和动态分配在哪个区?为了装逼,可以把alloca讲一下。其他的几个看笔记
C++内存模型,每个区放什么?代码段(可执行代码,字符串常量),数据段(已初始化的全局变量,静态局部变量,常量),bss段(未初始化的全局变量),栈(局部变量,alloca),堆(动态分配的内存)。
内存溢出的原因?
malloc和new的区别?
memcpy和memmove的区别?内存重叠
strncpy的实现?为什么strcpy是不安全的?可以结合缓冲区溢出说一下。
拷贝构造函数的参数为什么要传引用而不是传值?
类型转换函数有哪些?4种,分别讲一下。shared_ptr的原理?weak_ptr的原理?可以结合STL容器讲一下,能否在容器中存储auto_ptr
STL的map底层是怎么样的?
extern "C"的作用?链接声明。
多态是什么?如何实现?
析构函数为什么要是虚函数
C++11了解吗?auto,lambda表达式,右值引用,3个新的智能指针。
智能指针每一个都说一下。哪一个是线程安全的?
右值引用是什么?用在哪里?
函数的默认参数为什么必须放在最后?
纯虚函数是什么?什么是抽象基类?从面向对象设计的角度来谈谈抽象基类是做什么用的(不要说语法)?
程序的编译链接过程。预处理->编译->汇编->链接
动态链接库的链接用什么命令?-L指定.so的目录,-l指定动态链接库的名字.
说说gcc,你一般用到什么命令?-O,-g,-l,-W等等。

网络相关:
TCP/UDP的区别
TCP三次握手,四次挥手。过程和原因?
TCP拥塞控制(慢开始、拥塞避免、快重传、快恢复)讲一下
在浏览器地址栏输入www.baidu.com,回车后会发生什么?
https和http的区别?https用了SSL/TLS
如何保证浏览器发出的数据到路由器这一段是安全的?(记不清楚了)
socket编程知道吗?讲一下

***作系统相关:
进程和线程的区别?
多线程如何同步?

linux相关
软连接怎么生成?ln -S
发布动态链接库,除了.so,还要发布什么?头文件
常用的linux命令?
查看CPU,内存,进程用什么命令?
makefile是什么,用一句话说明。怎么写?target怎么写?默认的target是什么?
linux下如何调试段错误?
  • dmesg可以在应用程序crash掉时,显示内核中保存的相关信息。
  • 如果有-g编译选项,则用gdb+可执行程序+coredump文件调试
  • 如果没有,用objdump -d 反编译可执行程序,再到汇编代码中用grep找引起段错误发生的汇编代码
算法:
快排简要说一下原理。选择枢纽,并确保枢纽的左边区间内的所有元素都比枢纽小,右边的都比它大。对子区间重复上述动作。
快排为什么快?缓存和局部性原理

项目中用到的工具?gdb,C++编译器一套,性能分析工具gprof等一套,版本管理git。
git的流程说一下。revert和reset的区别?

图形学没问
平时喜欢干什么?最近在读什么书?
有什么想问我的?


雷火
笔试是真的考得很广,什么都有,只是会刷题的话根本搞不定的,因为保密不能透露题目哈。满分150还是120来着,30多分就可以进面试了。
面了很多轮,记得不太清了。
自我介绍
多态是什么?怎么实现的?
STL容器中,在迭代器删除元素时会发生什么?只问了vector的,但是最好全部记住,结合图例
重写override的函数中包含有默认参数的情况,会发生动态绑定吗?因为默认参数的值要在编译时确定,所以是early binding,不会发生动态绑定。看《effective C++》
求top k的几种方法?分别说一下
内存对齐的目的?
volatile关键字的作用?
谈谈你的项目。

算法题:
小顶堆的插入、删除怎么做。非标准的删除做法讨论。
求x的n次方的个位数是多少,n非常大。


吉比特
问答题比较简单,略。
算法题
找出数组中出现了2次的元素,其他只出现1次。用一个unordered_set就搞定了,当时想太多。

巨人
int f(int a)能重载void f(int a)吗?
返回值是引用类型,有什么用?链式表达式
C++的lambda表达式怎么用?按值捕获和按引用捕获讲一下
粘包是什么?

祖龙
线下笔试
真的有难度,C++问的很深,不过还好
一轮
在两个排序好数组中找第k小元素?时间复杂度说一下。
有没有其他方法?
二轮
怎么判断一个点是否在三角形内部?向量叉乘判断点在边的内侧还是外侧。


完美世界
sizeof空类的大小?为什么
C++的友元函数
解释TCP的滑动窗口
四次挥手时被动断开连接一方一直收不到对方的最后一个ack一直收不到怎么办?会一直处于last-ack的状态。
手撕atoi。输入字符串,输出数字,(主要考察考虑各种情况)考虑负号,正整数部分,小数点,小数部分,科学计数法部分eE
定位new。placement new.
const成员函数的作用。mutable关键字的作用
什么情况下,析构函数可以不声明为虚函数?
重写和重载有什么区别?略
malloc和new的区别?
TCP三次握手,四次挥手。过程和原因?
游戏经历
让你在京东和完美世界中选一个?直接打断,肯定选完美啊。阿里也不行。

二面
多继承情况下的内存布局?为什么会有自适应偏移?C继承自A和B,B* pb = &c;和A* pa = &c;得到的两个指针值是不相等的,为什么?哪位大佬能回答这个问题,我查了很久都没查到。
如何判断某个点在一个扇形内部?
a,b向量的和c,和敌人连接的向量d,c点乘d,得到的标量如果是负值,则方向相反,如果是正值,则方向相同。向量的点积和向量长度的比值,得到cos(theta)。再结合前面的方向,得到实际的向量c与向量d的夹角,判断角度是否符合要求。
再判断向量d长度是否小于向量a/b的长度。
对游戏开发的理解?关于游戏开发,你知道哪些?当然是指的技术部分

墨鹍科技
题外话,面试送了一个手办,嘿嘿
给了一个场景,问用vector和map哪个好,为什么?我展开把各个知识点都说了一遍,时间复杂度这些。最重要的是把“为什么”回答好,这体现了你对数据结构的理解,而不是只会背。
设计一款卡牌游戏,从数据结构来说说怎么设计?类怎么交互之类的。和游戏系统设计比较像,我就只能硬着头皮答了。
想问什么?
公司的游戏引擎用的是unity和UE4.
人员在200人左右。

多益网络
一面
面向对象的特性?
数据结构中的图有哪些应用?
python的循环引用了解吗?跟PyObject引用计数有关
手撕代码。集合的全排列。要求5~7分钟写完
C++的缺点?
对于加班的看法?996能接受吗?此处你知道应该回答什么,不知道的就算了

涂鸦移动
冒泡排序,基本版的改进
你知道哪些排序算法?基于比较和非比较的
设计一个扫雷游戏。开放题
其他的太简单了,略

(有的题目记不清了,而有的题目又重复了,就没有写。基本上复习资料里面都覆盖到了)

2.经验和复习资料分享
冰冻三尺非一日之寒。如果想学计算机的,早点看经典书籍,上手写代码。秋招至少提前3个月准备,而leetcode刷题和计算机基础这些就得更早准备了。临时抱佛脚基本不可能的,除非你是大神,或者对于工作没有太高要求。
C++:
书籍,《C++ primer》必须看完(当然IO什么的不用看),不然就不用学C++了。《effective C++》《深入理解C++对象模型》《STL 源码剖析》进阶用。有人说《C++ primer plus》不错,我个人不同意。
Google搜索各种问题,stack overflow,cppreference,github等等。
更重要的是,你需要自己跑一跑代码,理解为什么结果是这样子,和其他知识点融会贯通。例如,拷贝构造函数的参数为什么要传引用而不是传值?拷贝构造函数就是为了构造新的对象,结果拷贝构造函数还没写好,你就想传一个对象进来,形参对象的构造你想怎么做?此处就涉及了形参实参,对象拷贝,参数传递方式(值or引用)几个知识点,如果只会其中一个,是没法理解的,背下来也容易忘记。
Python:
书籍,常用的基本都可以吧。《Python核心编程》之类的,看一本就足够了。有条件的,想深入了解Python的,可以看《Python源码剖析》,不过估计没时间看。
Java
《Java核心技术卷1》就OK了,记得买最新版的,卷2不用看。《java编程思想》也可以。然后是《effective java》《深入理解java虚拟机》《java多线程编程核心技术》(我都没看过)。再往后的就没什么可分享的了,因为Java就学到这里。
\***作系统:
书籍。《深入理解计算机系统》绝对值得一看,计算机里里外外都讲了,包括硬件,程序链接过程,存储器层次结构,虚拟内存等等,豆瓣读书指南贴在这里https://book.douban.com/review/5627139/如果你基本上都看懂了,那面试什么的都不是问题。《现代***作系统》同理,偏***作系统的,作为补充。《***作系统概念》等其他的,也还可以。
计算机网络:
《计算机网络》谢希仁。或者《计算机网络:自顶向下方法》,这本是我本科上课用的,个人偏好这本。英文书的话,可以看《计算机网络》Tanenbaum 的,配合网上的课程。
算法:
《算法导论》本科用的,大神可以看。一般推荐看这本《算法:第四版》,图文并茂,Java写的,不过感觉写的啰哩啰嗦的。
数据结构:
《数据结构与算法分析》Weiss的,很有深度,跳表什么的都有,C,C++,Java实现的都有。国内的书有《数据结构》邓俊辉,配合学堂在线的网课,效果很好,我过了一遍。
设计模式:
《大话设计模式》和《Head first设计模式》,我看的是这两本,配图都很有趣。四人帮的那本没看过。
面试:
书籍。首推《剑指Offer》,适合国内的公司面试,很多面试题目都从这里出,包括原题和变形题。另一本《程序员代码面试指南》左程云,也比较适合国内公司。《程序员面试金典》适合准备国外FLAG(好吧,其实我没看过)。《编程之美》就不太适合国内公司的考前应试突击了,不过作为平时的自我提高用的书却是好书。其他的面试书籍一概不推荐,包括《程序员面试宝典》(只能应付一些一般公司的面试吧,话说谁会在面试里面考这些东西,网上一搜一大把,东拼西凑的)之流。
面经,当然是去牛客网啦,搜索一下之前的面经。还有看准网等网站。最后是去搜索引擎里面搜索相关关键字。
其他好东西:
《Linux C编程一站式学习》,好书,大概可以认为是《深入理解计算机系统》的低配版。网上有作者授权发出来的电子版,简直是良心啊。
《程序员的自我修养》着重于讲编译、链接相关的知识,提高用。
C语言编程三剑客。《C和指针》《C专家编程》《C陷阱与缺陷》提高用。指针和数组有什么不同,可以在第一本找到答案。
《黑客与画家》我是当小说看的,讲的一些设计理念有点意思。
《浪潮之巅》讲互联网兴衰的,建议大一、大二就可以看了。站在风口上,猪都可以飞起来。
《数学之美》可以在大二看,讲的通俗易懂,比如 bloom filter,page rank,密码学公钥私钥等等,而且书也***。
《程序员健康指南》如果你想长久的干这一行,就看看吧,反正也不贵。
机械键盘必须买一个,显示屏要2块,硬盘上SSD

不要认为非要最经典的书才是最好的,只有适合自己的才是最好的。此观点也适合找女友。。。

leetcode什么的,请刷上个100题,最好200题,不然手撕代码分分钟跪。(请上leetcode英文站,上面关于某个题目的discuss很多,质量很高。国内版的木有)
经典算法,排序,DFS,二叉树遍历等等要非常熟悉,最好能默写。
复习资料我稍后整理一下,发到~~百度云上~~,大家自取哈。
目前只是放到了CSDN博客上,如果想要markdown版本的,私信我
有什么技术问题,可以私聊我,会的一定回复,太难的就无能为力了,太简单的我就当没看见,请自己寻找解决方案,拒绝做一个伸手党。
有没有人对游戏公司比较了解的,帮忙看看我发的另一个帖子,多谢啦~
欢迎大家留言~

FAQ
1.关于内推
内推当然比不内推好了,找个认识的师兄师姐帮你内推,随时查进度。
内推批次的话,越早越好。




#面经##网易互娱##完美世界##巨人网络##C++工程师##校招##祖龙娱乐#
全部评论
很强
点赞 回复 分享
发布于 2018-10-06 17:36
为啥问你这么多c++呀?图形学问得这么少?
点赞 回复 分享
发布于 2018-10-06 17:49
大佬
点赞 回复 分享
发布于 2018-10-06 18:20
大佬去哪了?网易游戏吗
点赞 回复 分享
发布于 2018-10-06 18:40
已收藏,感谢分享
点赞 回复 分享
发布于 2018-10-07 01:33
大佬一开始刷的leetcode还是剑指offer吖?对于没有刷过的适合先刷哪个呢?
点赞 回复 分享
发布于 2018-10-07 19:58
大佬我现在还有一年多毕业。java和C++想做一个选择。可以给些建议吗?
点赞 回复 分享
发布于 2018-10-10 15:10
老哥,你觉得涂鸦移动怎么样,我也拿他家的offer了,但感觉给的太少了
点赞 回复 分享
发布于 2018-10-18 09:59

相关推荐

点赞 评论 收藏
分享
18 298 评论
分享
牛客网
牛客企业服务