(这些面试题的答案,以及计算机基础常见面试题,我都整理在了:GitHub - wolverinn/Waking-Up: 计算机基础面试问题总结,包含详细的follow-up question以及答案,欢迎围观~)
一面:
计算机网络
- 三次握手
- 握手时产生的序列号干什么用的
- 讲一下接收窗口
- TCP和UDP的本质区别
- 什么时候选择TCP/UDP
- HTTPS的连接过程
- 7层模型和4层模型,每一层有哪些常见协议?
- 路由器/交换机是哪一层
- 网络层用来干嘛?传输层用来干嘛?
- HTTP可以使用UDP吗
- HTTPS怎么确认收到的包就是服务器发来的
- 确定发送窗口的大小,如何最大利用带宽,假设延迟100ms,发送端10Mb/s,接收端100Mb/s
数据库
- 事务的四大特性
- 四种隔离级别
- 什么是幻读
- InnoDB 怎么防止幻读
- B+树原理,为什么使用B+而不是二叉平衡树
操作系统
- 用户态如何切换到内核态
- 进程间通信的方式,哪种最快
- 信号量怎么实现对共享资源的访问
语言
- 什么是Python生成器,迭代器;
- 什么是装饰器;
- 元组和list的区别;
- Python中的dict底层怎么实现的
- list的底层怎么实现的;
- 双等于和is有什么区别
算法
- 求x的y次方,想出比直接for循环更好的方案
- 求绝对众数
二面
设计题:一个数据库存了以下数据:用户id,登录时间,登出时间;如何找到一天当中的用户峰值(用一个hash map存所有秒数的在线人数)
为什么要分用户态和内核态
Git 切换分支,提交,具体如何合并分支
Python多线程用了几个CPU
算法:二叉树,输出所有和为n的路径(可以从中间结点到中间结点)
三面
和其他同学相比,你觉得自己有什么优势
自己的不足有哪些
GitHub和博客上分享过哪些东西
TCP的流量控制和拥塞控制
浏览器中输入网址到获得页面的全过程
输入 www.baidu.com,怎么变成 https://www.baidu.com 的,怎么确定用HTTP还是HTTPS
接触过哪些后端框架
知道redis吗
你用Django的时候,觉得它有哪些好的特性
除了Python还接触过哪些语言
多久入职