游戏开发实习生的面试总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z_dmsd/article/details/72631943

一:背景

	大三,都面临着找实习的问题,找实习可以说黄金时期就在3-4月,错过这个点,实习公司质量下降,数量下降,楼主也加入了
今年的实习生大军-_-,主要投递的公司是国内知名的游戏开发公司,例如腾讯网易等,经过不懈的努力,也有幸成功拿到了几个
offer,拿到之后放松了一段时间,有必要总结总结然后进入继续的自我提升中。楼主投递岗位基本都是C++游戏开发工程师或者
C++相关岗位,所以下面的内容基本是以C++为主。

二:面试问题总结

C++基础:

	(1)C++虚函数的实现机制,虚函数的原理
		基本每次面试都会被问到,可以说是必需要透彻的理解掌握的知识点,学习资料推荐:C++中虚函数的实现机制C++
类的内存分布详细解析,这两篇博客看完可以C++虚函数的实现有一个基本清晰的理解,看书的话更花时间,但是更有一个思考
,沉淀的过程,推荐书籍:《C++ Primer Plus (第六版)》和《Effective C++》,还想继深入理解的同学可以阅读《深度探
C++对象模型》
	(2)构造函数在有虚函数的继承链中的调用过程,普通函数在有虚函数的继承链中的调用过程
		这个地方坑比较多,也比较复杂,需要考虑父类声明为virtual 和父类不是virtual但是子类是virtual的情况,以及多重继
承和继承了多代后函数的调用过程,!!!注意这个地方笔试经常考,而且理解不透彻的话会花很长的时间而且做不对,需要自
己进行实验
	(3)模版,模版的显式实例化和显式具体化,模版的特化和全特化
		这部分也需要有一定的掌握,毕竟模版还是挺重要的一部分,而这几个概念又容易搞混,并且不同概念的实现又不一样,
学习资料推荐:《C++ Primer Plus (第六版)》《Effective C++》相关章节,另,博客:之前看的时候忘记收藏了,自己百度
相关关键字把-_-#
	(4)指针和引用的区别
		这里也是常问的问题之一,不搞清楚区别在使用的时候就会走火入魔,这里不展开介绍,推荐博客:C++指针和引用的
区别和联系,这里注意到链接中区别的第四点是有int*  const p而没有 int & const p  的意思
	(5)C++11的新特性,例如lambda表达式,右值引用等
		自行百度关键字C++11新特性即可,有兴趣的也可以去看看C++14和C++17等;
	(6)宏的展开
		这个问题在面试中没有碰到过,但是笔试过程中经常考到,需要注意的是,宏的展开的时期是在预编译时期,展开方式是
简单的字符串替换,或者是选择
	(7)内存释放问题,浅复制和深复制,delete,delete[],delete后为什么要把指针赋值为NULL
		这个前面几点在《Effective C++ 》中有详细介绍,为什么要赋值为null则是,delete只是告诉操作系统这块内存可以回
收了,但是内存依然在这里,如果程序再一次使
用了delete的指针,那么依然会指向这块内存,很有可能导致程序崩溃;delete和delete[]的区别
	(8)static,const的作用,这个楼主没有被问到,但是依然是C++的常见问题之一
		C++中static和const的作用可以看看
	(9)C++和C的区别,可以参考《Effective C++》中条款01种对C++的分块进行讲解
	(10)...待续

 
 

STL:

这部分推荐看《STL源码分析》,不用全看,看原理介绍部分即可,毕竟不是没个人都对STL的源码感兴趣的 (1)迭代器失效的情形 (2)vector使用过程中的问题,一般是问vector内存重分配相关的问题 (3)set和map的相同点和不同点 (4)自行设计一个动态数组,即vector
	(5)...待续

数据结构和算法:

	(1)算法中除了直接让你做题之外,常见排序算法必需熟练掌握,冒泡,插入,选择,快排,shell排序,桶排序,基数排序
		算法可以刷刷leetcode和牛客网上的公司真题。。虽然我没去刷,但是感觉自己算法比较薄弱,还是决定要去刷题的
	(2)堆和栈的区别和联系,堆和栈的相互实现,即用堆实现栈,用栈实现堆
	(3)二叉搜索树的实现,插入删除,二叉搜索树的概念,平衡二叉树的概念,红黑树的概念,最好能实现,不能实现的话原理
一定要掌握
	(4)链表的反转,二叉树的左右节点反转
	(5)hash表的深入理解
	(6)...待续

设计模式:

	能知道常用的几种设计模式,并能做一个简单的介绍,例如适配器模式,单例模式,工厂模式等,其中可能还需要考虑线程安
全,需要对C++中的相关原语有所了解,

计算机网络:

	(1)TCP,TCP3次握手,4次挥手,状态转换过程;拥塞控制原理,启动过程,恢复过程;
		有时间就看看《计算机网络》,没时间就看看网上的博客,大多都比较详细的介绍了这部分
	(2)UDP,UDP优点缺点,和TCP的区别?什么时候用UDP什么时候用TCP?使用UDP,TCP的应用层协议有哪些?什么场
用UDP,什么场景用TCP?
	(3)网络编程的socket接口有一定的了解,socket(),bind(),send()..等函数,可以看看《Unix网络编程》
	(4)HTTP和FTP的原理和区别,以及HTTP的一些回复代码的含义
	(5)...待续

操作系统:
	(1)进程和线程的区别联系,这个一定要非常清晰的理解,不仅面试需要问到,平时对自己多线程编程也需要加深理解
	(2)进程间通信和和线程间通信的方式
		建议详细看看《现代操作系统》中的进程这一章;
	(3)...待续

 
 

三,下面总结一些建议看的书籍:

C++类:《Effective C++》,有一定的C++基础,并且想提升对C++的理解的同学必看      《C++ primer plus(第六版)》,有基本的C++知识,当然没有也可以看,但是会比较累,同时有比较充裕的时间
的同学必看,看完基本对C++中的语法,以及一些细节原理有一个清晰的理解,缺点就是太详细的,所以需要比较认真,要花比较
长的时间进行理解;
		    
	计算机网络:《计算机网络》,《Unix网络编程》需要花一定的时间,如果对网络编程不是很感兴趣,同时和后台,网络编程
关系不大的同学可挑里面的部分章节看,但是有时间了建议通读一遍加深理解,前一本偏原理,后一本原理和编程相结合

	操作系统:《现代操作系统》,进程和线程部分必看,然后有时间建议看看其他章节加上对操作系统的理解
	设计模式:这个看书看完就忘了,建议掌握常见的几种并且编程实验一下,其他的慢慢看,同时在编程中努力用到
	数据结构和算法+STL:《数据结构和算法 C++版》,《STL源码分析》,放在一起是因为STL中也是数据结构的运用,并且源
码分析中对各种数据结构有一个比较清晰的讲解


	另外,如果没有太多时间进行刷题,复习基础,可以看看《剑指offer》,里面对一些常见的面试问题有所介绍,但是如果有时
还是以系统的复习为重,因为系统的复习不单单应对面试,也能提升自己对相关知识点的掌握程度,加深理解







猜你喜欢

转载自blog.csdn.net/z_dmsd/article/details/72631943
今日推荐