简介面向技术面试准备的计算机基础知识点 PDF 文档重点覆盖计算机网络中的高频考点与“代码随想录知识星球”最强八股文系列的计算机基础篇对应适合后端、前端开发者跳槽或校招前集中复习。内容系统梳理了TCP三次握手与四次挥手、HTTP与HTTPS的区别、DNS域名解析流程、HTTP缓存机制以及浏览器输入URL后的完整工作流程其中DNS部分区分了浏览器缓存、Hosts文件、本地DNS服务器、根服务器逐级查询并对比递归查询与迭代查询HTTP缓存部分则拆分强缓存与协商缓存的判定方式。每个知识点均配有分步拆解、图解说明和面试回答要点便于背诵与查漏补缺。资源包共1个PDF文件整体约37.83MBPDF内直接按章节阅读无需拆分目前已有777人学习使用对想深入理解网络底层原理、提升面试表达能力的求职者来说是一份高性价比的复习素材。1. 计算机基础面试的考点版图从“输入URL后发生了什么”串起全部高频题计算机网络面试题有个规律看起来零散其实都挂在一根主线上。考官从“输入URL后回车发生了什么”开局下一步大概率就顺着DNS解析、TCP三次握手、HTTP缓存、HTTPS、页面渲染一路追问下去。这道连环题的答法直接决定你在面试官眼里是“背了八股”还是“真有网络体系”。这份计算机基础八股文PDF把计算机网络面试内容分成两套结构高频重点区负责把常考题目讲透一问一答区补充零碎考点同系列的九份PDF里本篇正是计算机基础篇适合后端、前端岗位的候选人考前冲刺也适合把零散网络知识整理成体系。拿分的关键不是多背题而是把每个高频题答出层次——先给结论、再讲过程、最后留一个能引导追问的口子。2. 高频考点三次握手与四次挥手的完整链路与状态机追问TCP连接管理是计算机网络面试的第一梯队考点。三次握手和四次挥手不但必考而且几乎必然伴随追问为什么是三次不是两次、第一次握手丢了怎么办、哪位角色进入TIME_WAIT。要拿稳这部分分数不能只背流程要把状态迁移、丢包场景、异常排查全部串起来。2.1 三次握手的标准流程从SYN到ESTABLISHED的状态迁移三次握手的目的不是“建立连接”这四个字而是同步双方的初始序列号并确认彼此的收发能力。标准流程按报文走第一次客户端发送SYN报文初始序列号seqx客户端状态从CLOSED变为SYN_SENT服务器保持LISTEN监听状态。第二次服务器收到SYN后回复SYNACK报文携带自己的初始序列号seqy和确认号ackx1服务器进入SYN_RCVD状态客户端收到后确认“服务器能收能发”在发出第三次握手前已经进入ESTABLISHED。第三次客户端回复ACK报文确认号acky1服务器收到后从SYN_RCVD变为ESTABLISHED。三个状态变化建议背成一条线客户端CLOSED→SYN_SENT→ESTABLISHED服务器LISTEN→SYN_RCVD→ESTABLISHED。面试官经常在答完流程后追问“此时客户端处于什么状态”很多考生只背了报文名称没背状态当场卡住。状态迁移是判断你是否真正理解握手过程的第一道分水岭。接着是必问的“为什么是三次不是两次也不是四次”。这类题按“结论两点理由”答三次握手的核心目的是确认双方收发能力正常同时防止失效的历史连接请求突然到达服务器而建立错误连接。第一次握手证明客户端的发送能力和服务器的接收能力第二次握手证明服务器的发送能力和客户端的接收能力让客户端知道自己发的SYN被真正收到第三次握手是让服务器确认“客户端也收到了我的SYNACK”。如果只用两次握手服务器无法区分当前请求是正常连接还是很久以前在网络中滞留的失效SYN一旦失效报文到达服务器会误以为是新连接请求白白建立一条没人用的连接并分配资源。2.2 四次挥手与TIME_WAIT被追问最多的连接断开细节四次挥手同样按报文推进。客户端先发送FIN报文表示“我这边数据发完了”进入FIN_WAIT_1状态服务器收到后回复ACK进入CLOSE_WAIT状态客户端收到ACK后进入FIN_WAIT_2。服务器此时可能还有数据没发完等应用层把剩余数据处理完服务器再发送FIN进入LAST_ACK状态客户端收到FIN后回复最后一个ACK进入TIME_WAIT状态等待2MSL之后彻底关闭。服务器收到这个ACK后直接关闭连接。为什么是四次而不是三次因为TCP是全双工通信两个方向的关闭必须独立完成。客户端发送FIN只代表“客户端不再向服务器发送数据”但服务器仍然可以向客户端发送数据所以服务器不能把ACK和FIN合并成一次必须先回ACK确认收到关闭请求等自己的数据全部发完再单独发FIN。两个方向的关闭动作天然无法合并且必须按序进行所以需要四步。TIME_WAIT等待2MSL最常被追问。它有两个作用第一保证主动关闭方发出的最后一个ACK能送到对方。如果这个ACK在网络中丢失被动关闭方会因为收不到确认而重发FIN主动关闭方处于TIME_WAIT期间还可以再补一次ACK确保对方正常关闭。第二让本连接中还在网络中滞留的旧报文自然消失避免端口被复用后旧数据干扰新连接。记一个锚点就够“等别人把告别信收好也等旧消息在网络上散场。”2.3 真题演练丢包、携带数据、连接异常三类追问怎么答真题一第一次握手丢失了会发生什么这类题考的是可靠传输机制。客户端发出SYN后在超时时间内没有收到服务器的SYNACK就会触发超时重传重新发送SYN。重传间隔通常指数退避从1秒左右开始逐次翻倍达到操作系统配置的最大重传次数后放弃连接报错提示“连接超时”。关键要说出TCP的重传机制保证了SYN最终要么被可靠送达要么在失败后及时宣告失败而不是无限等待。真题二三次握手过程中可以携带数据吗第一、二次握手不能携带数据第三次可以。原因要答两层第一连接尚未建立时如果允许携带数据攻击者可以在SYN报文中夹带大量数据服务器在未完成连接建立时就得为这些数据分配缓存并处理这会放大SYN Flood等攻击的危害第二第三次握手时客户端已经确认服务器收发能力正常连接具备可靠性基础数据随ACK一起发送不会增加额外往返时间是安全的。真题三线上出现大量TIME_WAIT或CLOSE_WAIT怎么排查这类题把协议知识和工程经验放在一起考。先分角色再定方案TIME_WAIT属于主动关闭方大量出现通常是因为短连接创建太频繁常见于高并发HTTP请求场景可以从连接复用、调整TIME_WAIT回收参数入手。CLOSE_WAIT属于被动关闭方如果服务端大量堆积CLOSE_WAIT几乎可以断定应用层没有调用close()出现了socket泄漏调任何TIME_WAIT参数都没用。答题时先说出状态归属再说排查方向才是面试官想听到的工程判断力。3. 高频考点DNS解析、HTTP缓存与版本演变的答题素材离开TCP连接管理下一组高频考点集中在DNS、HTTP缓存和HTTP版本演进。这三块内容的特点是记忆点多、彼此独立但面试题一旦追深很容易暴露“只背了名词”的弱点。下面把三个模块的答题素材按可背、可复述的方式整理出来。3.1 DNS解析全流程缓存层级、递归与迭代怎么讲不丢分DNS这题要答出的深度是从“为什么不能集中式设计”到“解析过程中每一级谁在回答”再到“递归和迭代到底是谁对谁”。先答为什么采用分布式集中式设计有四个致命问题——单点故障一台DNS服务器挂掉整个网络瘫痪通信容量所有查询都由一台机器扛不现实可能的并发量是千万级远距离时延集中式服务器不可能邻近所有用户跨区域的查询会经过低速链路导致严重延迟维护困难域名记录频繁变化集中式数据库更新成本巨大。接着答域名层级关系。域名用句点分隔越靠右层级越高比如www.server.com中com是顶级域server.com是二级域www是主机名。解析过程本质上是“逐级向下找人要答案”。完整解析流程按8步记忆第一步查浏览器缓存第二步查本地Hosts文件第三步向本地DNS服务器查询本地DNS通常由运营商提供第四步如果本地DNS没有缓存它向根DNS服务器发出查询第五步根DNS不负责具体域名解析它告诉本地DNS该去找哪个顶级域服务器比如.com对应的顶级域DNS第六步本地DNS向顶级域DNS查询顶级域DNS同样不直接返回IP而是告诉它该找哪个权威DNS服务器第七步本地DNS向权威DNS查询权威DNS存储着域名和IP的真实映射返回最终IP地址第八步本地DNS把IP返回给浏览器并将解析结果缓存到本地方便下次访问快速响应。递归和迭代的区别是追问重点。一句话锚住客户端与本地DNS服务器之间是递归查询本地DNS与根、顶级域、权威DNS之间是迭代查询。递归查询的特点是DNS客户端只发一个请求然后等待完整结果本地DNS负责替客户端逐级问到底迭代查询的特点是客户端向每一级服务器只询问“下一步该找谁”拿着新地址自己再查不要求直接返回完整解析结果。补充一句“递归查询适合普通用户和客户端迭代查询适合DNS服务器之间的通信”就完整了。3.2 HTTP缓存强缓存与协商缓存的判断顺序与应答模板HTTP缓存的高频程度不亚于三次握手而且更容易失分。很多候选人知道Cache-Control和ETag但说不清两者的触发顺序一旦面试官画一条时间线问“浏览器到底发没发请求”就露馅。先把两条缓存线分清楚。强缓存由Cache-Control和Expires控制命中时浏览器不会发起请求直接从本地副本读取资源。Cache-Control里的max-age是相对时间Expires是绝对时间两者都出现时Cache-Control优先级更高因为Expires依赖客户端本地时钟用户改时间就会判断失效。协商缓存由ETag/If-None-Match和Last-Modified/If-Modified-Since控制强缓存失效后浏览器会带着验证字段重新请求服务器服务器比较后返回304表示资源未变、可以继续用缓存返回200表示资源已更新、需要下载新内容。判断顺序是这题的核心得分点先强缓存后协商缓存。强缓存还有效时请求根本不会发出去只有强缓存失效才会带着If-None-Match或If-Modified-Since发请求做协商验证。答题模板可以固定成三步第一步看响应头Cache-Control的max-age在有效期内直接用缓存不发请求第二步max-age过期后带上If-None-Match、If-Modified-Since重新请求服务器第三步服务器返回304就继续用缓存并刷新有效期返回200就替换资源并更新缓存。最后补一句经验ETag比Last-Modified更可靠因为Last-Modified粒度是秒同一秒内文件被修改多次时它判断不出来ETag用内容标识能做到精确比较。3.3 HTTP版本演变从1.1到3.0一条演进线串起来HTTP版本题不要按版本号死背按“每个版本解决了什么、还留下什么问题”的演进逻辑来答面试官会顺着你的节奏走。| 版本 | 引入机制 | 核心解决 | 仍然存在的问题 | | HTTP/1.1 | 长连接、管道传输 | 避免每次请求都新建TCP连接 | 响应队头阻塞、头部冗余 | | HTTP/2 | 二进制帧、Stream并发、HPACK压缩、服务器推送 | 解决HTTP层队头阻塞、降低头部开销 | 传输层TCP队头阻塞仍在 | | HTTP/3 | 基于UDP的QUIC | 解决TCP层队头阻塞、降低握手时延 | 生态与部署仍在演进 |HTTP/1.1的标志性机制是长连接和管道机制。长连接让TCP连接可以复用不需要每个请求都重新握手管道机制允许客户端在同一个连接里连续发出多个请求不必等第一个响应回来才发第二个。但HTTP/1.1的队头阻塞并未被真正解决服务器必须按请求到达的先后顺序返回响应如果第一个请求处理很慢后面所有响应都排队等待。每次请求都携带重复头部字段也是一种带宽浪费。HTTP/2在四个方向上做改进。头部压缩使用HPACK算法静态表存放高频出现的基础头部字段动态表记录同一连接内重复出现的完整头部再叠加Huffman编码把重复字段用短索引代替。二进制帧把数据拆成头信息帧和数据帧用位运算高效解析。并发传输引入Stream概念多个Stream复用一条TCP连接每个请求用唯一Stream ID区分不同Stream的帧可以乱序发送接收端靠Stream ID重新组装因此HTTP/2能并行交错地收发请求与响应。服务器推送允许服务器对客户端的一个请求额外推送CSS等资源省去客户端再次请求的往返。但HTTP/2的队头阻塞只是从应用层转移到了传输层。HTTP/3把底层TCP换成了基于UDP的QUIC在UDP之上自己实现可靠传输和流级并发丢包时只影响单个流不会再让HTTP层拿不到数据。答到这里时主动说明“HTTP/2的队头阻塞在TCPHTTP/3换UDP换的正是这条病根”整个版本演进逻辑就闭环了。3.4 真题演练URL全流程的追问链与状态码扩展“输入URL并回车后发生了什么”是计算机基础面试的题眼几乎所有网络考点都挂在这条主线上。标准七步URL解析、DNS解析、TCP三次握手、发送HTTP/HTTPS请求、服务器返回响应、浏览器渲染页面、断开TCP连接。每一步都可以延伸出可追问的内容。| 步骤 | 关键内容 | 可延伸的追问 | | URL解析 | 拆出协议、主机、端口、路径检查HTTP缓存 | 强缓存与协商缓存的判断顺序 | | DNS解析 | 浏览器缓存→Hosts→本地DNS→逐级查到权威DNS | 递归与迭代的区别 | | TCP三次握手 | 同步序列号、确认收发能力 | 为什么是三次、第一次丢包怎么办 | | 发送HTTP/HTTPS请求 | 请求方法、状态码、TLS握手 | GET与POST的区别、HTTPS如何加密 | | 服务器返回响应 | 状态码、缓存策略、Set-Cookie | 304代表什么、重定向怎么处理 | | 浏览器渲染 | 构建DOM树、CSSOM树、合成渲染树、布局、绘制 | 回流与重绘的区别 | | 断开连接 | HTTP/1.1长连接下未必立即断开 | 四次挥手、TIME_WAIT |扩展两个必背细节。第一是状态码2xx代表成功200最常用3xx代表重定向与缓存301永久重定向、302临时重定向、304协商缓存未修改4xx代表客户端错误400请求语法错误、401未认证、403无权限、404资源不存在5xx代表服务器错误500内部错误、502网关错误、503服务不可用。回答时不需要背全把301、302、304、404、500这五个高频状态码说准就行。第二是GET与POST的区别。GET侧重获取资源参数拼在URL上容易被缓存并保留在浏览器历史里POST侧重提交数据参数放在请求体中不会被缓存。语义上GET是幂等操作POST不保证幂等。曾经有面试官考“POST能不能被缓存”答案是可以但大多数实现不会缓存要区分语义层面和实现层面。对前端候选人第六步是送分点DOM树和CSSOM树合成渲染树再计算布局并绘制改变元素几何属性触发回流只改变颜色等视觉属性触发重绘。说出“回流一定引起重绘重绘不一定引起回流”这句这道题基本就稳了。4. 易错点与失分陷阱计算机网络面试中五个高频翻车点这章专门整理那些“明明会却说错”的瞬间。以下五个点是我在大量面试复盘里反复见到的失分位置每一条都按“错在哪、为什么错、怎么答对”拆开考前值得单独过一遍。4.1 把CLOSE_WAIT和TIME_WAIT的归属方记反错在哪一看到TIME_WAIT就说是服务端问题一看到CLOSE_WAIT堆积就说要调TIME_WAIT参数。为什么错没有想清楚TIME_WAIT只属于主动断开方。四次挥手中谁先发FIN谁最后进入TIME_WAIT被动关闭方收到FIN后回复ACK进入的是CLOSE_WAIT它不是TIME_WAIT。实际工程里服务端大量出现CLOSE_WAIT几乎都是应用层代码没有调用close()导致连接泄漏调任何TIME_WAIT回收参数都没有用。怎么答对先说出状态归属主动关闭方进入TIME_WAIT被动关闭方进入CLOSE_WAIT。再给排查方向TIME_WAIT过多看连接创建释放频率考虑连接复用和回收参数CLOSE_WAIT过多则直接检查应用层为什么没关闭socket。这个回答把协议状态和工程排查串在一起远比报一个结论得分高。4.2 误答“HTTP/2彻底解决了队头阻塞”错在哪把HTTP/2的多路复用等同于完全没有队头阻塞。为什么错HTTP/2解决的是应用层HTTP的队头阻塞底层依然是TCP。TCP是字节流协议内核必须保证字节流按序完整地向应用层呈现一旦某个数据段丢失触发重传后面已经到达的数据也只能待在缓冲区里等待。HTTP/2应用层拿不到缺失的那一段也就无法处理后续消息这就是传输层的队头阻塞。怎么答对把答案拆成两段。先说应用层Stream机制让不同请求的帧交错传输响应不再排队再说传输层TCP的字节流有序约束还在丢包仍然会让后续数据卡在内核缓冲区最后补一句HTTP/3把TCP换成基于UDP的QUIC在流级别解决丢包影响才是根治。能答出这三层面试官会认为你理解链路而不只是背特性清单。4.3 缓存判断顺序颠倒先协商后强缓存错在哪答成“强缓存失效后直接下载新资源”或者“先协商缓存再强缓存”把判断次序搞反。为什么错强缓存和协商缓存的触发时机不同强缓存有效期内浏览器根本不发出网络请求不存在“先走协商”的过程只有强缓存失效后浏览器才带着If-None-Match、If-Modified-Since这类验证字段发起协商请求。顺序反了整个HTTP缓存逻辑就全乱了。怎么答对像背口令一样记住三步先看Cache-Control的max-age是否有效有效就直接用缓存失效后带条件字段请求服务器做协商验证服务器返回304就继续用缓存返回200就换新资源。补一句“Cache-Control优先级高于ExpiresETag优先级高于Last-Modified”把两个优先级都点破这道题就答圆了。4.4 DNS递归与迭代的职责边界答反错在哪回答“根域名服务器做递归查询本地DNS做迭代查询”把角色归属完全说反。为什么错递归和迭代描述的不是服务器类型而是查询责任在哪一方。客户端向本地DNS发起的是一次递归查询客户端把完整解析任务交给本地DNS自己只等最终结果。本地DNS向根DNS、顶级域DNS、权威DNS发起的才是迭代查询每一级只返回“下一步该找谁”不直接给出最终IP。怎么答对先用一句话锚定角色“客户端与本地DNS之间是递归本地DNS与各级域名服务器之间是迭代。”再补充一句“根DNS和顶级域DNS并不负责把域名解析成具体IP它们只负责指引下一步去哪查”。这两句到位追问就追不下去了。4.5 URL主线答不全吞掉缓存判断和渲染细节错在哪从“解析URL”直接跳到“TCP三次握手”把HTTP缓存判断这步省略渲染阶段只说“浏览器把页面画出来”说不出DOM树、CSSOM树、回流和重绘。为什么错这条主线是按浏览器的真实工作顺序设计的不是考试专用流程。记忆被压缩成“连接、传输、断开”三层自然会丢掉缓存判断和渲染这两个最容易出追问的环节而这些位置恰恰是面试官区分前端和后端考察重点的地方。怎么答对按七步走并记住每步的关键词解析URL时顺便判断HTTP缓存DNS解析出IPTCP三次握手发送HTTP/HTTPS请求服务器返回响应与状态码浏览器渲染页面最后再谈断开连接。讲到自己熟悉的节点时放慢节奏主动展开细节。比如讲到第六步就把构建DOM树、构建CSSOM树、合成渲染树、布局、绘制这五步讲完并引出回流和重绘这对概念把考官的追问圈定在你准备好的范围内。5. 答题节奏与押题思路把八股背成面试官想听的结构化答案面试答题不是背诵比赛一套通用的节奏比背得多更有用。我习惯用“结论、过程、扩展”三层结构处理所有网络八股题。结论层先给一句话定性。被问“三次握手为什么是三次”第一句就答“为了确认双方收发能力正常同时防止失效的历史连接请求建立错误连接”。这句话说完面试官已经知道你有理解而不是在背步骤。过程层按时间线或状态机展开一次只讲一个层次讲完一个状态停一下观察面试官是否继续追问。扩展层在收尾时主动抛一个口子比如答完HTTP缓存后补一句“这里还涉及Cache-Control和Expires的优先级问题”把话题引向你有准备的区域让追问落在你的射程内。押题优先级也要分清主次。第一梯队是三次握手与四次挥手、DNS完整解析、HTTP缓存判断、HTTP与HTTPS区别、状态码与GET/POST区别第二梯队是TCP与UDP区别、HTTP版本演变、URL全流程、回源与重绘。时间不够时优先把第一梯队按“结论、过程、扩展”各练一遍比盲目刷几十道题有效。我后来每次备考都保留一个习惯拿“输入URL后发生了什么”当主线把每个考点挂在对应步骤上任选一个节点往深钻一步答不上来就翻资料重新记一遍。练熟之后不管面试官从哪个点切入都能顺着主线绕回自己熟悉的区域。这个办法帮我稳住了好几次面试的节奏和心态希望帮到你。本文还有配套的精品资源点击获取