温馨提示×

linux c++面试怎么准备

小樊
46
2026-09-17 06:49:40
栏目: 编程语言

准备 Linux C++ 面试,建议从知识体系 + 实战编码 + 项目经验 + 常见面试题四个维度系统准备。下面给你一份比较实用的路线图。


一、C++ 语言基础(必考)

重点不在“会用”,而在“理解原理”。

1. 语法与特性

  • const / constexpr
  • 引用 vs 指针
  • 函数重载、默认参数
  • 面向对象:封装、继承、多态(虚函数表)
  • 构造 / 析构顺序
  • 拷贝构造、移动构造、拷贝赋值、移动赋值
  • 深拷贝 vs 浅拷贝

2. 内存与对象模型

  • 栈 / 堆 / 全局区 / 文本段
  • new / delete 与 malloc / free 区别
  • 内存对齐
  • 智能指针(重点):
    • unique_ptr
    • shared_ptr(引用计数)
    • weak_ptr
  • 循环引用问题

3. C++11/14/17 重点

  • auto / decltype
  • lambda 表达式
  • std::function / std::bind
  • 右值引用、移动语义
  • std::thread
  • nullptr
  • 范围 for

✅ 建议:能手写 shared_ptr simplified 实现


二、Linux 系统基础(高频)

Linux C++ 岗非常看重系统能力。

1. 进程与线程

  • 进程 vs 线程
  • fork / exec
  • 僵尸进程 / 孤儿进程
  • 线程同步:
    • 互斥锁
    • 条件变量
    • 信号量
  • 死锁产生条件 & 避免

2. 文件系统 & IO

  • 文件描述符
  • 阻塞 / 非阻塞 IO
  • 多路复用:
    • select
    • poll
    • epoll(重点)
  • 零拷贝(sendfile / mmap)

3. 网络基础

  • TCP 三次握手 / 四次挥手
  • TIME_WAIT 原因
  • TCP 粘包
  • UDP vs TCP
  • 拥塞控制 / 流量控制(了解)

三、数据结构与算法(手写代码)

Linux C++ 面试通常现场写 C++ 代码。

常考

  • 链表(反转、环检测)
  • 二叉树(遍历、递归)
  • 栈 / 队列
  • 排序(快排、归并)
  • 哈希表
  • 字符串处理

✅ 建议:

  • 用 C++ STL 写(vector, map, unordered_map)
  • 注意边界和异常

四、STL 与底层原理

面试官常问“你怎么用 STL 的”。

  • vector 扩容机制
  • map vs unordered_map
  • 迭代器失效
  • 仿函数
  • allocator(了解)

五、项目准备(非常重要)

没有项目 = 很容易被刷。

推荐项目方向

  • 简易 HTTP 服务器(epoll + 线程池)
  • 聊天室(TCP + 多线程)
  • 内存池
  • 日志系统
  • 协程库(进阶)

项目要能回答:

  • 为什么这么做?
  • 遇到什么问题?
  • 怎么优化的?
  • QPS / 延迟多少?

六、常见面试题示例

  1. malloc 和 new 的区别?
  2. 虚函数是怎么实现的?
  3. shared_ptr 线程安全吗?
  4. epoll 水平触发和边缘触发区别?
  5. 死锁怎么排查?
  6. 程序崩溃如何定位(core dump)?
  7. 如何处理 TCP 粘包?

七、复习资料推荐

  • 《C++ Primer》
  • 《Effective C++》
  • 《Linux 高性能服务器编程》
  • 《UNIX 网络编程》
  • LeetCode(中等题为主)
  • 自己搭 Linux 环境(Ubuntu / CentOS)

如果你愿意,我可以:

  • 给你一份 2 周 / 1 个月复习计划
  • 或直接 模拟一次 Linux C++ 面试
  • 或针对 初级 / 中级 / 高级 分别准备

你现在是几年级 / 有无项目经验?

0 踩