ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

军队文职考试 ——第一期(真题+解析)| TCP、UDP的区别;程序局部性;ICMP协议及主要功能;重定位所需的计算机硬件

军队文职考试 ——第一期(真题+解析)| TCP、UDP的区别;程序局部性;ICMP协议及主要功能;重定位所需的计算机硬件 1.1 谈一下 TCP 与 UDP 的区别完善回答TCP 和 UDP 是传输层的两个核心协议主要区别如下对比维度TCPUDP连接方式面向连接需三次握手无连接直接发送可靠性可靠有确认、重传、超时不可靠不保证送达数据顺序保证按序到达不保证顺序传输方式面向字节流面向数据报首部开销20 字节最小8 字节流量/拥塞控制有无传输效率较低较高适用场景文件传输、网页、邮件直播、语音、DNS、游戏一句话总结TCP 可靠但慢UDP 快但不可靠。追问 1三次握手过程为什么不是两次三次握手过程客户端发送 SYN1seqx进入 SYN_SENT。服务端收到后回复 SYN1ACK1seqyackx1进入 SYN_RCVD。客户端收到后回复 ACK1seqx1acky1双方进入 ESTABLISHED。为什么不是两次两次握手无法确认客户端的接收能力和服务端的发送能力是否都正常。如果只有两次一个失效的旧 SYN 到达服务端服务端会直接建立连接并等待造成资源浪费。三次握手能确保双方都确认对方的收发能力正常并同步初始序列号。追问 2四次挥手为什么有 TIME_WAIT四次挥手过程主动关闭方发送 FIN进入 FIN_WAIT_1。被动关闭方回复 ACK进入 CLOSE_WAIT主动方进入 FIN_WAIT_2。被动关闭方发送 FIN进入 LAST_ACK。主动关闭方回复 ACK进入 TIME_WAIT等待 2MSL 后进入 CLOSED。为什么有 TIME_WAIT确保最后一个 ACK 能到达对方如果丢失对方会重发 FIN此时还能响应。让本次连接的旧数据包在网络中消散避免影响新连接。追问 3UDP 如何实现可靠传输在应用层实现典型如QUIC给每个包编号接收方确认丢失则重传。维护发送窗口和接收窗口做流量控制。加入拥塞控制算法。在 UDP 之上实现类似 TCP 的可靠机制同时保留 UDP 的低延迟优势。1.2 什么是程序局部性为什么会有程序的空间局部性完善回答程序局部性是指程序执行时对内存的访问集中在较小范围而不是均匀随机访问。分为时间局部性刚被访问过的指令或数据不久后很可能再次被访问如循环变量。空间局部性刚被访问过的存储单元其相邻单元很可能很快被访问如数组遍历、顺序执行指令。为什么会有空间局部性程序通常顺序执行指令按地址顺序存放执行完一条后下一条往往在相邻地址。数组、结构体等数据在内存中连续存放访问一个元素后容易访问相邻元素。这种访问模式适合cache 按块加载和虚拟内存预取因此局部性好的程序性能更高。追问 1局部性在 cache 中如何应用Cache 利用局部性按块加载数据而不是按单个字节。访问一个数据时把相邻数据一起调入 cache这样后续访问相邻数据就能命中。时间局部性让刚访问的块保留在 cache 中空间局部性让相邻块被预取。追问 2TLB 利用的是哪种局部性TLB 利用的是时间局部性。刚访问过的页表项其对应页很可能再次被访问因此把页表项缓存在 TLB 中加快地址转换。追问 3时间局部性和空间局部性分别靠什么硬件利用时间局部性Cache、TLB、分支预测器。空间局部性Cache 按块加载、预取器、虚拟内存按页加载。1.3 ICMP 是什么协议处于哪一层完善回答ICMP全称Internet Control Message Protocol即互联网控制报文协议。它属于网络层协议但比较特殊ICMP 报文本身不直接传输用户数据而是封装在 IP 数据报中作为 IP 层的辅助协议用于传递网络控制信息和差错报告。ping命令就是基于 ICMP 实现的发送 Echo Request接收 Echo Reply。追问 1ICMP 和 IP 的关系ICMP 是 IP 的辅助协议封装在 IP 数据报中传输。IP 负责数据转发ICMP 负责在转发过程中报告差错和传递控制信息。两者配合工作但 ICMP 不传输用户数据。追问 2ICMP 报文会经过传输层吗不会。ICMP 报文直接封装在 IP 数据报中不经过 TCP 或 UDP。它是网络层协议不依赖传输层。追问 3ICMP 和 ARP 的区别ARP地址解析协议负责把 IP 地址解析为 MAC 地址用于同一局域网内通信。ICMP互联网控制报文协议负责报告差错和探测网络用于判断可达性和诊断路径。1.4 为了实现重定位需要哪些硬件完善回答重定位是指把程序中的逻辑地址转换为物理地址的过程。需要的硬件主要有基址寄存器Base Register存放程序或数据段的起始物理地址。限长寄存器Limit Register存放程序或数据段的长度用于越界检查防止访问非法地址。地址加法器 / MMU内存管理单元在运行时将逻辑地址与基址相加形成物理地址。MMU 是现代系统中负责地址转换的核心硬件。越界检查电路比较逻辑地址是否超出限长若越界则产生异常。工作过程CPU 发出逻辑地址 → 与限长寄存器比较做越界检查 → 通过则与基址寄存器相加 → 得到物理地址 → 访问内存。如果是分页/分段系统还需要页表/段表寄存器、TLB 等硬件配合。追问 1静态重定位和动态重定位的区别对比静态重定位动态重定位时机程序装入时一次性完成程序运行时每次访问时完成硬件支持不需要额外硬件需要基址寄存器、MMU 等灵活性程序不能移动程序可以移动缺点内存利用率低需要硬件支持开销略大追问 2MMU 的工作过程CPU 发出逻辑地址。MMU 根据页表基址寄存器找到页表。用逻辑地址的页号查页表得到物理页框号。如果 TLB 命中直接得到物理页框号跳过查页表。物理页框号 页内偏移 物理地址。访问物理内存。追问 3分页和分段的重定位有何不同分页按固定大小划分页表记录页号到页框号的映射重定位时用页号查页表。分段按逻辑单位划分如代码段、数据段段表记录段号到基址和长度的映射重定位时用段号查段表再做越界检查。分页对用户透明分段对用户可见分页解决内存碎片分段更符合程序逻辑结构。一、计算机网络高频题2.1 TCP 三次握手和四次挥手完善回答三次握手客户端发 SYN1seqx进入 SYN_SENT。服务端回 SYN1ACK1seqyackx1进入 SYN_RCVD。客户端回 ACK1seqx1acky1双方进入 ESTABLISHED。四次挥手主动方发 FIN进入 FIN_WAIT_1。被动方回 ACK进入 CLOSE_WAIT主动方进入 FIN_WAIT_2。被动方发 FIN进入 LAST_ACK。主动方回 ACK进入 TIME_WAIT等 2MSL 后关闭。追问 1为什么握手是三次挥手是四次握手时服务端可以把 SYN 和 ACK 合并成一个报文发送。挥手时被动方收到 FIN 后可能还有数据要发所以先回 ACK等数据发完再发 FIN因此多了一次。追问 2TIME_WAIT 为什么是 2MSLMSL 是报文最大生存时间。2MSL 能确保最后一个 ACK 丢失时对方重发的 FIN 还能被响应。本次连接的旧数据包在网络中彻底消散不影响新连接。追问 3如果第三次握手丢失会怎样服务端会超时重传 SYNACK。如果多次重传无响应服务端释放连接。客户端此时认为连接已建立若发送数据服务端会回 RST客户端最终也会关闭。2.2 TCP 拥塞控制完善回答TCP 拥塞控制有四个阶段慢启动cwnd 从 1 开始每收到一个 ACK 翻倍指数增长。拥塞避免cwnd 达到 ssthresh 后每轮只加 1线性增长。快重传收到 3 个重复 ACK立即重传丢失报文不等超时。快恢复ssthresh 减半cwnd 设为新 ssthresh进入拥塞避免。追问 1慢启动真的慢吗不慢。慢启动是指起点低但增长是指数级的很快就能达到 ssthresh。名字有误导性。追问 2超时和快重传的区别超时RTO 到期未收到 ACKcwnd 重置为 1重新慢启动反应剧烈。快重传收到 3 个重复 ACK说明只是个别丢包cwnd 减半进入快恢复反应温和。追问 3TCP 和 UDP 谁更快通常 UDP 更快因为没有握手、确认、重传、拥塞控制开销小。但如果网络差、丢包多TCP 反而能保证数据完整送达。2.3 HTTP 与 HTTPS 的区别完善回答对比HTTPHTTPS安全性明文传输加密传输端口80443协议应用层HTTP TLS/SSL证书不需要需要 CA 证书性能略快略慢有加密开销HTTPS 在 HTTP 和 TCP 之间加了 TLS 层提供加密、身份认证和完整性校验。追问 1HTTPS 握手过程客户端发 ClientHello包含支持的加密套件和随机数。服务端回 ServerHello选定加密套件发证书和随机数。客户端验证证书生成预主密钥用服务端公钥加密后发送。双方用随机数和预主密钥生成会话密钥。客户端发 Finished服务端回 Finished握手完成。追问 2对称加密和非对称加密在 HTTPS 中如何配合非对称加密用于握手阶段安全交换会话密钥对称加密用于数据传输阶段因为速度快。两者结合兼顾安全和效率。追问 3HTTPS 能防止中间人攻击吗能但前提是证书验证通过。如果客户端忽略证书错误或者 CA 被攻破中间人攻击仍可能成功。2.4 DNS 解析过程完善回答以访问www.example.com为例浏览器查本地缓存没有则查系统 hosts 文件。向本地 DNS 服务器发查询请求。本地 DNS 查缓存没有则向根域名服务器查询。根服务器返回.com顶级域名服务器地址。本地 DNS 向.com服务器查询得到example.com权威服务器地址。本地 DNS 向权威服务器查询得到www.example.com的 IP。本地 DNS 把结果返回给浏览器并缓存。追问 1递归查询和迭代查询的区别递归查询客户端只发一次请求由 DNS 服务器负责查到底返回最终结果。迭代查询DNS 服务器返回下一级服务器地址由查询方继续查直到得到结果。追问 2DNS 用 TCP 还是 UDP通常用UDP因为查询报文小、速度快。但在区域传送或响应超过 512 字节时会用 TCP。追问 3DNS 缓存有哪些浏览器缓存、操作系统缓存、本地 DNS 缓存、权威服务器缓存。缓存有 TTL过期后重新查询。2.5 OSI 七层与 TCP/IP 四层完善回答OSI 七层TCP/IP 四层典型协议应用层应用层HTTP、DNS、SMTP表示层应用层TLS、JPEG会话层应用层RPC、NetBIOS传输层传输层TCP、UDP网络层网络层IP、ICMP、ARP数据链路层网络接口层Ethernet、PPP物理层网络接口层光纤、双绞线追问 1为什么 TCP/IP 只有四层因为 OSI 的上三层在实际中界限模糊通常由应用程序统一处理所以合并为应用层。下两层也常合并为网络接口层。四层模型更贴近实际实现。追问 2ARP 属于哪一层ARP 通常被认为工作在网络层和数据链路层之间。它解析 IP 到 MAC为网络层服务但报文封装在数据链路层帧中。追问 3ICMP 属于哪一层网络层。它封装在 IP 数据报中是 IP 的辅助协议。二、操作系统高频题3.1 进程与线程的区别完善回答对比进程线程定义资源分配的基本单位CPU 调度的基本单位地址空间独立共享所属进程的地址空间切换开销大小通信方式IPC管道、消息队列等直接读写共享变量独立性高一个崩溃不影响其他低一个线程崩溃可能影响整个进程资源拥有独立资源共享进程资源追问 1为什么线程切换比进程快线程切换不需要切换页表、不需要刷新 TLB只切换寄存器和栈指针。进程切换需要切换地址空间开销大。追问 2多进程和多线程如何选择需要高可靠性、隔离性强多进程。需要频繁通信、轻量并发多线程。CPU 密集型多进程或多线程均可注意 GIL。IO 密集型多线程或协程更合适。追问 3线程共享哪些资源共享代码段、数据段、堆、打开的文件、信号处理器。独有栈、寄存器、程序计数器、线程 ID。3.2 进程调度算法完善回答常见调度算法FCFS先来先服务简单但长作业可能阻塞短作业。SJF短作业优先平均等待时间最短但可能饿死长作业。RR时间片轮转公平适合分时系统。优先级调度按优先级执行可能饿死低优先级。多级反馈队列综合多种策略动态调整优先级实际系统常用。追问 1RR 时间片设多大合适太大退化为 FCFS太小切换开销大。通常设为略大于一次上下文切换时间的几十倍经验值 10-100ms。追问 2什么是饥饿如何解决饥饿是低优先级进程长期得不到调度。解决方法老化即等待越久优先级越高。追问 3实时调度和普通调度有什么区别实时调度要求在截止时间内完成分硬实时和软实时。普通调度追求公平和吞吐量不保证截止时间。3.3 死锁的四个条件完善回答死锁的四个必要条件互斥资源一次只能被一个进程占用。占有并等待进程持有资源并等待其他资源。不可抢占资源不能被强行剥夺。循环等待存在进程资源的循环等待链。追问 1如何预防死锁破坏任一条件互斥尽量用可共享资源。占有并等待一次性申请所有资源。不可抢占允许抢占。循环等待按序申请资源。追问 2如何避免死锁用银行家算法在分配前判断是否处于安全状态安全才分配。追问 3死锁和饥饿的区别死锁是进程互相等待永远无法推进饥饿是进程长期得不到资源但系统仍在运行最终可能获得资源。3.4 虚拟内存与页面置换算法完善回答虚拟内存让程序使用比物理内存更大的地址空间通过页表把逻辑地址映射到物理地址缺页时从磁盘调入。常见页面置换算法OPT最优置换理论最佳无法实现。FIFO先进先出简单可能有 Belady 异常。LRU最近最少使用利用时间局部性效果好但开销大。Clock近似 LRU用访问位和指针实际常用。追问 1什么是 Belady 异常FIFO 算法中增加物理页框数缺页率反而上升的现象。LRU 和 OPT 不会出现。追问 2LRU 如何实现用双向链表 哈希表。访问页面时移到链表头淘汰时取链表尾。哈希表保证 O(1) 查找。追问 3缺页中断和处理过程CPU 访问页面页表项无效触发缺页中断。操作系统找到空闲页框没有则选一个页面淘汰。如果被淘汰页面脏写回磁盘。从磁盘读入所需页面到页框。更新页表重新执行指令。3.5 用户态与内核态完善回答用户态应用程序运行权限受限不能直接访问硬件。内核态操作系统运行权限最高可执行特权指令。切换方式系统调用、中断、异常。追问 1为什么要区分用户态和内核态保护系统安全和稳定。如果应用能直接操作硬件一个错误程序就可能崩溃整个系统。追问 2系统调用过程用户程序发起系统调用传入参数。触发软中断CPU 切换到内核态。内核执行对应服务例程。返回结果切换回用户态。追问 3中断和异常的区别中断来自外部硬件异步如键盘、网卡。异常来自 CPU 内部同步如除零、缺页、非法指令。三、计算机组成原理高频题4.1 Cache 映射方式完善回答直接映射每个主存块只能映射到唯一 cache 行简单但冲突多。全相联映射主存块可映射到任意 cache 行灵活但比较开销大。组相联映射折中每组内全相联组间直接映射。常用 2 路、4 路、8 路。追问 1Cache 命中率受什么影响局部性、cache 大小、块大小、映射方式、替换算法、程序访问模式。追问 2写策略有哪些写直达同时写 cache 和内存简单但慢。写回只写 cache淘汰时写回内存快但需脏位。追问 3Cache 和 TLB 的区别Cache 缓存内存数据TLB 缓存页表项。Cache 解决内存访问速度TLB 解决地址转换速度。4.2 指令流水线完善回答流水线把指令执行分为多个阶段如取指、译码、执行、访存、写回各阶段并行工作提高吞吐量。追问 1流水线冒险有哪些结构冒险硬件资源冲突。数据冒险后一条指令依赖前一条结果。控制冒险分支指令导致下一条指令不确定。追问 2如何解决数据冒险转发、插入气泡、编译器调度、寄存器重命名。追问 3流水线越深越好吗不是。流水线越深单条指令延迟可能增加冒险和开销也增加。需要权衡。4.3 中断与 DMA完善回答中断外设通知 CPU 处理数据CPU 暂停当前程序执行中断服务程序。DMA直接内存访问外设与内存直接传输数据不经过 CPU传输完成后中断通知 CPU。追问 1DMA 和中断的区别中断需要 CPU 逐字节搬运数据DMA 由控制器直接搬运CPU 只在开始和结束时介入效率高。追问 2DMA 工作过程CPU 设置 DMA 控制器源地址、目标地址、传输长度。DMA 控制器向 CPU 申请总线。获得总线后直接在外设和内存间传输数据。传输完成DMA 发中断通知 CPU。追问 3中断向量表的作用存放中断服务程序的入口地址。CPU 收到中断后根据中断号查表跳转到对应处理程序。
返回列表