字节跳动--AI-lab后端开发-面试(凉经)
面试流程
一面
3.7号投的简历,3.8hr电话谈面试
约3.14 5点
一面(50min):
1.首先你的简历上面写了两个小项目,来说一下你认为最贴近后端开发这个的那个项目。(复习了,详细讲了,也没有问问题)
2.你是一个 ACMer,谈一谈ACM,然后谈到工作室负责人,负责做什么(我是Topcoder总负责人)。
3.开始进行一个基础知识的面试,给了五个方面,八股文,选择三个,我瞬间觉得面试官很好哈哈哈。
4.计算机网络,说问了一个面试经常会问的一个问题,关于网页访问的一个流程,访问到渲染出页面的一个过程。(由于本人做个面经的提前准备,就回答了一个DNS解析地址的一个错误,从浏览器DNS缓存,第二个我说了服务器缓存,其中和是不够准确的,浏览器和本地host文件,最后才到服务器)
回答:
总体一个流程:
DNS解析—>TCP 连接—>浏览器发送http请求—>服务器响应请求—>浏览器解析html文件—>浏览器布局渲染
• DNS 解析:将域名解析成 IP 地址
• TCP 连接:TCP 三次握手
• 发送 HTTP 请求
• 服务器处理请求并返回 HTTP 报文
• 浏览器解析渲染页面
• 断开连接:TCP 四次挥手
1.DNS域名解析。
1) 首先会在浏览器DNS缓存中搜索是否有对应的IP映射,如果找到的话,就调用该映射并且停止解析;如果没找到的话就执行第二步;
2)在操作系统DNS缓存中查找是否有对应的IP,如果有的就停止解析,否则就执行第三步;
3)查找本地系统 hosts 文件,在hosts文件中查找是否有对应的IP,如果有的话就停止解析,否则就向本地配置首选的DNS服务器发起域名解析的请求。(当时回答这个的时候,被指出了是最后DNS服务器发起域名解析请求)
2.TCP连接。
TCP通过三次握手创建连接,具体说一下三次握手的过程(。
3.客户端的浏览器向服务器发起http请求。请求报文包括请求行、请求报头、空行、正文
4.服务器对浏览器发过来的请求作以响应。报文中 包括状态行、响应头部、空行、响应正文
5.浏览器对HTML进行解析
(到这面试官就没有再让我继续回答了。)
客户端的浏览器收到服务器的响应之后就按照顺序一个一个地对HTML文件进行解析,构建DOM树,当解析到外部资源文件CSS或JS文件时,会对服务器发送请求,下载资源文件,如果下载的是CSS文件,浏览器会一边下载CSS文件,一边对后面的html文件进行解析,并且构建DOM树,如果下载的是JS文件,那么浏览器就停止对后面html文件的解析,此时就会出现JS页面阻塞的问题。
5.回答的时候有说TCP连接,我就机智的问了要不要详细说一下三次握手,然后我详细讲了三次握手(面试官说你说得很对,就是感觉还是有点紧张哈,其实本人才一开始回答之后就不是那么紧张了,害有些词还是少说得好,比如:然后,嗯 我认为)
6.说一下操作系统(由于我犹豫,他没有问什么问题,也可能是时间关系,他手机刚刚好响了)
7.来说一下数据结构。
8.问了你认为的高效算法,我说了三个快排,归并,堆排。
9.好,你来说一下快排和堆排的时间复杂度和空间复杂度。
10.最后,做题目,平衡二叉树。
11.你还有什么问题么?
问了技术分享,以及我需要学习的东西。
很多想不起来了