跳转至

待完善

  • 帧同步、状态同步
  • string实现
  • 堆 和 自由存储区
  • emplace_back
  • lambda闭包
  • string 和 stringbuilder
  • C#class(至少2指针) 和 struct结构(默认至少1字节)
  • 虚继承,菱形继承
  • new【】、delete【】底层
  • 大小端与如何判断
  • AOE搜索
  • 寻路算法进阶(RVO、JPS)
  • 继承 public 和 private的区别
  • 类型转换
  • 渲染管线的实现
  • 红黑树实现
  • memcpy,memmove,strstr,
  • RVO、NRVO优化
  • BohemGC
  • 协程原理
  • 三大排序(掌握熟练)
  • 十大排序
  • 对象池复习(内存池、线程池)
  • 算法熟练度
  • vector原理
  • 操作系统底层原理--Linux内核
  • GC原理(C#、Unity、Lua)
  • MVVM、MVC原理
  • 常见位运算
  • Lua相关、元表、GC
  • A* 高级
  • 物理碰撞、骨骼原理复习
  • C++
  • 网络:OSI模型和对应协议
  • 红黑树具体原理
  • KMP
  • allocator
  • 符号表
  • 图片压缩
  • 函数指针
  • 齐次除法(CPU渲染器实现)
  • A* 优化
  • RVO、NRVO优化

面试思路

  • 多态->模版底层与特化->C11模版参数包Args...->C17模版参数包展开
  • 多态->重载底层->NULL重载问题->extern "C"问题> 引擎:C++与C#交互
  • 多态->虚函数->多继承->inline->虚表RTTI->类型转换->void*->函数指针与lambda与仿函数与function->
  • 智能指针->要求手写->引入Unity GC->引入C# GC->内存分配->引入内存池设计
  • 内存分配->内存对齐->栈的机制->堆分配的系统调用原理->malloc/free->new和delete【】->如何在栈上开辟内存(alloca和placement)->内存池设计->brk和mmap的机制->虚拟内存分配。
  • 虚函数->inline->define->编译链接四过程->cpp的编译链接原理(.cpp和.h)->优化(前向声明和问题)->注意点(模版声明实现放.h,MT和MD编译)->(编译原理,酌情吧)->反汇编查看->动态链接原理与实现->main函数原理
  • 全局->静态(限制)->内存区->单例模式->全局静态(带外链接,三个方法)

  • TCP/UDP->TCP的所有机制、三四机制->Socket机制:粘包、心跳包->网络同步

  • 帧同步->Socket连接(TCP、UDP细节)->多路复用->分布式架构
  • ECS->引擎项目实现->非ECS文件处理->Unity DOTS->ECS的优缺点->ECS如何相互调用的

  • Unity协程(C++多线程)->线程同步与通信->进程同步与通信->三者差异->死锁问题->无锁编程->原子操作

Unity- CSharp

GC:通过 Mono 打包用的是 C# GC,即标记、压缩、分代,然后通过 IL2CPP 是 beoham 算法) GC优化:字符串,匿名方法变量优化,拆装箱,一些返回数组的api,一些容器扩容。用一些对象池,泛型,StringBuilder,ref,初始化就固定大小容器等等去优化

协程原理 C#中个new修饰符修饰方法效果。函数重名--显式隐藏

C++

c++多态 指针和引用有什么区别 链表和数组的区别 移除一个元素对数组和链表有什么区别 如何O(1) 删除数组成员 单例 智能指针 C++智能指针怎么实现 左值右值 C++读取一个变量的过程(虚拟内存上聊) C++内存对齐 MeshRenderer SkinnedMeshRenderer C++的内存管理 内存池底层,其实是链表管理,链表头指的是空闲块,释放和归还其实就是对链表头做操作 std::sort() 排序算法

图形

HDR实现 PBR实现,PBR 的 环境光照怎么计算 Cube Map 图片压缩:ETC2 MVP矩阵为什么是4* 4的 描边效果

操作系统

锁的类型 信号量和互斥量 mutex=0代表什么 多线程 无锁编程实现 (https://blog.csdn.net/davidhopper/article/details/131430830)) C++的原子变量 (https://blog.csdn.net/Long_xu/article/details/128946582)) 锁机制 原子指令(需要硬件支持)(https://blog.csdn.net/weixin_73240939/article/details/135099428)) 内存屏障(硬件指令,内存屏障可以通过禁止重排序,防止对共享内存的并发访问) 高并发的环境下,怎么保证 int a = 1, b = 2 是先执行 怎么保证前面先执行后面再执行 Unity Job System 虚拟内存是什么 虚拟化知道吗? 在new 的时候分配的内存怎么去跟物理内存去映射到一起的?(页表) 线程资源冲突,进程怎么解决冲突? 操作系统怎么处理函数 进程间的通信

计网

计算机网络,介绍一下TCP和UDP TCP怎么保证其可靠性的 滑动窗口,流量控制,断线重连的机制

LUA

xLua怎么做热更新 Lua虚拟机初始化时机 Lua闭包概念,是值拷贝还是引用拷贝 引用拷贝怎么变成值拷贝 Lua GC 回收的过程 xlua是怎么实现和C#通信的

算法

堆排序步骤 快排基本有序数组选基准值的策略 快排切分描述 A* 二分查找 归并排序

数学

四元数和欧拉角