🚀 速通 · 计算机基础高频面试题
2149 words
11 minutes
🚀 速通 · 计算机基础高频面试题
🚀 速通 · 计算机基础高频面试题
🎯 你要达到什么水平
能回答计算机网络、操作系统、数据结构与算法、数据库的常见面试题。 对于AI Agent岗位,计算机网络和数据库问得最多,操作系统和数据结构也会涉及。
📦 高频面试题速览
| 类别 | 问题数 | 优先级 |
|---|---|---|
| 计算机网络 | 6 | ⭐⭐⭐⭐⭐ |
| 操作系统 | 5 | ⭐⭐⭐⭐ |
| 数据结构与算法 | 5 | ⭐⭐⭐⭐ |
| 数据库 | 4 | ⭐⭐⭐⭐⭐ |
🌐 计算机网络
Q1:从浏览器输入URL到页面显示,发生了什么?
这是最经典的问题,需要完整说清楚每一步:
1. DNS解析:浏览器缓存→系统缓存→路由器缓存→根DNS服务器2. TCP三次握手:建立连接(SYN→SYN+ACK→ACK)3. 发送HTTP请求:请求行、请求头、请求体4. 服务器处理请求:返回HTTP响应(状态码、响应头、响应体)5. 浏览器解析渲染:HTML→DOM树,CSS→CSSOM树,合并→布局→绘制6. TCP四次挥手:断开连接(FIN→ACK→FIN→ACK)常追问:「为什么是三次握手,不是两次或四次?」
两次无法防止已失效的连接请求到达服务器(历史重复SYN)。三次握手可以让客户端确认服务器能收能发,服务器也能确认客户端能收能发。Q2:HTTP和HTTPS的区别?
HTTP明文传输,HTTPS加密传输(SSL/TLS)HTTPS默认端口443,HTTP默认80HTTPS需要CA证书,验证服务器身份HTTPS比HTTP慢(加密解密+握手延迟)HTTPS的核心:对称加密(加密数据)+非对称加密(交换密钥)+CA证书(验证身份)Q3:HTTP1.0,1.1,2.0的区别?
| 版本 | 特性 |
|---|---|
| HTTP/1.0 | 短连接,每个请求新建TCP连接 |
| HTTP/1.1 | 持久连接(keep-alive)、管道化、Host头、分块传输 |
| HTTP/2.0 | 多路复用(一个TCP连接并发多个请求)、头部压缩、服务器推送 |
Q4:TCP和UDP的区别?
TCP面向连接、可靠、有序、有流量控制和拥塞控制UDP无连接、不可靠、无序、开销小、实时性好
TCP适用:网页、文件传输、邮件UDP适用:视频直播、在线游戏、DNS查询Q5:GET和POST的区别?
GET:数据附加在URL上,长度受限,不安全,可缓存,幂等POST:数据在请求体中,无长度限制,相对安全,不可缓存,非幂等
实际上:GET也可以发请求体,POST也可以把参数放URL,但规范建议 GET用于查询,POST用于创建/修改。Q6:Cookie和Session的区别?
Cookie存在客户端(浏览器),Session存在服务器端Cookie大小有限制(4KB),Session可存任意大小Cookie不安全(可被篡改),Session更安全(但需防Session劫持)配合使用:Session ID通常存在Cookie中💻 操作系统
Q7:进程和线程的区别?
进程是资源分配的基本单位,线程是CPU调度的基本单位进程有独立的地址空间,线程共享进程的地址空间进程切换开销大,线程切换开销小进程间通信(IPC)复杂,线程间通信简单(共享内存+同步)Q8:死锁的四个必要条件?如何避免?
四个条件(缺一不可):1. 互斥:资源一次只能被一个进程使用2. 持有并等待:进程持有资源同时等待其他资源3. 不可剥夺:资源只能由持有者主动释放4. 循环等待:多个进程形成循环等待链
处理方法:- 预防:破坏四个条件之一- 避免:银行家算法(判断分配后是否安全)- 检测:检测到死锁后强制释放- 忽略:Unix/Linux采取鸵鸟策略(假装不存在)Q9:虚拟内存和分页?
虚拟内存:每个进程有独立的虚拟地址空间,通过MMU映射到物理内存分页:将虚拟地址空间和物理内存都分成固定大小的页(通常4KB)页面置换算法:FIFO、LRU(最近最久未使用)、LFU(最少使用)
LRU的近似实现:Clock算法(第二次机会算法)Q10:用户态和内核态的区别?
用户态:应用程序运行的模式,权限受限,不能直接访问硬件内核态:操作系统运行的模式,可执行特权指令,访问所有资源
系统调用:用户态程序请求内核态服务的接口常见系统调用:read、write、fork、open、mmapQ11:Linux常用命令?
必会: ls -la # 列出文件详情 ps -ef / top/htop # 查看进程 netstat -tlnp # 查看端口 grep / awk / sed # 文本处理三剑客 chmod / chown # 权限管理 scp / rsync # 文件传输 systemctl # 服务管理 docker ps / logs # Docker常用🗃️ 数据结构与算法
Q12:数组和链表的区别?
数组:连续内存,随机访问O(1),插入/删除O(n)链表:非连续内存,随机访问O(n),插入/删除O(1)
链表种类:单向、双向、循环Q13:栈和队列的区别及应用?
栈:后进先出(LIFO),应用:函数调用栈、括号匹配、浏览器的前进后退队列:先进先出(FIFO),应用:消息队列、任务调度、BFS
面试常考:用两个栈实现队列、用两个队列实现栈Q14:排序算法的时间复杂度和稳定性?
| 算法 | 平均时间 | 最坏时间 | 空间 | 稳定 |
|---|---|---|---|---|
| 冒泡 | O(n²) | O(n²) | O(1) | ✅ |
| 选择 | O(n²) | O(n²) | O(1) | ❌ |
| 插入 | O(n²) | O(n²) | O(1) | ✅ |
| 快排 | O(n log n) | O(n²) | O(log n) | ❌ |
| 归并 | O(n log n) | O(n log n) | O(n) | ✅ |
| 堆排 | O(n log n) | O(n log n) | O(1) | ❌ |
面试最高频: 快排(思想 + 手写)和归并(思想 + 手写变形)
Q15:哈希表(HashMap)的冲突解决方法?
1. 链地址法(拉链法):同一位置用链表/红黑树存储(Java HashMap)2. 开放寻址法:冲突时寻找下一个空位(ThreadLocalMap)3. 再哈希法:用另一个哈希函数计算4. 建立公共溢出区Q16:树的基本概念?二叉搜索树、平衡二叉树(AVL/红黑树)?
二叉搜索树:左<根<右,查找 O(h)AVL树:任何节点左右子树高度差不超过1,严格平衡红黑树:近似平衡(最长路径不超过最短路径2倍),旋转少,性能好
应用:TreeMap/TreeSet底层是红黑树,HashMap(JDK1.8+)的链表转红黑树🗄️ 数据库
Q17:为什么用B+树做索引,不用B树或红黑树?
B+树:- 非叶子节点只存索引(不存数据),存储更多key,降低树高- 叶子节点用链表相连,支持范围查询(区间扫描)- 所有数据都在叶子节点,查询时间稳定
对比B树:非叶子节点也存数据,树更高,范围查询需要回溯对比红黑树:二叉树,深度大,磁盘IO次数多(不适合外存)Q18:事务的ACID特性?
A(Atomicity 原子性):事务要么全部成功,要么全部回滚C(Consistency 一致性):事务前后数据完整性约束不被破坏I(Isolation 隔离性):并发事务之间互不干扰D(Durability 持久性):事务提交后改变是永久的
实现:原子性靠undo log,持久性靠redo log,隔离性靠锁和MVCCQ19:事务隔离级别与各自的问题?
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交 | ✅ 可能 | 可能 | 可能 |
| 读已提交 | ❌ 解决 | 可能 | 可能 |
| 可重复读 | ❌ | ❌ 解决 | 可能(InnoDB通过间隙锁解决) |
| 可串行化 | ❌ | ❌ | ❌ |
MySQL默认隔离级别:可重复读
Q20:索引失效的场景有哪些?
1. 对索引列使用函数:WHERE YEAR(create_time) = 20262. 隐式类型转换:WHERE phone = 13800000000(phone是varchar)3. 最左前缀原则:联合索引(a,b,c),只查b或c4. LIKE以%开头:WHERE name LIKE '%张三'5. OR条件中有非索引列6. 索引列参与计算:WHERE age + 1 = 207. 数据分布不均匀,优化器认为全表扫描更快⚡ 速通建议
计算机基础准备策略:1. 网络:重点HTTP、TCP/UDP、三次握手四次挥手2. 操作系统:进程线程、死锁、虚拟内存3. 数据结构:数组/链表/栈/队列/树/哈希表,快排必会手写4. 数据库:索引原理(B+树)、事务隔离级别、索引失效
刷题建议:- LeetCode热题100:Array/String/Stack/Queue类Easy-Medium- SQLZoo刷一遍基本SQL- 每天练习手写一个排序(快排/归并)⏱ 准备时间: 3天(分散在两周内每天看一部分) 面试杀伤力: ⭐⭐⭐⭐⭐ 基础题答不好直接挂,答好了是「扎实」的评价
Share Article
If this article helped you, please share it with others!
🚀 速通 · 计算机基础高频面试题
https://estars-blog.pages.dev/posts/精华-速通_14_计算机基础高频面试题/ Related Posts Smart
1
🚀 速通 · Python 高频面试题
求职作战室 不是让你精通Python所有细节,而是能回答面试中最常考的20个问题,同时展示出你写的是「工程代码」而不是「脚本代码」。
2
🚀 速通 · Java 高频面试题
求职作战室 能回答Java基础核心问题,尤其是面向对象、集合框架、JVM基础。
3
🚀 小白速通面试 · 学习弹药包
求职作战室 不要按部就班学 → 不要刷完再面试 → 先搭骨架再填充
4
🚀 速通 · 面试策略与话术实战
求职作战室 不是写代码,而是模拟面试能流畅讲出以下内容:
5
🎯 参考回答 · 高频深度篇(A+ / A 级 · 20 题)
求职作战室 参考回答(面试口语化):
Random Posts Random