腾讯笔试题集:I/O多路复用、网络协议与编程挑战

需积分: 9 0 下载量 172 浏览量 更新于2024-09-07 收藏 174KB DOCX 举报
"腾讯2016研发工程师笔试题合集(二)" 这篇文档包含了腾讯2016年研发工程师笔试的部分题目,主要涉及了计算机编程和网络通信等相关知识,特别是C++语言和系统级编程概念。以下是部分知识点的详细说明: 1. I/O多路复用技术: - `epoll` 和 `select` 都是用来处理多个文件描述符(如套接字)的I/O事件的技术,允许程序同时监听多个I/O事件状态。 - `epoll` 相比于 `select` 更高效,因为它基于操作系统的事件通知机制,而 `select` 使用的是轮询检查,这可能导致不必要的性能损耗。 - `epoll` 支持两种触发模式:水平触发(LT,当事件发生后一直通知,直到被处理)和边沿触发(ET,只在事件状态变化时通知一次)。 - `select` 的缺点之一是能处理的文件描述符数量有限,且这个限制在运行时无法改变。 2. MVC框架: - MVC(模型-视图-控制器)是一种软件设计模式,常用于构建用户界面,将业务逻辑、数据表示和用户界面解耦。 - 在提供的选项中,正确答案是 `模型(model)-视图(view)-控制器(controller)`,这是MVC的基本组成部分。 3. 代码体积膨胀的特性: - 一些编程特性可能导致编译后的代码体积增大,如宏定义(`宏定义`)、模板(`模板`)和内联函数(`内联函数`)。 - 递归(`递归`)虽然可能导致代码复杂性增加,但在编译后不一定会直接导致体积膨胀。 4. C++代码输出分析: - 代码中,变量 `c` 存储了 `a/b` 的结果,即 `2.5`,但由于整数除法,`c` 为 `2`。 - 变量 `d` 被赋值为 `c*a*b++`,此时 `b` 的值为 `4`,所以 `d` 最初等于 `2*2*4`,即 `16`,然后 `b` 自增变为 `5`。 - 由于自增运算符的位置,`d` 的值在计算后不会受到影响。因此,输出结果是 `16`,对应选项 `b`。 5. 哈夫曼树(最优二叉树): - 权值集合 `(16, 8, 4, 2)` 构建的哈弗曼树(最小带权路径长度树)的结构没有给出,但构建过程通常包括将权值最小的节点合并,直到所有节点都合并成一个树。 6. TCP连接状态流转: - TCP连接关闭时,可能出现的状态流转是 `ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED` 或 `ESTABLISHED->FIN_WAIT_1->TIME_WAIT->CLOSED`,对应选项 `c` 和 `d`。 - `CLOSE_WAIT` 和 `TIME_WAIT` 是TCP四次挥手过程中涉及的两个状态,`TIME_WAIT` 确保了数据包的完全传输和网络中的旧数据消除。 7. 正方体三角形概率问题: - 在正方体的6个面中选择3个顶点形成三角形,有多种组合方式,要找到直角非等腰三角形的概率。 - 问题未提供具体计算方法,但正确答案是 `d. 3/7`。 这些题目涵盖了编程基础、系统编程、网络协议和概率统计等多个IT领域的知识,体现了研发工程师笔试的广泛性和深度。