恒生电子C++后端开发面试经验分享

恒生电子 · C++后端开发 · 二面 · 2026-04

面试题目

一面(4月10日)

  1. 多态如何实现?
  2. 进程和线程的区别?
  3. 智能指针有哪些?
  4. C++中的锁用过吗?用过读写锁吗?
  5. 实习阶段跟上级意见冲突时如何解决?
  6. 项目性能优化:C++实现MCP工具调度,如何优化LLM决策性能?
  7. 了解哪些设计模式,在项目或实习中哪里用到过?
  8. SQL了解多少?索引的数据结构是什么?

二面(4月24日,线下)

  1. 深入挖掘实习项目经历(占据前15分钟)。
  2. 个人兴趣爱好及软技能考察(乐器、音乐类型、游戏等)。
  3. 个人成长经历背景调查(家庭背景与学业表现)。

参考解析

  1. 多态实现:通过虚函数(virtual function)实现。编译器会为包含虚函数的类生成虚函数表(vtable),对象头部存储虚函数指针(vptr)指向该表,运行时通过vptr查找目标函数地址,实现动态绑定。

  2. 进程与线程:进程是系统资源分配的最小单位,拥有独立地址空间;线程是CPU调度的最小单位,共享进程资源。进程间切换开销大,线程间通信更高效但需注意同步。

  3. 智能指针:C++11引入了std::unique_ptr(独占所有权)、std::shared_ptr(共享所有权,引用计数管理)和std::weak_ptr(配合shared_ptr解决循环引用),利用RAII机制自动管理内存。

  4. 索引数据结构:MySQL(InnoDB)使用B+树。其优势在于叶子节点存储所有数据且通过双向链表链接,支持范围查询高效;树的高度较低,减少了磁盘IO次数。

  5. 性能优化(RAG):在LLM处理超长上下文时,全量输入会导致延迟和成本问题。通过引入RAG(检索增强生成),利用向量数据库或相似度匹配算法,仅向模型提供与当前指令最相关的Top-K个工具描述,能显著降低Token消耗并提升响应速度。