转载yl,yzl大神的面经,顺便自己复习一下专业课的内容

操作系统相关: 什么是进程, 什么是线程。它们之间的区别和联系。

进程管理内存资源+运行过程, 线程只管理运行过程, 线程要在进程提供的资源基础上运行。

设计模式相关: 单例模式及其应用

  这个网上随便找一篇介绍单例模式的文章都有详细地介绍。我就从基本的单例模式到线程安全的单例模式, 用智能指针管理的单例等大概说了说。关于应用, 我就举了 《Effective C++》中的一个例子。定义在两个文件下的全局变量A, B,然后A 需要用 B 来初始化, 但是由于不知道 B 是否在 A 初始化时, 已经初始化了。因此我们可以用单例来封装一下, 从而保证了其 B 在 A 之前初始化。

数据结构相关: 判断一个链表是否有环

  这个也是经典问题了。一个快指针, 一个慢指针, 然后相遇就有环, 不相遇就没环。

bool hasCircle(ListNode* pHead)

{   ListNode* pFaster = pHead;

ListNode* pSlower = pHead;

do{

// 快指针走两步

if(pFaster->next != NULL)

pFaster = pFaster->next->next;

// 慢指针走一步

pSlower = pSlower->next;   }

while(pFaster != NULL && pSlower != NULL && pFaster != pSlower);

if(pFaster == NULL || pSlower == NULL)

return false;

return true;

}

证明: 假设存在环, 且环的周期(环上的节点数)为 T, 环之前有 k 个节点, 则, 第 2T+k 个节点和第 T+k 个节点一定是同一个节点, 否则就会走到空节点。由此可以得到该链表是否有环。

STL 源码中的 hash 表的实现

  将数据实际存放在与 hash 表存储单元相链接的链表中,而不是 hash 的存储单元中。 当产生冲突的时候,将两个数据都链接在同一 hash 存储单元保存的链表中。然后当插入元素的个数和表的大小一样时, 就让表的大小扩大为比最接近之前大小的两倍的质数大小。

写一个快排 
* 这也是老生常谈的问题了。

  //[beg, end)void QuickSort(vector<int>& datas, int beg, int end){ if(beg+1 >= end) return; int i = beg, j = end - 1; while(i < j){ while(i < j && datas[i] <= datas[beg]) ++i; while(i < j && datas[j] > datas[beg]) --j; if(i < j) swap(datas[i], datas[j]); ++i, --j; } swap(datas[beg], datas[j]); QuickSort(datas, beg, j); QuickSort(datas, j+1, end); }

(3) 进程和线程的区别

  和前面去哪儿网的面试回答类似。

(4) 介绍一下 STL 源码的内容。

  随便说了说。

(5) vector 的实现

  先申请一定的大小的数组, 当数组填满之后,另外申请一块原数组两倍大的新数组, 然后把原数组的数据拷贝到新数组, 最后释放原数组的大小。 详情参考 《STL源码剖析(侯捷)》。

(6) C++ 与 C 的区别。

C++ 包含 C 几乎全部功能。

C++ 比 C 多面向对象语言部分。

C++ 比 C 多泛型编程部分。

C++ 比 C 多 STL 部分。详情参考 《Effective C++》

在C++中的 const 和 static 用法。 
这个比较多, 详细的可以自己在网上找找。

const 关键字: 用在局部变量上, 用在类成员变量上, 用在类成员函数后面…

static 关键字: 用在全局变量上, 用在局部变量上,用在类成员变量上, 用在类成员函数上…

class A {}; : sizeof(A) = 1;

class A { virtual Fun(){} }; : sizeof(A) = 4(32位机器)/8(64位机器);

class A { static int a; }; : sizeof(A) = 1;

class A { int a; }; : sizeof(A) = 4;

class A { static int a; int b; }; : sizeof(A) = 4;

重载和重写的区别

  重载要求相同的函数名, 不同的参数列表。仅返回值不同的函数不能重载。

  重写要求父类是虚函数, 子类改写其函数体。要求函数签名一模一样。

完美面试问题:

1.C++从源代码到可执行文件经过了哪些过程? 
2.动态链接库和静态链接库的区别? 
3.函数传参有几种方式?传引用和指针有什么区别呢? 
4.删除单链表的某个节点?拓展:不允许判断头节点。 
8.ISO网络模型有几层?每层是什么?分别作用? 
9.TCP三次握手内容?四次挥手内容?TIME_WAIT状态的作用? 
10.谈谈你对OO的理解? 
11.设计模式了解过吗?举例几个? 
12.手写一个C++单例Singleton模式? 
13.知道什么是控制反转吗?简单讲一下? 
14.如何只用减法实现乘法? 
15.只遍历一遍找到数组中次大值。

360面试问题:

一面 30min

1.拷贝构造函数在什么时候会被调用? 
2.i++和++i的区别 
3.模板的特化和偏特化? 
4.解释一下函数对象? 
5.模板有什么好处,有什么缺点? 
6.你了解哪些智能指针,都各有什么用处? 
7.谈谈什么是贪心,什么是动态规划,区别? 
8.求一个数组的最大子区间和 
9.什么是虚拟内存,什么是物理内存 
10.windows下的消息机制 
11.多线程下的消息同步 
12.多线程中的资源如何管理,写过线程池吗?

二面 30min

1.写一个类的构造函数、拷贝构造函数、析构函数、赋值运算符。 
2.基类析构函数是否设置为虚函数问题 
3.在继承体系下析构函数顺序 
4.C++的多态实现?(虚函数表那一套…) 
5.项目相关问题。 
6.如何编程,计算类似于1*3+(5-3)/2-4这样的表达式的值 
7.谈谈你了解的最短路径算法 
8.如何最快求2的8次方。

腾讯面试问题:

一面 52min

要求用数组或者vector实现循环队列,接口有,pop,push,size,empty,full。 
这个循环队列在多线程下会有哪些问题?什么情况下会发生这些问题?如何解决? 
互斥锁为什么能避免这些问题的发生? 
map和hashmap的底层实现?对比红黑树和hash表? 
虚函数机制。 
虚函数表相关的问题,存储位置、表大小等等。 
虚函数机制带来的开销有哪些? 
操作系统在运行一个程序背后会有哪些流程? 
进程状态,调度转换等等。 
在程序中栈的作用,函数调用中栈过程 
项目相关问题 
一个游戏在你看来可以分为哪些模块? 
在这些模块中,设计模式又可以做哪些的应用呢? 
固定渲染管线中有哪些比较重要的变换? 
投影变换如何实现的?

二面 27min

一来就是一道数学题,两个圆分别位于(P1,P2)速度为(V1,V2),半径为(R1,R2)求相遇时间。 
你玩哪些游戏? 
在一个游戏中如果你感觉到不流畅可能是哪些原因造成的? 
在没有任何测量工具下,在游戏中如何判断是由于网络原因还是性能原因(肯定面试官不会让看Ping和FPS值的)? 
你了解哪些游戏引擎?你最熟悉哪个? 
你说说你最了解的引擎的优点和缺点? 
你最近在学哪些技术? 
为什么你会学C++11这些东西而不是学习unity相关更深入的知识呢? 
你觉得你的技术薄弱点在哪些地方?

网易雷火面试题目:

一面 45min

1.C++虚函数机制(虚函数表那一套) 
2.C++析构函数可以申明为虚函数吗?构造函数可以申明为虚函数吗? 
3.c++static的作用 
4.项目,主要讨论之前我做的一个小游戏用的战斗框架FSM+GOAP。 
5.谈谈你对MVC的理解 
6.GOAP和FSM或者BT的区别?好处?坏处? 
7.STL的map的实现 
8.如果让你自己做一个俄罗斯方块小游戏,你会如何设计 
9.如果让你实现word里面的撤销功能,你会如何设计 
10.你所知道的排序算法、其时间复杂度和稳定性? 
11.可以实习时间.. 
12.平时玩的游戏.. 
13.你希望做PC端游还是移动端手游?

二面 40min

1.进程有哪些调度算法,算法流程,各自的优缺点? 
2.死锁 
3.为什么要进行字节对齐? 
4.手写代码strncpy,从源字符串拷贝n个字符到目标字符串(char* s1,char* s2,size_t n) 
5.以上题目,如果考虑s1,s2区间有冲突怎么办?如果不开辟新内存怎么解决这个问题? 
6.虚函数相关问题,以及带来的开销? 
7.FSM的相关问题,结合项目相关的一些问题。 
8.std::map的实现 
9.std::sort的实现 
10.如何判断两个轴平行的矩形是否相交? 
11.在游戏中,假如在一个很大的游戏地图上,有障碍,如何实现近似的最短路径,也就是实现游戏中的自动寻路的效果。可以预处理,但是在每次寻路要求寻找结果的算法尽可能的快! 
12.使用过脚本语言吗? 
13.了解过渲染管线相关知识吗?

以上内容转载自:天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)、

2017年暑假实习面经: 去哪儿网(一面, 二面, HR面, Offer), 腾讯IEG(一面, GG...), 百度(一面, 二面, 三面, offer)

转载于:https://www.cnblogs.com/gcter/p/7383687.html

面试相关-转载-well,yzl——持续更新相关推荐

  1. 飞腾CPU相关寄存器描述(持续更新)

    飞腾CPU相关寄存器描述(持续更新) SPSel堆栈寄存器选择寄存器 EL1/2/3都可以读写 32位长度. SP, bit[0], 控制堆栈寄存器的选择. 0-->CPU无论处于什么权限级,堆 ...

  2. Cadence Orcad Allegro Sigrity相关软件资源下载分享 持续更新 敬请关注

    Cadence Orcad Allegro Sigrity相关软件资源下载分享 持续更新 敬请关注: https://www.mr-wu.cn/cadence-orcad-allegro-resour ...

  3. 2019最新Web前端经典面试试题及答案,持续更新

    Ps: 文章所述内容,来源渠道平时积累以及网上摘录.按日期持续更新...目录: 转载请注明来源. -2018/6/8   1.position的定位方式 2.描述下从输入URL到整个网页加载完毕及显示 ...

  4. 全部文章分类与整理(找工作+面试+资源分享),持续更新

    阅读本文大概需要 6 分钟 由于本公众号发表的文章有点多,并且发的文章也不是一个专题一个专题这样发的,所以难免有读者过来找我吐槽说,想搜索历史的文章,不太方便. 鉴于此,为了大家阅读文章方便,我整理了 ...

  5. Android学习相关文章汇总(持续更新,文章均来自网络,转侵删)

    本文主要是记录在使用Android踩坑时的一些有用的文章.以及Android进阶文章等相关链接的记录,并且附带一些简单的备注等.主要用来备忘.方便日后查看.会持续更新 1. AS相关问题 项目第一次g ...

  6. Kafka相关面试真题整理( 持续更新... ... )

    Kafka相关面试真题整理 1. 架构模型(晟茂科技/2020/11) 2. 数据一致性问题(producer.broker.consumer是如何保证的)(晟茂科技/2020/11) 3. 消费模式 ...

  7. 2022作为面试官的我(持续更新...)

    Java 1.如何临时暂停正在运行的程序[考察,wait().await().sleep().yield.join对比.区别] 拓展: 为什么java wait/notify 必须与synchroni ...

  8. 计算机相关书籍推荐(持续更新)

    学计算机也有几年了,眼看明年就要毕业,在这里总结一下我看过的书,并推荐一些我认为好的书,还有一些是我听说好的但没看过的,也写在这里,对于下面的书,如果看过的我会按自己的读后感打一个分和一些评价,评分及 ...

  9. 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)

    技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...

  10. 2020年 近期出去面试Java的总结(持续更新)

    近期出去面试Java的总结 一.Java基础 1.Java的类加载顺序 对于有继承关系的加载顺序 2.Java的创建对象的几种方式 1.使用new关键字 2.使用反射机制 1)使用Class类的new ...

最新文章

  1. Python3中with用法
  2. php顺序、二分查找
  3. VLC RTP Over TCP
  4. 前端一HTML:七:css初步认识
  5. VTK:可视化之Morph3D
  6. 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值
  7. Storm 02_Storm 计算模型
  8. 数据库慢,原来与数据库无关
  9. div方框弯曲边样式_使用弯曲样式编辑文本
  10. linux 消息队列_Linux进程间通信第六讲 标准IPC之消息队列
  11. InnoDB原理篇:Change Buffer是如何提升索引性能的?
  12. Codeforces976E Well played! 【贪心】
  13. 工业大数据分析平台有哪些价值
  14. QCA-WIFI无线芯片介绍
  15. 创意设计:带自动喂鱼的鱼缸自动控制系统设计与制作 单片机程序 原理图 源代码
  16. SAP 用户菜单如何更直观整洁
  17. 手机dlna到linux,linux dlna服务器
  18. Charles安装证书
  19. Kodu程序的菜单---Kodu少儿编程第七天
  20. 关于中层管理者任务传递方式的思考

热门文章

  1. 腾讯云联手腾讯安全玄武实验室,提供「应用克隆」漏洞免费检测服务
  2. 什么是工业物联网?与工业互联网有什么区别
  3. Denoise_bayerdomain
  4. 鉴权html5服务器,搭建web之 服务器鉴权失败,请确认服务器已启用密码鉴权并且账号密码正确?...
  5. 阿里云物联网平台如何进行云产品流转
  6. 马斯洛提出动机理论_马斯洛的需要层次理论
  7. android 模拟器加速,android开发怎么设置加速模拟器如真机运行
  8. 51单片机之定时器/计数器0中断程序
  9. 【第3讲】 噪声滤波器的原理
  10. 数据结构与算法之迷宫回溯