C++精选面试题集合(100份大厂面经提取的200+道真题)

C/C++ 核心知识

本章重点:智能指针、多态机制、虚函数、STL原理、内存管理

智能指针与内存管理

C001. 智能指针实现原理 | ⭐⭐⭐⭐⭐

考察点: RAII机制、引用计数、自动内存管理、C++11特性

C002. 智能指针,里面的计数器何时会改变 | ⭐⭐⭐⭐

考察点: shared_ptr原理、引用计数变化时机、拷贝构造

**C003.**智能指针和管理的对象分别在哪个区 | ⭐⭐⭐

考察点: 栈区堆区、对象生命周期、RAII特征

智能指针本身在栈区,托管的资源在堆区,利用了栈对象超出生命周期后自动析构的特征

C004. c++11的智能指针有哪些,weak_ptr的使用场景,什么情况下会产生循环引用 | ⭐⭐⭐⭐

考察点: unique_ptr/shared_ptr/weak_ptr、循环引用问题、弱引用解决方案

C005. 如果new了之后出了问题直接return,会导致内存泄漏,怎么办 | ⭐⭐⭐⭐

考察点: 异常安全、RAII设计模式、智能指针应用

C006. unique_ptr和shared_ptr区别 | ⭐⭐⭐⭐

考察点: 独占所有权vs共享所有权、性能差异、使用场景

**C007.**手撕:Unique_ptr,控制权转移(移动语义) | ⭐⭐⭐⭐

考察点: 移动构造、移动赋值、禁止拷贝、模板编程

C008. C++的new和malloc的区别 | ⭐⭐⭐⭐

考察点: 构造析构调用、操作符重载、类型安全、异常处理

C009. new可以重载吗,可以改写new函数吗 | ⭐⭐⭐

考察点: 操作符重载、内存分配定制、placement new

面向对象与多态

**C010.**面向对象的特性:多态原理 | ⭐⭐⭐⭐⭐

考察点: 动态绑定、虚函数机制、继承体系、运行时多态

**C011.**介绍一下虚函数,虚函数怎么实现的 | ⭐⭐⭐⭐⭐

考察点: 虚函数表、虚指针、动态绑定、对象内存布局

C012. 虚函数原理,虚表是什么时候建立的 | ⭐⭐⭐⭐

考察点: vtable构建时机、编译期vs运行期、对象构造过程

C013. 为什么要把析构函数设置成虚函数 | ⭐⭐⭐⭐

考察点: 多态销毁、基类指针、内存泄漏防范、继承安全

C014. 多态和继承在什么情况下使用 | ⭐⭐⭐

考察点: OOP设计原则、代码复用、接口设计、架构模式

**C015.**除了多态和继承还有什么面向对象方法 | ⭐⭐

考察点: 封装、组合、关联、聚合、接口隔离

C016. 静态多态有什么 | ⭐⭐⭐

考察点: 模板特化、函数重载、编译期多态、泛型编程

**C017.**手撕:类继承,堆栈上分别代码实现多态 | ⭐⭐⭐⭐

考察点: 继承语法、虚函数调用、对象创建方式、内存分布

STL容器与算法

**C018.**vector的原理,怎么扩容 | ⭐⭐⭐⭐

考察点: 动态数组、容量倍增、迭代器失效、内存分配策略

**C019.**stl容器了解吗?底层如何实现 | ⭐⭐⭐⭐

考察点: vector数组、map红黑树、deque双端队列、容器适配器

**C020.**map为啥用红黑树不用AVL树 | ⭐⭐⭐⭐⭐

考察点: 平衡二叉树性能、插入删除频率、旋转次数、STL设计权衡

几乎所有面试都问了map和unordered_map区别

**C021.**C++中的map和unordered_map的区别和使用场景 | ⭐⭐⭐⭐

考察点: 有序性、哈希表vs红黑树、时间复杂度、内存布局

C022. 他们是线程安全的吗 | ⭐⭐⭐

考察点: STL容器线程安全性、并发访问、读写锁、线程安全设计

C023. c++标准库里优先队列是怎么实现的 | ⭐⭐⭐

考察点: 堆数据结构、priority_queue、make_heap算法、容器适配器

内存管理与生命周期

**C024.**C++内存分布,什么样的数据在栈区,什么样的在堆区 | ⭐⭐⭐⭐

考察点: 内存四区、栈堆区别、静态区、数据生命周期

C025. C++内存管理(RAII啥的) | ⭐⭐⭐⭐

考察点: RAII设计模式、资源获取即初始化、异常安全、作用域管理

C026. RAII基于什么实现的 | ⭐⭐⭐⭐

考察点: 生命周期、作用域、构造析构、栈展开机制

语言特性与语法

**C027.**引用和指针的区别 | ⭐⭐⭐⭐⭐

考察点: 别名机制、内存占用、初始化要求、空值处理

C028. 指针常量和常量指针 | ⭐⭐⭐⭐

考察点: const修饰符、指针常量性、类型系统、内存只读

C029. 介绍一下const | ⭐⭐⭐⭐

考察点: 常量语义、编译器优化、const成员函数、mutable关键字

**C030.**右值引用 | ⭐⭐⭐⭐

考察点: 移动语义、完美转发、临时对象、C++11特性

**C031.**函数参数可不可以传右值 | ⭐⭐⭐

考察点: 参数传递机制、右值绑定、引用折叠、临时对象生命周期

**C032.**完美转发介绍一下,去掉std::forward会怎样 | ⭐⭐⭐

考察点: 模板参数推导、引用折叠、参数完美传递、性能优化

C033. move函数 | ⭐⭐⭐

考察点: 移动语义、右值转换、性能优化、资源转移

编译与链接

C034. C++从源程序到可执行程序的过程 | ⭐⭐⭐⭐

考察点: 预处理、编译、汇编、链接、目标文件格式

**C035.**size_of是在编译期还是在运行期确定 | ⭐⭐⭐

考察点: 编译期计算、类型大小、模板特化、constexpr

C036. 函数重载的机制,重载是在编译期还是在运行期确定 | ⭐⭐⭐⭐

考察点: 名字修饰、重载决议、编译期绑定、函数签名

C037. gcc编译的过程 | ⭐⭐⭐

考察点: 编译器工作流程、优化级别、链接库、调试信息

C038. extern C有什么作用 | ⭐⭐⭐

考察点: C++与C兼容、名字修饰、ABI、FFI接口

**C039.**C代码中引用C++代码有时候会报错为什么 | ⭐⭐⭐

考察点: 名字修饰差异、链接错误、ABI兼容性、extern声明

高级特性

C040. 一个对象=另一个对象会发生什么 | ⭐⭐⭐⭐

考察点: 赋值操作符、拷贝构造、深拷贝浅拷贝、三五法则

C041. Cpp新特性知道哪些 | ⭐⭐⭐

考察点: C++11/14/17/20新特性、auto推导、lambda、智能指针

C042. 类型转换 | ⭐⭐⭐

考察点: static_cast、dynamic_cast、const_cast、reinterpret_cast

C043. lambda表达式的理解,它可以捕获哪些类型 | ⭐⭐⭐

考察点: 闭包、捕获列表、函数对象、C++11特性

C044. 友元friend介绍 | ⭐⭐

考察点: 访问控制、封装破坏、运算符重载、设计权衡

C045. 模版类的作用 | ⭐⭐⭐

考察点: 泛型编程、代码复用、模板实例化、类型参数

**C046.**模版和泛型的区别 | ⭐⭐

考察点: 编译期vs运行期、代码生成、类型安全、性能对比

**C047.**inline 失效场景 | ⭐⭐⭐

考察点: 内联展开、编译器优化、函数复杂度、虚函数内联

C048. C++ 中 struct 和 class 区别 | ⭐⭐⭐

考察点: 默认访问权限、成员可见性、C兼容性、使用习惯

**C049.**如何防止一个头文件 include 多次 | ⭐⭐⭐

考察点: 头文件保护、#pragma once、宏定义、编译优化

C050. 参考c/c++堆栈实现自己的堆栈,要求:不能用stl容器 | ⭐⭐⭐

考察点: 栈数据结构、内存管理、异常安全、模板编程

**C051.**介绍一下unique_lock和lock_guard区别 | ⭐⭐⭐

考察点: RAII锁管理、锁的灵活性、条件变量、异常安全

进阶与系统

C052. 多进程fork后不同进程会共享哪些资源 | ⭐⭐⭐

考察点: 进程空间、写时拷贝、文件描述符、信号处理

**C053.**多线程里线程的同步方式有哪些 | ⭐⭐⭐⭐

考察点: 互斥锁、条件变量、信号量、原子操作、读写锁

**C054.**C++ Coroutine | ⭐⭐

考察点: 协程机制、异步编程、stackless协程、C++20特性

**C055.**c++ memoryorder/elf文件格式/中断对于操作系统的作用 | ⭐⭐

考察点: 内存序、可执行文件格式、系统调用、底层机制

C056. C++的符号表 | ⭐⭐

考察点: 符号解析、链接过程、调试信息、名字修饰

**C057.**C++的单元测试 | ⭐⭐

考察点: 测试框架、Mock技术、代码覆盖率、TDD开发

更多C++八股文面试题请观看下面视频讲解

最全C++八股文分享,C++校招面试题总结(附答案)https://www.bilibili.com/video/BV1Cs8oztEMi/

数据结构与算法

本章重点:链表操作、排序算法、二叉树遍历、哈希表、动态规划

线性结构

D001. 数组和链表区别和优缺点 | ⭐⭐⭐⭐⭐

考察点: 内存连续性、随机访问、插入删除效率、缓存友好性

D002. 链表反转 | ⭐⭐⭐⭐⭐

考察点: 指针操作、迭代递归实现、边界条件、空间复杂度

D003. 链表和数组的底层结构设计、关联、区别、应用场景 | ⭐⭐⭐⭐

考察点: 数据结构选择、内存布局、访问模式、性能权衡

排序算法

D004. 快速排序 | ⭐⭐⭐⭐⭐

考察点: 分治思想、分区操作、时间空间复杂度、最坏情况

**D005.**堆排序是怎么做的 | ⭐⭐⭐⭐

考察点: 堆数据结构、建堆过程、堆调整、原地排序

D006. 冒泡排序 | ⭐⭐⭐

考察点: 基础排序算法、优化策略、稳定性、适用场景

D007. 排序算法哪些是稳定的,哪些不稳定的 | ⭐⭐⭐⭐

考察点: 算法稳定性、相等元素顺序、应用场景、性能对比

树形结构

D008. 二叉树前序遍历非递归 | ⭐⭐⭐⭐

考察点: 栈辅助遍历、迭代实现、空间优化、遍历顺序

D009. 二叉树输出每一层最右边的节点 | ⭐⭐⭐

考察点: 层序遍历、BFS算法、队列使用、边界判断

**D010.**计算二叉树层高/深度和高度 | ⭐⭐⭐⭐

考察点: DFS递归、层序遍历、参数传递、一次遍历解决

D011. 给一个连续非空子数组,找它乘积最大的 | ⭐⭐⭐

考察点: 动态规划、负数处理、状态转移、边界条件

查找算法

D012. 二分查找(复杂度) | ⭐⭐⭐⭐⭐

考察点: 有序数组查找、对数时间复杂度、边界处理、变形应用

D013. 千万级数组如何求最大k个数 | ⭐⭐⭐⭐

考察点: TopK问题、最小堆、快速选择、大数据处理

用最小堆或快速排序;如果数据范围有限(0-1000),按频率排序用计数

**D014.**求最大的k个数字,解法:优先队列(堆)或者快速排序 | ⭐⭐⭐⭐

考察点: 堆排序应用、优先队列、分治选择、时间复杂度优化

哈希表

D015. hash表数据很大,rehash的代价很高,怎么办 | ⭐⭐⭐⭐

考察点: 哈希表扩容、渐进式rehash、负载因子、性能优化

D016. hash解决冲突的四种方式 | ⭐⭐⭐⭐

考察点: 开放定址法、链地址法、再哈希法、公共溢出区、适用场景

**D017.**链地址法和再哈希法之间的关联和区别 | ⭐⭐⭐

考察点: 冲突解决策略、底层数据结构、内存使用、查找效率

图结构

**D018.**图的种类,表示方法,图有哪些经典算法 | ⭐⭐⭐

考察点: 有向无向图、邻接矩阵表、邻接链表、DFS/BFS、最短路径

概率结构

**D019.**布隆过滤器介绍 | ⭐⭐⭐

考察点: 概率数据结构、哈希函数、误判率、空间效率

D020. 为什么不用布隆过滤器 | ⭐⭐⭐

考察点: 布隆过滤器局限性、无法删除、误判问题、替代方案

算法技巧

D021. 大数问题解法:转换为字符串解决 | ⭐⭐

考察点: 大整数运算、字符串处理、进位操作、边界处理

D022. 死锁的概念,进程调度算法怎么解决死锁 | ⭐⭐⭐

考察点: 死锁四个条件、预防检测、银行家算法、资源分配

关于算法,还需要搞懂算法的实际应用场景,正在学习的同学可以观看以下视频讲解

力扣leetcode算法应用场景分析https://www.bilibili.com/video/BV1VYtBzpEUJ/

开发工具与调试

本章重点:GDB调试、编译器使用、Core文件分析、内存泄漏检测

调试工具

**T001.**怎么debug,怎么看内存泄漏 | ⭐⭐⭐⭐⭐

考察点: GDB调试、Valgrind工具、AddressSanitizer、内存泄漏检测

**T002.**Linux下程序有问题,如何调试 | ⭐⭐⭐⭐⭐

考察点: GDB使用、断点设置、调试流程、问题定位方法

T003. gdb使用:多线程程序切换到某线程栈帧,如何查看寄存器值 | ⭐⭐⭐

考察点: 多线程调试、线程切换、寄存器查看、栈帧分析

T004. 怎么分析C++的core文件 | ⭐⭐⭐⭐

考察点: Core dump分析、崩溃原因定位、栈回溯、调试信息

**T005.**GDB有哪些命令 | ⭐⭐⭐⭐

考察点: 断点设置、单步执行、变量查看、内存检查、线程操作

正在学习GDB的同学可以观看下面的视频讲解,附带完整的文档资料

保姆级别GDB教程(50页带书签)https://www.bilibili.com/video/BV16e411H7Ty/

编译器

**T006.**gcc和g++的区别 | ⭐⭐⭐⭐

考察点: 编译器差异、链接库不同、C vs C++编译、默认行为

设计模式

本章重点:单例模式、策略模式、工厂模式、观察者模式

P001. 单例模式实现区别 | ⭐⭐⭐⭐

考察点: 懒汉饿汉模式、线程安全、双重检查锁定、C++11实现

P002. 策略模式实现 | ⭐⭐⭐

考察点: 算法族封装、运行时切换、多态应用、开闭原则

操作系统

本章重点:进程线程、内存管理、同步机制、系统调用、并发编程

进程与线程

**O001.**线程和进程的区别、应用场景 | ⭐⭐⭐⭐⭐

考察点: 资源隔离、地址空间、创建开销、通信方式、使用场景

O002. fork()读时共享写时拷贝 | ⭐⭐⭐⭐

考察点: COW机制、内存优化、进程创建、页面管理、共享资源

O003. fork函数返回值是怎么实现的 | ⭐⭐⭐

考察点: 系统调用、父子进程、返回值机制、进程ID分配

**O004.**用户级线程和内核级线程的区别 | ⭐⭐⭐⭐

考察点: 调度机制、切换开销、阻塞处理、并发性能

O005. 线程切换的到底是什么 | ⭐⭐⭐⭐

考察点: 上下文切换、寄存器状态、栈切换、调度开销

O006. 讲讲进程管理 | ⭐⭐⭐

考察点: 进程状态、调度算法、优先级、资源分配

内存管理

**O007.**内存池 | ⭐⭐⭐⭐

考察点: 预分配策略、碎片问题、高频分配优化、内存对齐

O008. 内存管理 | ⭐⭐⭐⭐

考察点: 虚拟内存、页面置换、内存分配器、垃圾回收

**O009.**如果频繁进行内存的分配释放会有什么问题 | ⭐⭐⭐⭐

考察点: 内存碎片、系统调用开销、性能影响、优化策略

**O010.**如果频繁分配释放的内存很大(>128k),怎么处理 | ⭐⭐⭐

考察点: 大内存块管理、mmap使用、内存池设计、分配策略

**O011.**虚拟内存以及堆栈溢出相关的问题,堆栈溢出怎么处理 | ⭐⭐⭐⭐

考察点: 虚拟地址空间、栈溢出检测、内存保护、异常处理

**O012.**分段和分页的区别 | ⭐⭐⭐⭐

考察点: 内存管理机制、地址转换、碎片问题、硬件支持

O013. 堆和栈的区别,什么情况下会往堆里放 | ⭐⭐⭐⭐⭐

考察点: 内存区域、生命周期、分配方式、使用场景

O014. Linux中的内存分布 | ⭐⭐⭐⭐

考察点: 内存四区、虚拟地址空间、栈内存堆内存、进程内存布局

O015. Linux虚拟地址空间结构/动态库地址无关代码 | ⭐⭐⭐

考察点: 地址空间布局、PIC代码、共享库、ASLR机制

O016. 如果非堆内存一直在增长,可能哪个区域的内存出了问题 | ⭐⭐⭐

考察点: 栈内存、静态区、内存泄漏定位、内存监控

同步与并发

O017. 多线程中各种锁,读写锁,互斥锁 | ⭐⭐⭐⭐⭐

考察点: 锁类型、读写分离、性能对比、死锁避免

O018. 互斥锁+条件变量 | ⭐⭐⭐⭐

考察点: 条件等待、线程唤醒、生产者消费者、同步机制

O019. 线程同步共享怎么实现 | ⭐⭐⭐⭐

考察点: 同步原语、共享变量、原子操作、内存模型

O020. 互斥同步的方法 | ⭐⭐⭐⭐

考察点: 锁机制、信号量、条件变量、原子操作、屏障

**O021.**信号量和自旋锁的区别 | ⭐⭐⭐⭐

考察点: 阻塞vs轮询、适用场景、性能特点、CPU使用

O022. 线程池和线程开销 | ⭐⭐⭐⭐

考察点: 线程复用、创建销毁开销、任务队列、并发控制

进程通信

O023. 进程间通信原理和方式 | ⭐⭐⭐⭐⭐

考察点: IPC机制、管道、共享内存、消息队列、信号、套接字

系统监控

**O024.**查看磁盘、cpu占用、内存占用命令 | ⭐⭐⭐⭐

考察点: top/htop、iostat、free、ps命令、系统监控

O025. top命令排查高占有率进程/top命令的占用率怎么算的 | ⭐⭐⭐

考察点: CPU使用率计算、进程监控、性能分析、系统诊断

系统编程

O026. 除了MQ和websocket之外,你还能想到什么异步通信的办法 | ⭐⭐⭐

考察点: 异步IO、事件驱动、管道、共享内存、信号、异步通信方案

**O027.**为什么要用多线程,多进程可以吗(webserver的) | ⭐⭐⭐⭐

考察点: 并发模型、资源共享、通信成本、性能权衡、架构选择

O028. 为什么要用线程池,线程池中的线程是怎么运作的 | ⭐⭐⭐⭐⭐

考察点: 线程复用、任务队列、工作线程、生产者消费者、资源管理

O029. 生产者消费者,信号量的使用,队列空时会发生什么 | ⭐⭐⭐⭐

考察点: 同步机制、阻塞等待、信号量操作、边界条件处理

线程池请求队列通常用链表实现

O030. C++多线程并发问题(场景千万级数量级怎么处理) | ⭐⭐⭐⭐

考察点: 高并发设计、线程池、无锁编程、性能优化、负载均衡

O031. 哪几种常用的signal,正常终止程序的信号,kill进程几号信号 | ⭐⭐⭐

考察点: SIGSEGV/SIGKILL/SIGTERM、信号处理、进程控制、异常处理

**O032.**什么情况下会使用静态变量 | ⭐⭐⭐

考察点: 生命周期、作用域、单例模式、全局状态、内存管理

**O033.**多线程读写同一个静态变量你是怎么解决的 | ⭐⭐⭐⭐

考察点: 线程安全、互斥锁、原子操作、读写锁、竞态条件

**O034.**用过无锁编程吗,知道原子量吗 | ⭐⭐⭐

考察点: CAS操作、原子类型、内存序、无锁数据结构、性能优化

定时器

本章重点:定时器实现、时间轮、小根堆、心跳检测

**TM001.**小根堆定时器是怎么弄的,如果一次pop一个的话,高并发情况下会不会有问题 | ⭐⭐⭐⭐

考察点: 堆数据结构、定时器队列、并发安全、性能瓶颈

TM002. 心跳检测如何实现 | ⭐⭐⭐⭐

考察点: 连接保活、超时检测、定时任务、网络编程

**TM003.**为什么用小根堆实现定时器 | ⭐⭐⭐⭐

考察点: 时间复杂度、数据结构选择、最近超时、插入删除效率

网络编程

本章重点:TCP/UDP协议、HTTP协议、网络IO、并发模型、套接字编程

传输层协议

**N001.**为什么握手是三次而挥手需要四次 | ⭐⭐⭐⭐⭐

考察点: TCP连接建立、四次挥手、状态机、可靠性保证

N002. tcp和udp的原理、区别、应用场景 | ⭐⭐⭐⭐⭐

考察点: 可靠传输、无连接通信、性能权衡、协议选择

**N003.**TCP慢启动,拥塞控制实现 | ⭐⭐⭐⭐

考察点: 流量控制、拥塞窗口、网络优化、性能调优

**N004.**粘包拆包是什么,发生在哪一层 | ⭐⭐⭐⭐

考察点: TCP字节流、消息边界、应用层处理、协议设计

N005. TCP黏包怎么解决 | ⭐⭐⭐⭐

考察点: 固定包头、长度字段、分隔符、应用层协议设计

N006. TCP在什么情况下会出现大量TIME_WAIT | ⭐⭐⭐⭐

考察点: 连接状态、主动关闭、2MSL机制、高并发问题

**N007.**TCP包头字段,TIME_WAIT/CLOSE_WAIT分析 | ⭐⭐⭐⭐

考察点: TCP报文结构、连接状态、标志位、状态转换

N008. TCP 2MSL说一下,为什么 | ⭐⭐⭐⭐

考察点: 最大段生存时间、连接可靠关闭、网络延迟、状态维护

应用层协议

**N009.**HTTP是在OSI模型的哪一层 | ⭐⭐⭐⭐

考察点: 网络分层、应用层协议、OSI七层模型、协议栈

**N010.**HTTPS用到的是对称加密还是非对称加密 | ⭐⭐⭐⭐

考察点: TLS握手、加密算法、数字证书、安全通信

N011. http2和http1的区别 | ⭐⭐⭐⭐

考察点: 多路复用、服务器推送、头部压缩、二进制帧

N012. http1.0/1.1/2/3版本区别 | ⭐⭐⭐

考察点: 协议演进、keep-alive、QUIC协议、性能优化

**N013.**get和post区别 | ⭐⭐⭐⭐

考察点: HTTP方法、请求语义、缓存、幂等性、安全性

N014. WebSocket | ⭐⭐⭐

考察点: 全双工通信、协议升级、实时通信、长连接

**N015.**有限状态机怎么解析http报文 | ⭐⭐⭐

考察点: 协议解析、状态机设计、报文格式、边界处理

N016. HTTP请求数据没传完怎么办 | ⭐⭐⭐

考察点: 分块传输、Content-Length、流式处理、异常处理

网络基础

**N017.**tcp/ip五层模型 | ⭐⭐⭐⭐

考察点:网络分层、协议栈、数据封装、各层功能

**N018.**dns服务器用的是什么协议 | ⭐⭐⭐

考察点: DNS解析、UDP/TCP选择、域名系统、网络基础

N019. ping命令用的是什么协议,在哪一层 | ⭐⭐⭐

考察点: ICMP协议、网络层、连通性测试、网络诊断

**N020.**路由表说一下,路由表为空怎么找到下一跳 | ⭐⭐⭐

考察点: 路由机制、默认网关、网络层转发、包转发

N021. 查看网络状况/抓包工具 | ⭐⭐⭐

考察点: ping/traceroute、wireshark、netstat、网络诊断

**N022.**讲讲QUIC/快速重传算法 | ⭐⭐

考察点: HTTP/3、UDP优化、可靠传输、现代网络协议

高性能网络编程

**N023.**为什么要用epoll | ⭐⭐⭐⭐⭐

考察点: IO多路复用、高并发、事件驱动、性能优化

N024. epoll实现原理,epoll使用的哪种模式 | ⭐⭐⭐⭐⭐

考察点: 红黑树+就绪链表、内核实现、ET/LT模式、零拷贝

N025. 怎么理解多路复用机制的 | ⭐⭐⭐⭐

考察点: 单线程处理多连接、IO复用、阻塞非阻塞、并发模型

N026. select/poll了解吗,select为什么只能支持1024个 | ⭐⭐⭐⭐

考察点: FD_SETSIZE限制、轮询机制、性能对比、历史演进

**N027.**epoll底层为什么用红黑树不用hash | ⭐⭐⭐⭐

考察点: 数据结构选择、查找效率、内存使用、范围查询

N028. ET和LT的区别、IO多路复用 | ⭐⭐⭐⭐

考察点: 边缘触发、水平触发、事件通知、编程模型

N029. reactor和proactor的好处和坏处 | ⭐⭐⭐⭐

考察点: 同步异步、事件驱动模型、Linux/Windows、性能对比

**N030.**游戏中数据传输用啥协议 | ⭐⭐⭐

考察点: 实时性要求、UDP优化、可靠UDP、网络游戏架构

N031. webserver两种高并发模式 | ⭐⭐⭐⭐

考察点: 多进程/多线程、事件驱动、Reactor模式、架构设计

N032. 除了Reactor模型,还有什么模型 | ⭐⭐⭐

考察点: Proactor、Actor模型、多线程模型、并发架构

数据库

本章重点:MySQL引擎、索引优化、事务隔离、Redis数据结构、缓存策略

MySQL核心

DB001. MySQL有哪些存储引擎 | ⭐⭐⭐⭐⭐

考察点: InnoDB/MyISAM/Memory、引擎特性、应用场景、性能对比

**DB002.**InnoDB和MyISAM的区别 | ⭐⭐⭐⭐⭐

考察点: 事务支持、锁机制、外键、崩溃恢复、存储结构

DB003. MySQL索引(B+树) | ⭐⭐⭐⭐⭐

考察点: B+树结构、聚簇索引、非聚簇索引、索引优化

DB004. B树和B+树的区别 | ⭐⭐⭐⭐

考察点: 节点结构、叶子节点链接、范围查询、存储效率

DB005. B+树树高怎么算,树高为4能支持多少数据量 | ⭐⭐⭐⭐

考察点: 扇出度计算、页大小、索引容量估算、性能分析

**DB006.**最左前缀原则 | ⭐⭐⭐⭐

考察点: 联合索引、索引匹配、查询优化、索引设计

DB007. 联合索引(a,b,c),where a,b,c和where b,a,c区别 | ⭐⭐⭐⭐

考察点: 索引顺序、查询优化器、索引选择、执行计划

事务与锁

**DB008.**隔离级别 | ⭐⭐⭐⭐⭐

考察点: 读未提交、读已提交、可重复读、串行化、并发控制

**DB009.**数据库ACID怎么实现 | ⭐⭐⭐⭐⭐

考察点: 原子性、一致性、隔离性、持久性、实现机制

DB010. MySQL的MVCC | ⭐⭐⭐⭐

考察点: 多版本并发控制、版本链、ReadView、事务可见性

**DB011.**MySQL锁,每个锁的应用场景 | ⭐⭐⭐⭐

考察点: 表锁、行锁、意向锁、间隙锁、临键锁

DB012. 什么情况下会造成死锁,举个例子 | ⭐⭐⭐⭐

考察点: 死锁条件、死锁检测、死锁预防、事务设计

**DB013.**乐观锁与悲观锁的概念、实现方式、场景、优缺点 | ⭐⭐⭐⭐

考察点: 锁机制、并发控制、版本号、CAS操作

性能优化

DB014. 如何加快数据检索的效率 | ⭐⭐⭐⭐

考察点: 索引优化、查询优化、分区分表、缓存策略

DB015. 一千五百万行数据如何快速找到某一行数据 | ⭐⭐⭐⭐

考察点: 分区策略、索引设计、分表方案、查询优化

DB016. SQL优化 | ⭐⭐⭐⭐⭐

考察点: 执行计划、索引使用、查询重写、性能调优

DB017. 慢查询怎么看,怎么优化 | ⭐⭐⭐⭐

考察点: 慢查询日志、EXPLAIN分析、索引优化、查询改写

架构与运维

DB018. MySQL的集群是用什么样的方式去增加并发量 | ⭐⭐⭐⭐

考察点: 读写分离、主从复制、分库分表、负载均衡

**DB019.**除了读写分离还有什么提升并发的方法 | ⭐⭐⭐

考察点: 连接池、缓存、分库分表、中间件、异步处理

**DB020.**binlog记录的是什么 | ⭐⭐⭐⭐

考察点: 二进制日志、主从复制、数据恢复、日志格式

DB021. 数据库delete和truncate区别 | ⭐⭐⭐

考察点: 日志记录、回滚、性能差异、使用场景

**DB022.**什么情况下使用读已提交/对于脏读的理解 | ⭐⭐⭐

考察点: 隔离级别选择、并发问题、业务场景、性能权衡

Redis缓存

**DB023.**Redis有什么数据结构 | ⭐⭐⭐⭐⭐

考察点: String/Hash/List/Set/ZSet、底层实现、使用场景、性能特点

DB024. ZSet底层实现,跳表和红黑树对比 | ⭐⭐⭐⭐

考察点: skiplist跳表、范围查询、有序性维护、时间复杂度对比

**DB025.**Redis为什么读取速度那么快 | ⭐⭐⭐⭐⭐

考察点: 内存存储、单线程、IO模型、数据结构优化

DB026. 为什么Redis单线程会快 | ⭐⭐⭐⭐⭐

考察点: 上下文切换、锁竞争、CPU缓存、事件循环

**DB027.**设计一个存储字符串kv对的数据结构,要考虑并发和持久化存储 | ⭐⭐⭐⭐

考察点: 哈希表设计、并发安全、持久化机制、内存管理

DB028. Redis在项目中怎么使用/对Redis的理解 | ⭐⭐⭐⭐

考察点: 缓存策略、数据一致性、过期策略、应用场景

DB029. 大数据查找排序,使用什么数据结构优化 | ⭐⭐⭐

考察点: 位图、哈希、过滤器、TopK算法、布隆过滤器

服务器开发

本章重点:认证鉴权、分布式系统、RPC调用、缓存一致性、负载均衡

认证与安全

**S001.**用户认证和鉴权(JWT) | ⭐⭐⭐⭐

考察点: JWT原理、Token验证、会话管理、安全设计

高并发架构

S002. 10000张图片下载,10台机器并行下载怎么实现 | ⭐⭐⭐⭐

考察点: 任务分发、线程池、负载均衡、并发控制、HTTP API

**S003.**雪花算法原理 | ⭐⭐⭐⭐

考察点: 分布式ID生成、时间戳、机器ID、序列号、唯一性保证

**S004.**分布式锁 | ⭐⭐⭐⭐

考察点: Redis锁、Zookeeper、数据库锁、CAP理论、一致性

S005. Redis和MySQL数据一致性相关设计 | ⭐⭐⭐⭐⭐

考察点: 缓存更新策略、双写一致性、延时双删、消息队列

**S006.**长短连接的区别和应用场景 | ⭐⭐⭐⭐

考察点: 连接复用、资源消耗、实时性、HTTP/WebSocket

S007. RAII实现数据库连接池,怎么实现的 | ⭐⭐⭐⭐

考察点: 资源管理、连接复用、线程安全、对象生命周期

S008. HTTP服务器,他的目标是什么,通过什么方式实现的 | ⭐⭐⭐⭐

考察点: Web服务器架构、请求处理、并发模型、协议实现

S009. 负载均衡的一些场景问题 | ⭐⭐⭐⭐

考察点: 负载均衡算法、健康检查、故障转移、水平扩展

**S010.**为什么用vector实现缓冲区,有没有想过别的数据结构 | ⭐⭐⭐

考察点: 缓存设计、内存连续性、动态扩容、性能权衡

RPC框架

S011. gRPC怎么用的 | ⭐⭐⭐⭐

考察点: Protocol Buffers、服务定义、客户端实现、流式调用

**S012.**为什么gRPC速度快 | ⭐⭐⭐⭐

考察点: HTTP/2协议、二进制编码、多路复用、压缩优化

S013. RPC调用流程和机制,RPC超时计时器在什么位置 | ⭐⭐⭐⭐

考察点: 远程调用、网络通信、超时处理、连接复用、错误处理

开放性问题

本章重点:项目经验、系统设计、场景分析、个人规划

项目相关

**Q001.**介绍自己的C++项目,遇到的难点,实现了哪些功能 | ⭐⭐⭐⭐⭐

考察点: 项目经验、技术深度、问题解决能力、架构理解

**Q002.**看过源码吗,轻量级服务器项目 | ⭐⭐⭐⭐

考察点: 源码阅读能力、开源项目、技术视野、学习能力

Q003. 计算机基础知识是怎么补的,之后的技术/职业规划 | ⭐⭐⭐

考察点: 学习方法、职业规划、技术发展路径、自我认知

这里给大家推荐几个项目,可以作为学习练手也可以写进简历

C++Linux项目推荐-Web多人聊天+MySQL+Redis+Websocket+Json,可以写简历的C++项目https://www.bilibili.com/video/BV1iYtrezEkA/C++高性能多线程任务队列系统的实现,可以写进简历的项目https://www.bilibili.com/video/BV1XS9dYsE9d/高性能RPC框架-支持json/protobuf等多种序列化方式https://www.bilibili.com/video/BV176Niz8ENj/C++项目推荐-真正可以媲美redis的kv存储项目-包括性能如何逐步优化https://www.bilibili.com/video/BV12oemzEEjQ/

场景设计

**Q004.**MQTT协议,扫码去付系统千万级客户端通信怎么设计 | ⭐⭐⭐⭐

考察点: 分布式系统、消息队列、高并发、实时通信、系统架构

Q005. 手机店系统,不同品牌型号手机有不同业务逻辑,怎么设计系统 | ⭐⭐⭐⭐

考察点: 策略模式、系统设计、可扩展性、面向对象设计

Q006. 两个服务器,一个坏了,另一个怎么判断并接手用户数据 | ⭐⭐⭐⭐

考察点: 故障转移、高可用设计、数据一致性、分布式系统

**Q007.**UDP设计安全可靠的文件传输 | ⭐⭐⭐⭐

考察点: 可靠传输、协议设计、UDP优化、网络编程

**Q008.**客户端资源下载到一半突然网络中断怎么办 | ⭐⭐⭐

考察点: 断点续传、异常处理、用户体验、网络编程

性能测试

Q009. 服务器进行过压测吗 | ⭐⭐⭐⭐

考察点: 性能测试、压力测试、系统优化、监控指标

思维题

**Q010.**井盖为什么是圆的 | ⭐⭐

考察点: 逻辑思维、创新思考、实际应用、沟通表达

Q011. 在学校里或者公司中最有成就感的事 | ⭐⭐

考察点: 个人价值观、团队协作、成就动机、表达能力

相关推荐
long_run7 小时前
C++之头文件 (.h)
c++
重启的码农7 小时前
云游戏技术之高速截屏和GPU硬编码 (1) 捕获-预处理-编码流水线
c++·云计算·音视频开发
重启的码农7 小时前
云游戏技术之高速截屏和GPU硬编码 (2) 应用程序主控
c++·云计算·音视频开发
czhc11400756637 小时前
LINUX 91 SHELL:删除空文件夹 计数
linux·javascript·chrome
半梦半醒*8 小时前
ansible变量
linux·运维·开发语言·ansible·运维开发
沐怡旸8 小时前
【C++基础知识】深入剖析C和C++在内存分配上的区别
c++
studytosky8 小时前
C语言数据结构之双向链表
c语言·数据结构·c++·算法·链表·c
沐怡旸8 小时前
【底层机制】malloc 在实现时为什么要对大小内存采取不同策略?
c++
HABuo9 小时前
【C++进阶篇】学习C++就看这篇--->多态超详解
c语言·开发语言·c++·后端·学习