字节跳动 游戏开发 c++岗位面经

2021-01-13 11:32

阅读:1079

标签:访问   域名   其他   随机   另一个   荣耀   会话   赋值函数   并且   

一共三面+hr面

 

一面:

  问了我笔试题没做出来的几题有什么思路,还问了我spfa的复杂度,其实是O(VE) 而我答了O(kE)。。。 应该无伤大雅

  OSI七层模型,具体都是做什么工作的: 物理层、链路层、网络层、传输层、会话层、表示层、应用层

  tcp、udp是做什么的: 是传输协议

  tcp、udp有什么区别: tcp是面向传输、稳定的,udp是面向非传输、不稳定、快速的

  为什么说tcp是可靠的?: tcp有握手挥手机制、超时重传机制、滑动窗口机制、拥塞控制机制

  具体解释上述4个机制: 略

  解释内存对齐: c++ 结构体的机制,例如char a;int b;char c;按4字节对齐,共占12个字节

  为什么要有内存对齐:并不是所有的机器都可以读取非内存对齐的代码和数据,因此内存对齐是为了保证兼容性

  post和get区别: 都是http的传输方式,get可以直接在url中携带数据,比较不安全;post不能在url携带数据,较安全;并且get方式有幂等性(幂等性就是做n次get请求,结果应该是和做1次get请求等价的)

  B、C继承自A,D由B、C集成而来,请问D有几个虚函数表?:D本身有来自B和C的虚函数表,D自己有虚函数表的话,会放到第一个虚函数表里,应该是2个(并不确定)

  解释虚继承: 上述的情况会出现B、C里都有A的虚函数表的备份,导致D中同时拥有了2份A的虚函数表,虚继承就是声明,共享这个类的继承父类,使得B、C中的A虚函数表为同一份,这样在D中就不会有冗余的A虚函数表(虽然按照面向对象的思想并不推荐这么编写类关系)

  子网掩码的作用: 划分子网

  请随便说出一个ip地址: 胡扯了一个192.168.x.x

  c++的多态? : 分为2类,静态多态和动态多态,静态多态由 重载和模板类实现,动态多态由虚函数继承实现。

  一个空的类,系统会默认给他什么函数?:六个,空的构造函数,空的析构函数,赋值函数,同类构造函数,取址函数,常取值函数

  析构函数具体是做什么的: 并不清楚,私以为是释放内存,但是被质疑了

  一次完整的http请求经过了什么?: 从域名解析,浏览器dns开始、本地dns、dns服务器,找到ip地址,发送http请求,得到发送来的html网页,浏览器解析,得到画面

  tcp握手为什么不是2次也不是4次而是3次: 2次会导致,A发了一个包,过了很久到达B,B以为这是握手的第一次发包,因此开始准备传输,而A并没有准备建立连接,因此会浪费B的资源。不是4次的原因: 挥手是4次因为2、3次之间有数据传输,握手过程类似但是没有数据传输过程,因此2、3次可以合并,因此最终为3次。

  手写代码: 无

 

二面:

  问了一些其他内容

  你认为做游戏服务器需要掌握哪些技术?: 额

  你认为例如王者荣耀这样的游戏,哪些事情是由服务器完成的?

  linux用的多吗? 查看内存的指令?: top

  数据库有哪些引擎?: InnoDB、MyISAM,区别? 前者支持事务,后者不支持;前者是聚集索引,后者是非聚集索引。

  B树和B+树的区别? 后者数据都在叶子节点而前者不是;并且b+树的所有叶子节点可以形成链表,操作更快

  索引的结构:B+树

  数组和链表的区别?:数组的存储是连续的,支持随机访问,链表可以是不连续的,不支持随机访问;数组的查找操作更快,链表的修改、删除、插入操作更快。

  TCP、UDP区别: 略

  TCP怎么保证可靠传输: 略

  TIME_WAIT是为了什么: 为了防止数据没有传输完毕,经过TIME_WAIT时间后,可以确定服务端没有数据要发送,可以安全结束传输。

  怎么在链表里找倒数第n个元素: 2个指针,一个先走n,然后一起走,前面的到头了,后面的就是倒数第n个

  双向链表怎么做快速排序: 掌握快速排序原理即可实现

  然后问了怎么在一个数组里,找2数之和为t,允许排序: 先排序,然后指针一前一后,一个推,另一个跟着推,保证两数之和小于等于t,出现2数之和为t停止,复杂度O(n)

  tcp怎么同时中断连接: 不会

  有什么要问的问题吗?:请问实习生需要掌握什么技术呢? linux开发技术、c++技术

 

三面:

  有保研的打算吗: 没有,因为学分绩不够,想选择直接就业

  那么为什么成绩不够保研呢,是不是没有好好学习: 额,因为我们院会把 英语、体育等课程记录学分绩,并且我并不希望重修来刷学分绩

  其实说到底还是为什么没有好好读书呢: 额,有点压力面那味了,很尴尬,只能把话题引到我院的课程安排上了: 重要课程在大三,决定学分绩的课程在大一大二,大三的努力不支持我保研。

  写个非递归的先序遍历吧: 你怎么这么熟练,是不是事先准备过了

  写个strcat吧: 写出来了

  写个链表删除吧: 写出来了

  

  额,讲了一波高中NOI经历,然后面试官了解了一下高中的经历,还问了一下有参加哪些比赛

  课外有过哪些代码项目吗: 比较尴尬,基本没有

  

hr面:

  对游戏的看法

  几号可以入职呢

  

个人补充:

  虚函数是关键

  举几个例题:

  B继承自A,他们有同一个虚函数,什么情况下,A类会调用到B类的虚函数,B类又要怎么用到A类的虚函数呢?

  为什么析构函数一定是虚函数?

  为什么构造函数不是虚函数?

  

复习c++和操作系统、网络的网站: 牛客网

https://www.nowcoder.com/tutorial/93

 

  

  

 

字节跳动 游戏开发 c++岗位面经

标签:访问   域名   其他   随机   另一个   荣耀   会话   赋值函数   并且   

原文地址:https://www.cnblogs.com/qzqzgfy/p/12945498.html


评论


亲,登录后才可以留言!