阿里
问题1. 输入一个 URL 后的查询过程:
- 通过进程间通信(IPC),浏览器进程把 URL 请求发送给网络进程
- 网络进程查找本地缓存是否包含该资源,如果有缓存资源,那么直接返回资源给浏览器进程,否则
- 网络进程构造请求头、请求体,发送 http 请求(需要进行 DNS 解析)
- 服务器接收到请求后,构造响应头、响应体,返回数据
- 网络进程接收到服务器响应数据后,查看 http 状态码,如果是 301 或 302,通知浏览器进程进行重定向
- 然后,浏览器进程检查 content-type,如果是字节流类型,则交给下载管理器进行数据下载
- 如果是 html 类型,通知浏览器进程准备渲染页面,浏览器会先检测当前是否已经打开了与请求 url 相同的根域名,如果是,则复用渲染进程,否则,新建渲染进程
- 渲染进程会和网络进程建立传输数据的管道,获取数据后进行页面渲染
- 渲染完成后,通知浏览器进程进行展示,更新浏览器界面的状态
问题2. UDP 协议的优势,适合什么样的服务:
UDP 面向数据报,占用资源较少,当网络数据大多为短消息,对数据安全性要求不高,但对响应速度要求相当高时,可以利用 UDP。
问题3. 包在网络中的传递过程:
a. 应用层(以 http 为例) b. 传输层,http 使用 TCP 协议,对 HTTP 报文进一步封装,添加源端口号和目的端口号信息。 c. 网络层,添加源 IP 和 目标 IP 信息。 d. 数据链路层,添加发送方 MAC 地址和接收方 MAC 地址信息 e. 物理层,物理层将帧数据按二进制流形式传输
问题4. 访问百度网站的流程:
a. 解析 www.baidu.com 对应的 IP 地址 b. 主机与百度服务器建立 TCP 连接 c. 使用 HTTP 协议发送请求到服务器 d. 服务器收到请求后,返回结果 e. 浏览器渲染请求得到的结果 f. 关闭 TCP 连接
问题5. ARP 协议:
ARP 的目的是将逻辑 Internet 地址转换为物理硬件地址。
Socket: server: socket -> bind -> listen ... -> accept -> read -> write -> close
client: socket -> connect -> write -> read
一面
- webserver 项目
- epoll,select,poll 区别与联系
- 职业规划:考虑语言还是职位
- Linux 命令:怎么获取 TCP/UDP 连接 (netstat)
- 红黑树,二叉搜索树,为啥需要平衡
- 丢包了怎么调试:
- 客户端使用 ping 命令(检查网络层是不是能够连接)
- 服务端检查端口是否已经开放
- 服务端使用 netstat 命令(检查当前 TCP 连接)
- 原因:网络环境差、端口未开放、服务端过多连接无法处理
- TCP/IP 模型
- 算法题:简单题--链表相加