字节游戏广州工作室UGC实习面经(凉经

基础部分

自我介绍;拷打项目理解;(25min)

深挖了很多技术点,每个技术点都在向更深的方向去问;

例如我写过一个对象池,面试官会问如果怎么这么样会怎么去解决,可以怎么去优化;

C++部分

  • 说一说指针和引用的区别; 回答了八股的基本不同,又从汇编底层解释了一下,无后续;
  • 知道内存对齐吗,结构体内存对齐是怎么样的,举了几个例子; 基本就是围绕char,int,double这几个类型来回排序组合,char在前int在后,int在前char在后,两个char一个int,等等,最后老师也不自信了,不在深究;
  • mallocnew的区别, delete怎么获取应该释放的大小的; 经典问题,库函数和关键字(重载)的区别,头部保存大小用于判断;
  • 智能指针了解多少,介绍一下,分别说明对应的作用,shared_ptr线程安全吗,哪里线程不安全,怎么解决; 分别解释3个智能指针,前面是经典的八股,三种智能指针。提到了线程问题和循环引用问题。shared_ptr线程不安全是因为引用计数的原因,需要进行原子操作;
  • 返回局部变量的返回值,该怎么解决; C++特性返回值优化(RVO),但是并不太懂,只是说了一下;也可以考虑使用引用传递;
  • 知道RAII吗,RAII的原理是什么,RAII的好处是什么,RAII的实现是怎么样的; 核心思想是有用用,无用回收,RAII的实现是通过构造函数和析构函数来实现的,RAII的好处是可以避免资源泄漏,shared_ptr就是一个RAII的实现;
  • 了解vector吗,vector的底层实现是怎么样的,vector的扩容是怎么样的,如果扩容了怎么办,迭代器看过源码吗?如何实现的?能补充迭代器吗? 动态数组,通过哨兵标记,哨兵便是"迭代器",vector的扩容是通过realloc来实现的,扩容过程中,哨兵均会发生变化,进而迭代器失效;
  • 现在有一个情况,要将很大的一组数据放到vector里,怎么办,怎么去解决这个问题;将两个数组合并,怎么去解决这个问题;memcpymemmove的区别是什么,源码实现是怎么样的; 最初直接完美转发,后来又说了一下vector的扩容问题;memcpy和memmove大半年不用一次,没记起来。
  • 除了vector还了解哪些容器 回答了List, map, unordered_map, set, unordered_set;
  • 你提到了mapunordered_mapmapunordered_map的区别是什么,底层实现是怎么样的,map的底层实现是什么,红黑树是怎么样的,你能写红黑树吗; 区别是一个哈希一个红黑树,unorderd_map是哈希表,核心是哈希函数。map的底层实现是红黑树,红黑树是一种自平衡二叉树; 直接懵圈,显然不能写红黑树,但是简单说了下性质和基本操作;
  • 说一说cpp的编译过程,分别介绍一下。动态链接和静态链接区别是什么,带来什么影响,动态链接的过程是怎么样的,底层原理和代码知道吗?假如动态库里有一个全局变量和静态变量,会有什么问题,假如本地有一个全局变量,会怎么样。 预处理,编译,汇编,链接。动态链接是在运行时链接,静态链接是在编译时链接。静态链接会将所需内容嵌入。动态链接的过程是先加载动态库,然后在运行时链接。 源码不了解,动态链接的那个全局变量问题,不太懂,但是说了一下大概的猜想;

C#部分

  • 说一说值类型和引用类型的区别; 没什么好说的,但是一开始理解错了,悲;
  • 事件和委托底层区别是什么,看过事件的源码吗?能实现事件吗? 经典的内容,分享了下自己的理解,源码没看过,悲;

算法部分

  • 很经典的K个一组链表翻转; 是OI题,好久没写输入输出了,然后用多空间写的,没写原地的那种,毕竟好久没写输入输出了,不敢冒险;
#牛客创作赏金赛##面试中的破防瞬间#
全部评论

相关推荐

一面:自我介绍面试分为Unity相关知识:1.对Unity了解多少?2.Unity开发有多久的经验?3.Unity的生命周期,及每个部分的作用4.如何控制脚本的执行顺序?5.为什么物理效果放到FixedUpdate里面去运行?6.动画状态机中有哪些组件,以及如何使用7.如何去实现分层的动画效果?8.遮罩有哪些属性?9.用动画机实现八方向的移动10.物理碰撞有哪些接口11.rigedBody需要怎么挂才能生效?C#相关:1.GC的简要原理以及如何使用?2.怎么防止过渡的GC产生?3.怎么去设计一个对象池?(用具体的程序逻辑、数据结构、对外提供哪些接口)项目经历:1.在3D空间下怎么描述点A到点B做的矩阵变换2.点积和叉乘的几何意义3.摄像机的右前方有个敌人,怎么用点积和叉乘去计算敌人和摄像机的垂直距离4.角色移动的移动方程怎么写?5.Unity有多少种方式去实现角色移动?6.不使用方法,手动实现角色的移动(口述公式)7.加载配置文件的流程(数据持久化)数据结构:1.链表和数组的应用与区别2.双向链表与循环链表的原理1.指针与指针数组的应用与区别游戏经历:1.平时学习与如何去驱动自己的进步2.平时有去破解游戏查看源码吗?3.有去复刻游戏的玩法吗(举个例子)无二面北京水泠喵主问项目和技术没问八股会shader,lua的可以投一下【内推链接】【内推码】NTA7ULy(内推简历优先筛选)「关于真有趣」https://join.xmfunny.com/真有趣(So Funny)成立于 2012 年,秉承着 “创作长期有效的快乐,赢得百万人热爱” 的愿景驱动,致力于为全球用户提供健康有趣的游戏体验。目前,已推出《香肠派对》、《不休的乌拉拉》、《仙侠道》等 9 款游戏,累计服务超 2 亿用户。「在这里,你的日常体验是」◇  1 对 1 导师,伴你丝滑融入职场生活◇  培训、沙龙、技术月刊等多种成长补给,助你快速成长◇  简单纯粹的工作氛围,贴心的福利关怀,让你健康快乐米哈游地工作与生活「校招岗位」初级Unity3D工程师、Unity3D工程师(不休的乌拉拉)、服务端工程师、系统策划(不休的乌拉拉)、游戏设计师(萌宠肉鸽)、玩法策划(夺金射击)、技术美术(动画向)、原画设计师、场景原画设计师、AIGC设计师、初级数据分析师(香肠派对)「如何加入真有趣」◇  招聘对象:2025 届毕业生◇  工作地点:厦门【内推链接】https://join.xmfunny.com/【内推码】NTA7ULy(内推简历优先筛选)投递的uu留下姓名和岗位~
真有趣游戏
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
3 10 评论
分享
牛客网
牛客企业服务