追一科技 C++ 一面

1)C++ 多态和继承

  • 继承:子类复用父类成员,表达 is-a 关系。
  • 多态:同一接口,不同实现;运行时通过基类指针/引用调用子类重写函数。
  • 条件:基类函数要加 virtual,通过指针/引用调用才是运行时多态。

2)C++ 智能指针如何自动销毁

  • 本质:RAII,智能指针对象析构时自动释放资源。
  • unique_ptr:独占所有权,离开作用域自动 delete。
  • shared_ptr:引用计数,计数为 0 时销毁对象。
  • weak_ptr:不增加引用计数,解决循环引用。

3)虚函数的作用

  • 支持运行时多态(动态绑定)。
  • 通过虚函数表 vtable 在运行时决定调用哪个重写函数。
  • 常用于接口抽象、框架扩展、解耦。

4)TCP 通过什么保证可靠传输

  • 序列号 + ACK 确认应答
  • 超时重传
  • 滑动窗口(流量控制)
  • 拥塞控制(慢启动、拥塞避免等)
  • 校验和 + 按序重组 + 去重

5)操作系统主要功能

  • 进程/线程管理(调度、同步、通信)
  • 内存管理(分页、虚拟内存)
  • 文件系统管理
  • 设备管理(I/O、中断)
  • 用户接口与系统调用
  • 安全与权限控制

6)排序算法时间复杂度(最低)

  • 基于比较的排序理论下界:O(n log n)。
  • 非比较排序(计数/桶/基数)在特定条件下可达 O(n)。

7)如何防止类被继承

  • C++11:class A final { ... };
  • 或者构造函数设为 private/protected 并限制创建(不如 final 直观)。

8)出现死锁的原因

死锁四个必要条件同时满足:

  • 互斥
  • 请求并保持
  • 不可剥夺
  • 循环等待

常见场景:线程 A 持有锁1等锁2,线程 B 持有锁2等锁1。 预防:固定加锁顺序、一次性申请资源、超时锁、死锁检测。

9)Go 中 goroutine 的底层调度

  • Go 调度模型:G-M-PG:goroutineM:内核线程P:处理器(调度上下文)
  • 调度器把大量 G 映射到少量 M 上执行。
  • 特性:工作窃取(work stealing)、抢占式调度(新版本更完善)、网络 I/O 与调

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++ 常考面试题总结 文章被收录于专栏

本专栏系统梳理C++方向, 大中厂高频高频面试考点 , 内容皆来自真实面试经历,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力.

全部评论

相关推荐

评论
3
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务