近期面试遇到的问题

41 阅读6分钟

C++

  1. C++多态,动态多态和静态多态
  2. C++虚函数,虚函数指针,纯虚函数,以及虚函数指针和虚函数分别属于哪个层次
  3. C++内存四区
  4. 构造函数和析构函数的调用顺序
  5. C++不能被继承的类
  6. 堆和栈的区别
  7. 对深拷贝的理解,什么是深浅拷贝
  8. new和malloc的区别,delete和free的区别
  9. C++的sharedptr内部如何维护引用计数
  10. 哪些函数是虚函数
  11. 进程与线程的区别
  12. C++多线程之间如何通信
  13. C++多线程如何同步.常用哪些锁
  14. C++并发的std::async,std::promise,std::future分别是什么,有什么用
  15. C++std::bind是什么
  16. C++锁管理器
  17. Boost的asio如何使用,如何监听一个连接
  18. C++移动语义,什么是左值右值,什么是完美转发,引用折叠,万能引用
  19. 把一个左值引用的变量传递给一个模板函数,该函数形参为万能引用,那么在该函数内部,这个参数为左值还是右值
  20. 栈实现队列
  21. 常见的STL容器(关联,非关联),map有哪几种,是基于什么实现的,复杂度如何
  22. vector是堆上还是栈上,如何实现的动态扩容,size和capacity的区别是什么
  23. 什么是ECS,为什么用ECS
  24. 缓存行对齐是什么,为什么要对齐,C++中怎么做,没有对齐会怎样
  25. 观察者模式是什么,还用过什么设计模式
  26. 如果可用物理内存剩余量不足,只剩10m,而代码中去new一个20M的内存,能否new成功

OpenGL

OpenGL入门 OpenGL光照

  1. 什么是立即渲染模式/固定管线渲染和核心模式,区别是什么
  2. 什么是状态机
  3. OpenGL中的对象是什么
  4. GLFW,GLAD,OPENGL分别起什么作用
  5. shader中如何丢弃片段
  6. 如何实现的批处理,是动态的还是静态的,区别是什么
  7. 描述一下OpenGL的渲染管线的各阶段
  8. 什么是MipMap,有什么用,在放大时候用还是缩小时候用
  9. 类似于sampler2D,这是一个什么类型(采样器句柄)
  10. 什么是前向渲染和延迟渲染(GBO,GeoPass/Pass)
  11. shader是什么,会不会写shader,shader的关键字有哪些
  12. 什么是双缓冲
  13. 什么抗锯齿,有哪些抗锯齿方法(MSAA,SSAA)
  14. 混合在管线的哪个阶段,半透明物体的渲染顺序是怎样的
  15. 什么是RenderGraph
  16. OpenGL多线程如何使用,为什么要多线程,不同线程之间的数据是否能同步,如何同步
  17. 一个4x4矩阵中,TRS分别在哪里(天空盒贴图,通过->3x3然后再回到4x4可以移除view的位移,使得天空盒始终以Camera为中心,不会有位置变化)
  18. 什么是Quat,万向节死锁
  19. 向量的点乘和叉乘
  20. 坐标系统:局部空间->世界空间->观察空间->裁剪空间->屏幕空间(NDC->Screen)
  21. 什么是深度缓冲,缓冲值是否是线性的,深度缓冲是在近处出精度大还是远处精度大,如何防止深度冲突
  22. 什么是冯氏光照,和布林冯氏光照的区别
  23. 模板测试在什么时候进行,有什么作用,创建一个物体轮廓的流程是怎样的
  24. 面剔除是怎么做到的,有哪些应用(阴影走样,性能提升)
  25. 讲一下帧缓冲,怎么创建一个帧缓冲,需要哪些条件,有什么用(离屏渲染,后期处理)
  26. 纹理和RBO的区别
  27. 立方体贴图中,创建一个天空盒,天空盒是否应该随着相机运动,怎么做
  28. 顶点的交错和分批是什么
  29. 有没有写过UBO,什么是绑定点
  30. OpenGL有哪些内建变量
  31. 有没有写过几何着色器,接受什么,输出什么,有哪些功能,常见的应用场景
  32. OpenGL的实例化是什么,为什么要用实例化数组
  33. 什么是MRTs(多重渲染目标)
  34. 什么是多重采样
  35. 如何实现阴影效果,说一下思路
  36. 法线贴图,切线空间
  37. HDR是什么

QT

  1. QT会不会,QT的MVC是什么
  2. 用过什么控件,为什么使用ListWidget而不是ListView,区别是什么
  3. QT的属性机制是什么
  4. QT的信号和槽解释一下,connect的第五个参数是什么作用
  5. QT中怎么使用OpenGL

项目(Hazel)

  1. 怎么实现的批处理,是动态批处理还是静态批处理
  2. 项目中你是如何管理VBO的
  3. 如果要将当前场景中的物体顶点位置都移动一个值,在你的项目中该怎么做
  4. 如果要让一个2D的物体以某种曲线从屏幕左侧移动到右侧,怎么做
  5. 圆形是如何绘制的

CMake

  1. CMake如何链接一个动态库

Linux

  1. 常用的linux命令
  2. gdb常用的命令

操作系统

  1. 什么是虚拟内存
  2. 内存管理机制(段页式)
  3. 大小端
  4. 进程和线程的区别,什么是协程,有没有用过C++20协程
  5. 进程间通信,线程间通信

并发编程

  1. 死锁产生的必要条件
  2. 什么是锁管理器
  3. C++条件变量,
  4. 基于C++并发的生产者消费者怎么写
  5. PV操作
  6. 信号量和互斥量
  7. C++的并发编程怎么用
  8. std::async,std::future,std::promise 分别是什么,怎么用
  9. 什么是原子变量,说说你的理解
  10. C++内存模型的理解
  11. 什么是无锁数据结构,怎么实现的

数据库

  1. 用过什么数据库(关系型:Mysql,orcale|非关系型:redis)
  2. 什么是事务,事务的隔离级别,事务的四大特点
  3. 键和索引

网络

  1. select poll epoll详细讲一下
  2. Boost的asio怎么监听一个连接
  3. TCP三握手四挥手,为什么三次握不两次,为什么四次挥不三次
  4. 什么是粘包和分包

数据结构与算法

  1. 栈实现队列
  2. 给你一个字符串A和一个字符串B,请你计算字符串B的所有旋转形式在字符串A中的出现总次数
  3. 已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列

Other

  1. 怎么看待当前AI的发展,你认为AI扮演的什么角色
  2. 你是怎么通过业务拆解并使用AI去快速开发的