腾讯二面技术精华:虚函数、STL操作与多路IO理解

需积分: 16 2 下载量 10 浏览量 更新于2024-09-02 收藏 19KB DOCX 举报
在腾讯二面的面试中,考察了应聘者对基础理论和实践技能的理解深度。以下是一些关键知识点的详细解释: 1. **虚函数与多态**: - 虚函数是面向对象编程中实现多态的关键手段,它允许父类指针或引用调用其子类中的相应函数。 - 纯虚函数是一种特殊的虚函数,没有实现,仅提供函数原型,用于声明抽象类,防止实例化。 - 析构函数不能直接声明为虚函数,因为在构造函数结束后才初始化虚函数表,这时虚函数指针尚未设置。 2. **STL容器操作**: - `vector` 的 `reserve` 用于预先分配内存,以避免频繁的动态内存调整,提高效率,但不能直接访问预分配的元素。 - `resize` 可以改变容器大小并创建或删除元素,此时可以立即使用新分配的元素。 3. **映射容器**: - `map` 是有序的,查找操作的时间复杂度为 O(log n),插入和删除操作也较为高效。 - `unordered_map` 利用哈希表实现,查找速度极快(平均 O(1)),但元素无序,插入和删除可能不是线性的。 4. **哈希表冲突处理**: 哈希表通过哈希函数将键转换为数组索引,冲突通常通过开放寻址法、链地址法或再哈希等方法解决。 5. **多路IO复用**: 多路IO复用技术(如select和epoll)用于高效管理多个套接字,减少系统调用,提高并发性能。select主要基于轮询,epoll则是基于事件驱动,提供了更高级的事件通知机制。 6. **select vs epoll**: - `select` 是最早的多路复用函数,对所有套接字进行轮询,效率较低。 - `epoll` 是Linux系统提供的,只监视感兴趣的文件描述符,提高了事件处理的效率和实时性。 7. **epoll实现原理**: epoll利用内核级事件通知,监听文件描述符集合的变化,当某个事件发生时,不再阻塞进程,而是将事件通知给用户空间的程序。 8. **项目相关问题**: 应聘者被问到最用心的项目,该项目涉及完成端口通信机制,这可能是对网络编程、服务器端或客户端开发技术的考察,可能涉及TCP/IP协议栈,包括三次握手、连接管理、数据传输等。 编程题:面试中要求应聘者编写快速排序算法,这是对编程能力和基本数据结构理解的考核,快速排序是基于分治策略的经典排序算法,其主要步骤包括选择基准值、分区操作和递归调用。应聘者需要展示他们的代码组织能力、逻辑思维和对算法性能的优化理解。