以下是C/C++后台开发常见的高概率面试题

一、语言基础

  1. 多态的实现

    • 通过虚函数表(vtable)实现动态绑定,运行时根据对象类型调用对应的函数。虚函数通过virtual关键字声明,子类可重写基类虚函数112。

  2. 指针与引用的区别

    • 指针是变量,存储地址,支持多级指针;引用是别名,初始化后不可更改,直接操作目标变量。引用更安全且语法简洁21113。

  3. static关键字的作用

    • 隐藏作用域(文件或函数内)、延长局部变量生命周期、类静态成员共享数据。静态函数仅在本文件可见,静态成员函数无this指针71113。

  4. constvolatile

    • const修饰只读变量,volatile防止编译器优化(如多线程共享变量或硬件寄存器)711。

    • 两者可同时修饰变量(如只读状态寄存器)11。

  5. 内存管理

    • malloc/freenew/delete区别:new调用构造函数,delete调用析构函数,支持类型检查812。

    • 内存泄漏检测工具(如Valgrind)及避免方法1。

  6. 虚函数与纯虚函数

    • 虚函数允许子类重写,纯虚函数(virtual void func() = 0;)强制子类实现,用于定义接口1213。

  7. 类型转换

    • static_cast(隐式转换)、dynamic_cast(类层次转换)、const_cast(去常量)、reinterpret_cast(底层重解释)212。


二、数据结构与算法

  1. STL容器实现

    • vector:动态数组,倍增扩容;map基于红黑树(O(log n)查找),unordered_map基于哈希表(O(1)查找,冲突解决如链地址法)1213。

  2. 链表操作

    • 反转链表、检测环(快慢指针)、合并有序链表、删除重复节点12。

  3. 树结构

    • 红黑树特性(近似平衡,插入/删除通过旋转保持平衡),与AVL树对比(红黑树牺牲严格平衡换取更高插入效率)1213。

    • B+树与B树区别(B+树非叶节点仅存索引,数据全在叶节点)12。

  4. 排序与查找

    • 快排(分治,平均O(n log n))、堆排序(构建大顶堆)、归并排序(稳定,O(n)空间)12。

    • 海量数据排序(外排序、分桶法)12。

  5. 字符串处理

    • strcpymemcpy实现及边界处理(如strncpy防止缓冲区溢出)1113。


三、操作系统

  1. 进程与线程

    • 进程是资源分配单位,线程是CPU调度单位。线程共享进程内存空间,切换开销更小21113。

    • 同步机制:互斥锁、条件变量、信号量、自旋锁(忙等待,适用于短临界区)111。

  2. 死锁与避免

    • 条件:互斥、请求与保持、不可抢占、循环等待。避免方法:银行家算法、按序申请资源111。

  3. 内存管理

    • 虚拟内存作用(扩展物理内存、隔离进程空间)、页面置换算法(LRU、FIFO)1113。

    • 内存碎片解决(伙伴系统、Slab分配)1。

  4. 进程间通信(IPC)

    • 管道、消息队列、共享内存、信号量、Socket211。


四、计算机网络

  1. TCP与UDP

    • TCP可靠传输(三次握手、四次挥手、超时重传、滑动窗口),UDP无连接、高效但不可靠112。

    • 可靠UDP实现:应用层添加序列号、确认应答、重传机制1。

  2. HTTP/HTTPS

    • HTTP 1.1长连接、HTTPS通过TLS加密(SSL握手过程)1。

    • 状态码:200(成功)、404(未找到)、502(网关错误)11。

  3. IO模型

    • 同步阻塞、非阻塞、多路复用(select/poll/epoll)、异步IO(如IOCP)112。


五、数据库(补充)

  • 事务ACID:原子性、一致性、隔离性、持久性。

  • 索引优化:B+树索引、覆盖索引、最左前缀原则。

  • 锁机制:行锁、表锁、乐观锁(版本号)与悲观锁。


高频附加题

  • 设计模式:单例模式(线程安全实现)、工厂模式、观察者模式112。

  • 智力题:判断点是否在三角形内(面积法或向量叉乘)2。

  • 系统设计:如何实现高并发服务器(线程池+epoll)、分布式ID生成(雪花算法)111。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码在绒毛下流淌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值