阿里 / 钉钉 C++ 面经真题整理¶
参考来源¶
高频真题¶
1. C++ 和 Java 的区别怎么答?¶
速答: 别只说语法,重点答对象生命周期、资源管理、运行时模型和性能边界;C++ 更强调值语义和确定性资源释放,Java 更偏托管运行时和 GC。
细看: 对象模型 / 内存管理
2. 静态局部、全局、成员变量分别存在哪里?作用域和生命周期有什么区别?¶
速答: 这题本质考存储期和作用域:成员变量属于对象,静态局部有函数作用域但程序级生命周期,全局变量和静态存储期对象更偏进程级共享。
细看: STL、模板、编译链接、const/static/inline
3. 编译过程是什么?能不能挑一步展开讲?¶
速答: 预处理、编译、汇编、链接四步,展开时可以补模板实例化、符号解析、ODR 和静态/动态链接差异。
细看: STL、模板、编译链接、const/static/inline
4. 分布式锁都有哪些做法?¶
速答: 常见是数据库锁、Redis 锁、ZooKeeper/etcd 这类协调服务;回答时别忘了补“锁只是手段,关键是超时、续租、幂等和误释放风险”。
细看: Redis:过期淘汰、持久化、高可用
5. 自己怎么做一个定时调度平台?¶
速答: 先把问题拆成任务存储、调度触发、分布式抢占、失败重试、幂等执行和监控告警;别把它答成单机 cron 包装。
细看: 设计模式、系统设计、高并发项目问答
6. 一般是客户端收消息,服务器怎么主动向客户端推送?¶
速答: 常见是长连接、WebSocket、MQ 转推或移动端推送通道;追问时通常会落到连接保活、心跳和离线补偿。
细看: 网络进阶:长连接、WebSocket
7. 红黑树和平衡二叉树(AVL)区别?¶
速答: AVL 更严格平衡,查询更稳;红黑树旋转更少、综合插删更友好,所以工程上更常用。
细看: 数据结构与算法面试基础
8. 数据库怎么设计?¶
速答: 先从核心实体、主键、索引、读写模式、一致性和热点表拆,再谈分库分表或缓存;不要一上来就空讲“范式”。
细看: 数据库与缓存:MySQL、Redis
9. 前端 / 客户端直播访问量很大时,链路该怎么扛?¶
速答: 通常从 CDN、长连接、消息分发、缓存、限流降级和异步化几层拆;阿里这类题很爱看全链路意识。
细看: RPC、消息队列、DNS、CDN / 设计模式、系统设计、高并发项目问答
10. 消息推送为什么常配长连接或 WebSocket,而不是纯轮询?¶
速答: 因为推送场景更在意低延迟和服务端主动下发,轮询实现简单但在连接和带宽成本上通常更差。
细看: 网络进阶:长连接、WebSocket
11. 为什么系统设计题里总会追问幂等、重试和补偿?¶
速答: 因为一旦进入分布式链路,失败和重试是常态;没有幂等和补偿,所谓“优化”很容易把一致性打烂。
细看: RPC、消息队列、DNS、CDN
12. 为什么调度平台和任务中心一定要考虑分布式抢占?¶
速答: 因为多实例部署下如果不做抢占和幂等控制,同一个任务很容易被多个节点重复执行。
细看: 设计模式、系统设计、高并发项目问答
13. 为什么推送 / 调度 / 分布式锁这几类题总会落到“失败处理”?¶
速答: 因为系统设计真正难的不在 happy path,而在超时、重试、重复执行、状态不一致和恢复路径。
细看: 项目面试题:性能优化、线上排障、系统思维
14. 如果让你设计一个消息推送系统,核心模块有哪些?¶
速答: 至少要讲连接管理、在线路由、离线存储、重试补偿、消息顺序和监控告警;阿里这类题很看结构拆分是否完整。
细看: 设计模式、系统设计、高并发项目问答
15. 如果一个分布式任务被重复执行了,你怎么止损?¶
速答: 先靠幂等键和状态机约束兜底,再从抢占、租约、重试策略和补偿链路回头修设计。
细看: RPC、消息队列、DNS、CDN
16. 如果推送系统有大量离线消息积压,你怎么处理?¶
速答: 先区分是消费者能力不足、回源链路慢、重试风暴还是存储模型不合理,再从削峰、分层存储、优先级和补偿策略下手。
细看: RPC、消息队列、DNS、CDN
17. 系统设计题里为什么经常要主动提监控和告警?¶
速答: 因为没有监控就没有闭环,系统设计不只是把功能跑通,还要能发现故障、定位瓶颈和验证优化效果。
细看: 项目面试题:性能优化、线上排障、系统思维
18. 如果一个系统功能做出来了,但监控、回滚、补偿都没做,你会怎么看?¶
速答: 这在工程上通常不算“完整上线能力”,因为一旦出问题几乎没有自救手段;阿里这类题很看上线闭环意识。
细看: 项目面试题:性能优化、线上排障、系统思维
19. 发一个请求出去,不同场景应该怎么优化?¶
速答: 可以从连接复用、序列化、压缩、缓存、异步化、限流降级和下游隔离几层拆;阿里面经里这类题很爱看你有没有“系统拆分能力”。
细看: 设计模式、系统设计、高并发项目问答
算法 / 题单补充¶
- LeetCode 公司页:https://leetcode.cn/company/alibaba/
- 建议优先刷:哈希、树、堆、调度/队列模型、系统设计夹带的结构题
答题提示¶
- 阿里这类题很适合主动从“系统拆分、失败处理、监控告警、补偿恢复”几层展开。
- 如果是设计题,不要只答组件名,最好把数据流、状态流和异常流都说到。
- 如果是分布式题,主动补幂等、重试、补偿、降级,会显得更像真正做过系统的人。
这一类面经的阿里风格¶
公开面经里,阿里 / 钉钉 C++ 题目常见特点是:
- 语言基础照样问,但不会只停在语言
- 很爱把语言题拽到系统设计里
- 高频追问分布式锁、推送、调度、数据库设计、请求优化
- 更看重“你能不能把一个系统问题拆开讲”