Skip to main content

阿里

问题1. 输入一个 URL 后的查询过程:

  1. 通过进程间通信(IPC),浏览器进程把 URL 请求发送给网络进程
  2. 网络进程查找本地缓存是否包含该资源,如果有缓存资源,那么直接返回资源给浏览器进程,否则
  3. 网络进程构造请求头、请求体,发送 http 请求(需要进行 DNS 解析)
  4. 服务器接收到请求后,构造响应头、响应体,返回数据
  5. 网络进程接收到服务器响应数据后,查看 http 状态码,如果是 301 或 302,通知浏览器进程进行重定向
  6. 然后,浏览器进程检查 content-type,如果是字节流类型,则交给下载管理器进行数据下载
  7. 如果是 html 类型,通知浏览器进程准备渲染页面,浏览器会先检测当前是否已经打开了与请求 url 相同的根域名,如果是,则复用渲染进程,否则,新建渲染进程
  8. 渲染进程会和网络进程建立传输数据的管道,获取数据后进行页面渲染
  9. 渲染完成后,通知浏览器进程进行展示,更新浏览器界面的状态

问题2. UDP 协议的优势,适合什么样的服务:

UDP 面向数据报,占用资源较少,当网络数据大多为短消息,对数据安全性要求不高,但对响应速度要求相当高时,可以利用 UDP。

问题3. 包在网络中的传递过程:

a. 应用层(以 http 为例) Paste b. 传输层,http 使用 TCP 协议,对 HTTP 报文进一步封装,添加源端口号和目的端口号信息。 xx c. 网络层,添加源 IP 和 目标 IP 信息。 xx d. 数据链路层,添加发送方 MAC 地址和接收方 MAC 地址信息 xx 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

一面

  1. webserver 项目
  2. epoll,select,poll 区别与联系
  3. 职业规划:考虑语言还是职位
  4. Linux 命令:怎么获取 TCP/UDP 连接 (netstat)
  5. 红黑树,二叉搜索树,为啥需要平衡
  6. 丢包了怎么调试:
  • 客户端使用 ping 命令(检查网络层是不是能够连接)
  • 服务端检查端口是否已经开放
  • 服务端使用 netstat 命令(检查当前 TCP 连接)
  • 原因:网络环境差、端口未开放、服务端过多连接无法处理
  1. TCP/IP 模型
  2. 算法题:简单题--链表相加