23秋招-顺丰科技前端二面-面经
时间:9 月 16 日
时长:30 min 左右
base:深圳
并没有问项目相关的,而是从一个八股开始循序渐进,然后 GG。
为什么选择前端?(老生常谈的问题)
输入 URL 到页面显示的过程;
TCP 三次握手的过程;
现在有一个 HTML 文件,其中有 13 个 JS 请求,每个 JS 请求耗时 1 s,请问所有的 JS 文件请求完,一共需要多少时间
- 这里应该分情况讨论,首先确定请求是 HTTP1.1 还是 HTTP2,然后确定这 13 个请求是否在同一个域名下,这样的话就有 4 中情况。
- HTTP1.1 + 同一域名:浏览器对统一域名有并发 TCP 连接数量限制,一般是 6~8 个,Chrome 的限制是 6 个。HTTP 1.1 只能顺序处理多个请求,于是总的时间就是 6 + 6 + 1 = 13 s(6 个 TCP 连接顺序处理请求 )
- HTTP2 + 同一域名:HTTP2 可以多路复用,一个 TCP 连接可以并发地处理多个 HTTP 请求(理论上一个 TCP 连接能处理的 HTTP 请求是无上限的)。总的时间 = 1 s。
- HTTP1.1 + 不同域名:每个域名限制只能有 6 个 TCP 连接,总的时间 = 1 s。
- HTTP2 + 不同域名:1s。
- 这里应该分情况讨论,首先确定请求是 HTTP1.1 还是 HTTP2,然后确定这 13 个请求是否在同一个域名下,这样的话就有 4 中情况。
在一个 HTML 文件内,有一个 1000 次的for 循环,每次循环会改变 DOM 元素的值,比如用 innerHTML 更改。执行过程中,页面上是如何变化的?
第一个选项:页面从 1 , 2, 3,... ,1000 变化;
第二个选项:页面从 1, 3,6, 9,..., 1000 变化,并且页面有卡顿;(我选的这个)
第三个选项:页面直接显示 1000(√)
然后面试官开始问,知道事件循环吗。这应该是面试官的提示了,但是我没有 get 到。DOM的更改好像浏览器针对同一个 DOM 节点有优化,会等到更改完了才渲染。但是 DOM 内容的修改应该也是一个宏任务吧,这里不太确定,有知道的大佬说一下。
每个 IP 地址段对应一个地名,比如 1.0.0,0 ~ 2.0.0.0 对应南京,现在有很多这样的 IP地址段。给定一个 IP 地址,判断它的属地。怎么实现。
- 我的思路是把这些 IP 地址段存储为一个 map,然后遍历 map 查找。但没有说清楚 map 怎样存储 IP地址段;面试官说复杂度太高了,怎么优化,我说用二分查找,然后 G 了,map 怎么二分查找。只得投降。
- 应该先确定如何根据 IP 地址判断出城市,然后再选择合适的数据结构存储,再确定算法。
参考
- https://fe-toplion.github.io/blog/interview/question/08.html
- https://juejin.cn/post/6929791675967471623
又是答得稀烂的一场面试,面试官都建议我下来好好复盘。唉。。。
#23届秋招笔面经##顺丰科技##前端面经#