Skip to content

Instantly share code, notes, and snippets.

@creatorlxd
Last active March 18, 2025 09:37
Show Gist options
  • Save creatorlxd/8d93b97246ed3baf0dc764e0efc75142 to your computer and use it in GitHub Desktop.
Save creatorlxd/8d93b97246ed3baf0dc764e0efc75142 to your computer and use it in GitHub Desktop.

考察方面

  • 基础知识
  • 对计算机的理解
  • 对技术的热情
  • 思维能力
  • 实践经验

题目

基础

  • 了解平凡类型或者说 trivial 类型么
  • 谈谈你对指针的理解
  • 成员函数通过什么来区分不同对象的成员数据?为什么它能够区分?
  • 虚函数的作用以及实现方法(虚表)
  • 了解迭代器么?什么情况下,何种容器的哪些迭代器会失效
  • 解释一下啥是 RAII
  • 堆和栈的区别,本质上呢?
  • 为什么带有虚函数的类的析构函数一般也要是虚函数
  • 讲一下 hash 表的大概结构
  • 了解左值和右值么?了解拷贝和移动语义么?
  • 阐述一下动态库和静态库的区别
  • 了解宏么,大致讲一下宏的原理
  • 了解模板么,大致讲一下模板的原理(实例化)
  • 了解 CRTP 么
  • 函数模板和类模板的区别,变量模板呢
  • C++编译器自动为类产生哪些缺省函数?
  • 关注 C++版本的变化么,讲一个你用上的新特性
  • 解释一下 inline 关键字的作用(linkage)
  • 解释一下为什么 include 头文件能够使用其他文件中定义的类和函数?
  • 讲一下预编译阶段,编译器的工作
  • extern C 有什么作用?
  • 大致描述一下构建 C++项目的过程 (预编译/(模板实例化)/编译编译单元/链接各个编译单元及库)
  • C++里如何实现单例模式(local static)
  • 什么是原子操作
  • 简单讲一下 C++ atomic 6 种内存序
  • 说说内存碎片产生的原因,如何解决
  • 为什么需要内存对齐
  • map 和 unordered_map 之前对比,什么情况下选用哪个?
  • 讲一下 lambda 的等效实现
  • 了解 SFINAE 么
  • 讲一下 auto 的推导规则

进阶

对计算机的理解

  • 你现在所接触的技术领域中,你最喜欢的是什么,为什么?
  • 什么是多态?了解动态多态/静态多态的区别么?动态多态的等效实现?
  • 了解 ECS 么?ECS 较之传统的 Object 类继承的范式有何优点?(缓存命中问题)

思维能力

  • 阐述一下你所认为的容器的共性或者说特点 : 资源管理/内存管理/迭代器/泛型/接口/抽象分层
  • 如果让你实现一种数据结构容器,这个类要怎么设计
  • 如何设计一个通用的状态机系统,可以给定状态并跳转,有哪些设计思路 : 静态/动态
  • 如何实现一个 C++ 插件系统
  • 如何实现 QT 中的信号、槽,有哪些思路?
  • 如何实现空间管理管理功能(八叉树、BST)
  • 如何实现一个 MVVM 系统,有哪些需要注意的点

实践经验

  • 使用过 git 和 github 么,讲讲常用的工作流(ci, mr)
  • 了解单元测试么,编写过单元测试么,单元测试的粒度如何把握
  • 如果容器的迭代器出现内存问题,应该怎么调试 : 判断问题发生的原因/是外部修改/或是迭代器失效/或是生命周期问题/或是多线程问题
  • 讲一个你印象最深的调试经历,如果没有,讲一下你调试的一般方法
  • 你的项目中涉及多线程问题么?你是如何解决的?
  • 如果项目出现内存相关崩溃,应当如何排查?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment