岗位:C++游戏开发
一面
自我介绍
姓名+学校专业+编程语言+学习基础
做过什么C++的项目?
说自己的两个项目
问一下C++的知识,Const关键字
我答了const修饰常量,const修饰指针常量,常量指针,不可修改的特性
面试官补充const修饰函数:两种方法,放在前面和放在后面,对比了一下(具体忘记了,回去慢慢补)
C++面向对象的特定
封装、继承、多态。
封装:使代码模块化
继承:代码复用,实现多态
多态:静态,动态,通过继承实现,讲虚函数,怎么实现重写,析构函数写成虚函数防止内存泄漏的问题。
讲一下多态
静态、动态分类讲,巴拉巴拉
讲一下程序内存管理
答:程序内存可以分为代码段、数据段、BSS、栈、堆
对比一下栈和堆
答:栈是存储局部段、函数的内存,使用的时候要考虑栈溢出的问题,比如递归次数不能过多;堆是动态申请的内存,申请之后得到内存,使用之后要释放,否则会出现内存泄漏
如果我在堆里面一直new申请内存,不删除,会出现什么情况
答:内存泄漏,如果一直申请,出现溢出问题,程序会卡死,异常终止
面试官补充:程序崩溃,
问数据结构,以题目为例,第一个问题:方便查询?
线性表实现,数组
接上一个问题,玩家的分数进行排序,通过一个名词得到玩家信息
玩家用类或者结构体保存,vector排序(最差的)
面试官补充:两种方法,1、用map,2、vector+map(我一开始猜到,但是没说,不是很了解)
玩游戏吗?
玩过很多端游
你有什么问题要问我吗
问评价、实习转正问题、(好像说可以落户??)
时间23分钟左右
二面
二面问的都是操作系统和算法
面试官声音很好听,后悔没录音
基本上都是我的雷区
自我介绍
跟一面一样
windows系统的消息机制
不知道
QTcreator的内存机制
啥玩意,说不知道,但是补充了C++内的程序内存机制(数据段、代码段、BSS、栈、堆)
C++11,C++14、C++17对比,新特性了解吗
。我的内心是崩溃的,还是回答说不了解14,17、可能知道一些11的特性
C++11的STL库的shared_ptr指针
答了共享内存指针,有计数功能…
线程安全
不知道 = =
进程同步如何实现
说不怎么了解,知道死锁
那你说说死锁产生原因
!这个是个坑,我按照书上原封不动地回答了,互斥、占有并等待、不可抢占、循环等待。面试官说我只说出了一个原因,(我感觉也是)我说是书上这样写的,并没有具体实现过,后来还想说点啥,面试官小哥哥又开口了,人还挺好的,我说你问吧
项目看起来都用了多线程,那你项目里面怎么实现,项目用的技术之类的
说了飞机大战用多线程的原因,过程(被面试官问是不是自己做的项目!我说是老师带的)。
决策树和分层机制的对比
不知道什么是分层,说说决策树吧
扯了半天,意思大致就是迭代多次的最优选择,面试官又问到项目上,用了什么AI算法,我说是权值法,面试官说那就是1层啊,不是很AI,噶聊,最后我说我比较笨,就一个个点去判断,如果用多层的话,运行比较慢,面试官又笑了(声音真的很好听丫丫),问我又没有优化方法,最后想说点贪心之类的,也没咋说下去了,说没什么想法…面试官又问了一些算法的东西,有向无向图?见我没回答,换了个问法
用过什么AI算法
这个真的没用过啥啊(可能脑子短路了,本来有两个准备好的项目),面试官问我有没有参加ACM,说我投的是算法工程师!!这还怪我没更新简历,真的太可怕了,赶紧解释了我的意向是后台开发岗。小哥哥说刚刚问了客户端的问题,现在我们问问服务器吧,我噶笑,你问吧(反正我也不知道)
sql数据库
不知道,知道mysql
那你说说mysql的内部结构
答不懂,只知道简单的查询(面试官好像一直在笑)
openGL了解吗
不了解,听说过很多次,知道有加速功能(凉凉)
很多问题忘记了,而且有些问的东西有的都没听过
总结:
- 后悔没有录音,以后可能没有机会了
- 这两天太颓废了,忘记学习,要反思
- 游戏开发要求比较高,先打基础
- 一次很好的学习经验、也提醒我要注重自己的全面发展
- 算法能力很重要!