腾讯C++秋招面试精华:技术全面梳理

版权申诉
0 下载量 28 浏览量 更新于2024-09-07 收藏 301KB PDF 举报
在2019年的腾讯秋招C++面试经历分享中,面试者详尽地回顾了他们在腾讯一面中的表现。面试内容涉及了广泛的C++技术及系统知识,包括但不限于: 1. **自我介绍**:这是每个面试的开场,展示个人背景、技能和项目经验。 2. **项目展示**:面试者分享了具体的项目经验和优化细节,强调了他们的项目中运用的有限状态机。 3. **服务器架构**:考察了应聘者的系统设计能力,包括GET与POST方法的区别,以及网络通信故障排查方法,如使用Fiddler和tcpdump进行诊断。 4. **I/O多路复用**:通过讨论select与epoll的区别,以及ET模式(Event Trampoline)与LT模式(Level Triggered)的应用场景,展示了对非阻塞IO的理解,以及EPOLLONESHOT的工作原理。 5. **TCP基础知识**:面试者深入讲解了TCP报头、拥塞控制、紧急指针、四次挥手过程(TIME_WAIT状态和CLOSE_WAIT状态)以及解决TIME_WAIT问题的方法。 6. **系统调优**:涉及CPU、I/O和内存调优,以及内存管理中的内部碎片、外部碎片的概念及其解决方案。 7. **进程与线程**:对比了进程间通信的不同方式,如ftok函数,以及进程调度和线程安全的概念,包括各种锁类型(互斥锁、读写锁、自旋锁、递归锁、乐观锁、悲观锁)的使用。 8. **数据结构**:vector与list的区别,以及map与unordered_map的用途和场景,展示了对C++标准库STL的理解。 9. **C++语言特性**:讨论了重载、重写和隐藏的概念,以及这些概念在编程中的应用。 10. **算法与数据结构**:通过图形化的方式解释了深度优先遍历和广度优先遍历,以及分布式文件同步和全局变量初始化顺序的问题。 11. **系统工具**:strace指令的使用,以及strcpy和memcpy的原子性问题。 在腾讯二面中,面试内容更偏向于系统架构和技术理解: 1. **服务器理解**:应聘者被问及对服务器模式(reactor和proactor)的理解。 2. **STL**:对STL内存分配和空间配置器的讨论,以及STL与面向对象编程的联系。 3. **面向对象**:讨论面向对象的优点和引入的原因,以及进程地址空间分布和管理的相关问题。 4. **数据库索引**:分析了B树作为数据库索引结构的选择原因。 5. **面试反馈**:应聘者询问了腾讯的面试流程和部门,了解到自己是COG部门,专注于支付平台的工作。 这次面试全面而深入,涵盖了C++技术、系统架构、并发编程、内存管理和数据库等多方面,充分展示了应聘者的技术实力和对行业知识的掌握程度。