当前位置: 首页 > news >正文

以下是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。

相关文章:

  • 一起学大语言模型-通过ollama搭建本地大语言模型服务
  • 【Linux】用户向硬件寄存器写入值过程理解
  • Windows 图形显示驱动开发-WDDM 2.4功能-基于 IOMMU 的 GPU 隔离(三)
  • 程序化广告行业(48/89):DSP与外部平台对接的关键要点解析
  • 检索增强生成(RAG):强化 AI 智能体的知识 “武装”
  • 【C++游戏引擎开发】《线性代数》(6):SVD(奇异值分解)的数学原理与实现
  • Day19 -思维导图 -V2024小迪全栈
  • Uni-app入门到精通:uni-app的基础组件
  • Debian用二进制包安装mysql8.0.41 笔记250401
  • 链表基本操作
  • idea中的--、-D、-X的区别
  • Docker容器深度解析:从基础概念到企业级实践
  • LSTM网络是什么?
  • Suricata配置之YAML
  • Netty的心跳机制怎么实现的?
  • 【408--考研复习笔记】操作系统----知识点速览
  • 深入解析拓扑排序:算法与实现细节
  • EL表达式与JSTL标签库实战指南:从基础到OA系统改造
  • STL新增内容
  • flutter 曲线学习 使用第三方插件实现左右滑动
  • 新任重庆市垫江县委副书记刘振已任县政府党组书记
  • 下周或迎外贸“抢出口”高峰,跨境电商敏感货物如何便利化“登机”?
  • 陕西省市监局通报5批次不合格食品,涉添加剂超标、微生物污染等问题
  • 特朗普公开“怼”库克:苹果不应在印度生产手机
  • 一种声音·阿甘本|即将到来的中世纪;“新”与“旧”……
  • 美将解除对叙利亚制裁,外交部:中方一贯反对非法单边制裁