跳槽原因
前东家部门是做旅游的,在这次疫情打击下,基本玩完。
于是我半休半远程三个月后,在4月底领了裁员便当。至今,差不多找了两个月的工作。
本篇不是标准的面经,想从中获取大厂跳槽经验的可以歇一歇。
更多的是想讲一下绝大多数如你如我,学历渣技术差,没大厂经验的前端如何走。
1. Offer
情况
个人比较懒,一周可能就面2~3家,只约下午。部分星期没有面试邀约。
囿于学历+公司,两招聘软件都被我用成“Boss
直拒”和“拉钩上吊”
粗略算了下,面了约12家大中小型公司,仅4家Offer
,情况分别为:
- 某游戏公司
- 某小公司
- 风变编程
- 金山系某司
作为一个社交孤儿,在本次跳槽历程中也是发现自己不少的问题,且听我慢慢道来。
本篇虽然有点丧,但你们可以从中找到对应的问题(我几乎犯了所有面试的低级错误)
部分的公司有:360
奇舞团,某上市游戏公司,风变编程,金山系某司,阿里。
2. 高频面试题汇总
面过的公司有点多,一并说了吧。
1. 从“在浏览器输入域名”到“页面静态资源完全加载”的整个流程
见于:某游戏公司、小鹅通、阿里一面、另外三家小公司
这问题的答案,我结合了yck
《前端面试之道》和 浏览器原理专栏:
整个过程可以分为几步:
-
用户输入
当用户输入关键字并键入回车之后,这意味着当前页面即将要被替换成新的页面,不过在这个流程继续之前,浏览器还给了当前页面一次执行
beforeunload
事件的机会,beforeunload
事件允许页面在退出之前执行一些数据清理操作,还可以询问用户是否要离开当前页面。 -
URL
请求过程首先,网络进程会查找本地缓存是否缓存了该资源。
如果有缓存资源,那么直接返回资源给浏览器进程;如果在缓存中没有查找到资源,那么直接进入网络请求流程。这请求前的第一步是要进行
DNS
解析,以获取请求域名的服务器IP
地址。如果请求协议是HTTPS
,那么还需要建立TLS
连接。- 其中,
DNS
也有几步缓存:浏览器缓存,hosts
文件, - 如果本地域名解析服务器也没有该域名的记录,则开始递归+迭代解析
TCP
三次握手,HTTP
。TLS
握手,HTTPS
。
接下来就是利用
IP
地址和服务器建立TCP
连接。连接建立之后,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie
等数据附加到请求头中,然后向服务器发送构建的请求信息。数据在进入服务端之前,可能还会先经过负责负载均衡的服务器,它的作用就是将请求合理的分发到多台服务器上,这时假设服务端会响应一个
HTML
文件。首先浏览器会判断状态码是什么,如果是
200
那就继续解析,如果400
或500
的话就会报错,如果300
的话会进行重定向,这里会有个重定向计数器,避免过多次的重定向,超过次数也会报错。浏览器开始解析文件,如果是
gzip
格式的话会先解压一下,然后通过文件的编码格式知道该如何去解码文件。 - 其中,
-
准备渲染进程
默认情况下,
Chrome
会为每个页面分配一个渲染进程,也就是说,每打开一个新页面就会配套创建一个新的渲染进程。 -
渲染阶段
文件解码成功后会正式开始渲染流程,先会根据
HTML
构建DOM
树,有CSS
的话会去构建CSSOM
树。如果遇到script
标签的话,会判断是否存在async
或者defer
,前者会并行进行下载并执行 JS,后者会先下载文件,然后等待HTML
解析完成后顺序执行。如果以上都没有,就会阻塞住渲染流程直到
JS
执行完毕。
CSSOM
树和 DOM
树构建完成后会开始生成 Render
树,这一步就是确定页面元素的布局、样式等等诸多方面的东西
在生成 Render
树的过程中,浏览器就开始调用GPU
绘制,合成图层,将内容显示在屏幕上了。
2. eventloop
机制,promise
的实现和静态方法、async
实现。
这题聊起来可就大了,进程,线程,协程。部分还会配以那道最经典的eventloop
题目。
见于:阿里一面、小鹅通、头条一面、360一面、风变编程、