当前位置: 首页 > 面试经验 >

剑心互娱开发工程师一面面经

优质
小牛编辑
115浏览
2023-03-28

剑心互娱开发工程师一面面经

新鲜出炉的面经,面试官迟到了几分钟,不会是早餐没吃完吧(bushi),这次居然没有录音,吐了,每次录音都会有幺蛾子。

  1. 先自我介绍一下

  2. 为什么投游戏公司

  3. 那先问一下基础的吧,遍历相同长度的数组和链表哪个更快?为什么?

  • 答:和CPU缓存有关,数组是内存连续的所以CPU缓存命中率会高,所以遍历数组会更快。
  • 问:为什么遍历数组,CPU缓存命中率会高?
  • 答:CPU缓存机制具体我不太了解,我知道一般内存是以页位单位,也就是4k,如果是内存连续的话,读取一页就会包含很多数据,这一页会被CPU缓存下来。那么下次在读取就可以命中缓存。而链表CPU不连续,不容易命中缓存。
  1. 现在有5个线程,这5个线程运行效率是5个线程基准效率,那我现在换成10个线程,这10个线程运行效率低于10个线程基准效率,这是为什么?
  • 答:可能和线程上下文有关、或者是临界资源资源竞争有关。
  • 问:能详细说说资源竞争嘛?
  • 答:(拿多线程累加问题举例子)
  • 问:那为什么5个线程的运行效率是5个线程的基准效率呢?
  • 答:和CPU核心数有关,可能这台主机有5个CPU核心数。
  1. 结构体内存对齐规则?32位?64位?(我举了好多例子- -)
  • 答:(应该是按照前一个变量和当前变量的最高字节数对齐--,然后最大对齐字节数不能超过操作系统位数,不知道是不是,怕说错,举了很多例子)
  • 问:假如有一个结构体,第一个是char,第二个是一个sizeof为1M的资源,那这个结构体有多大?
  • 答:1M多4字节。
  • 为什么要有内存对齐的一个操作呢?
  • 答:应该是方便CPU寄存器读取。
  1. 为什么不能无限递归?
  • 答:栈的空间大小是有限的,我查了一下我的linux栈大小是8M,如果无限递归会开辟新的栈空间,会导致栈溢出。
  • 问:解决办法是什么?
  • 答:可以优化一下递归深度,如果可以的话最好能把递归改成迭代,实在不行就调整一下栈的空间大小。
  • 问:怎么调整栈大小?
  • 答:不会。。我没操作过。
  1. 能谈一下调用函数的底层实现嘛?
  • 答:底层应该会有个符号,我们可以根据名字调用这个符号,就可以拿到一个函数入口,之后我们需要保存旧的栈的现场信息,然后开辟一个新的栈,同时将CPU的PC指针进行切换。
  • 问:那传参是怎么实现的?
  • 答:不会(突然不记得了)
  1. 执行一个函数,栈内存一般储存那些东西?
    (现在复盘发现他在引导我上一个问题,hhh传参是储存在新的栈空间的)
  • 答:不会,只说了会储存变量、函数应该不会储存在栈空间。(其实一个函数栈里面还储存了回调函数、形参之类的)

————————————
C++相关,常规八股。

  1. 说一下虚函数,为什么要有虚函数?

  2. 虚函数要注意的地方有哪些?

  3. 构造函数可以是虚函数嘛?为什么?

  4. 析构函数可以是虚函数嘛?一定要是虚函数吗?为什么?不是虚函数会有什么问题?

反问

  1. 咱们公司是对底层系统知识要求比较高吗?
  • 没有啊我问的都是基础
  1. 我看我投递的是服务端岗位嘛。
  • 答:我们不分服务端客户端。
  • 问:客户端上手不是很容易吧hhh
  • 答:不难啊
  1. 咱们公司培养体系是怎样的?
  • 有导师带。具体说了啥忘了。。
  1. 你对我的表现能做个评价嘛?或者对我的表现能有什么建议嘛?
  • 评价还可以,但是结果要讨论之后才能给你。

总结

计组知识都忘关了--。。感觉疯狂问计组,我大二学的计组都忘光了。。。
之前面了一家公司也985,感觉没得挑哈哈哈。
许愿二面。

一周后

收到感谢信,凉了。

#面经##秋招##23届秋招笔面经##剑心互娱#
 类似资料: