小米面试记

小米面试的依旧是运维开发,面试官问我要做 SA 还是 coder,我说要做 coder。以下是电面中问到的问题:

1,tcp 报头有哪些选项及其作用

说了源端口,目标端口,校验和,序列号,确认号,滑动窗口,数据


小米面试记_第1张图片
tcp 报头

2,LVS 的原理及配置

这个我前面几篇提到过,确实是面试的重点

3,在浏览器输入 www.xiaomi.com 发生的全部过程

对于使用 CDN 的网站(从运维的角度解释)

  • 1,解析域名:先查找浏览器 DNS 缓存,查找不到然后就会到系统的 hosts 文件和系统缓存中查找,若找不到,则继续查找路由器的 DNS 缓存,若还没有,则查找 Local DNS 缓存,若没有则 Local DNS 会从根开始进行迭代查找,最终找到域名的 CNAME 记录。浏览器需要再次对获得的 CNAME 域名进行解析,再次过程中会用到智能 CDN 的解析得到离用户最近的缓存服务器的 IP

  • 2,建立连接:查找到 IP 记录后,然后就开始进行 TCP 三次握手建立连接

  • 3,传输数据:客户端向缓存服务器发出请求,根据 HTTP 中指定的资源,缓存服务器中有的会直接让 tcp 传输给客户端,没有的则会请求源站,源站可能还会有像 varnish,squid 这样的缓存服务器,若有资源则直接返回给 CDN 的缓存服务器,若没有则向 Web 服务器(像 nginx,apache,LVS)请求,web 服务器将动态请求转发到后端的应用服务(像 php,tomcat,uwsgi 等),若后端配置有 redis,memcache 数据库缓存服务器,应用服务器会先请求 NoSQL,若没有则 NoSQL 请求数据库服务器(像 MySQL/MariaDB 等),然后将数据发送给前端,并在自身缓存一份。然后服务器将数据传送到 CDN 的缓存服务器,再将数据传送到客户端。

  • 4,浏览器渲染页面

4,讲一下你的爬虫项目

讲了一下我是如何实现的,然后如何处理数据及生成 API,然后又问了几个有关项目中的问题

你可能感兴趣的:(小米面试记)