前言
面试日期为 2021-05-28 19:30 2021-06-02 19:30
28日那天被放鸽子了,因为我某次面试迟到20分钟,所以这次为了展示我大度风范,我等了20分钟,之后发现我被鸽了~~ 且28号的面试 HR都没打电话跟我沟通确认。
因为一面太爽了,在此期间我一直害怕我是被当成备胎了,或者刷kpi,心里慌慌的。
上回我完胜一面面试官,这回应该没那么容易了。
自我介绍
首先面试官开启了摄像头,我看到那边办公区的人满为患,面试官感觉天生就带一股压迫感,那晚他孔武有力,那晚我面色羞愧,也有可能是我社恐的问题,我还是喜欢关灯来~~(不开摄像头)
之后我就开始我的嘴遁(自我介绍),面试就算正式开始了。
简历相关
问 :你印象最深的项目是哪个?难点是什么?是怎么解决的?
PS :说完面试官好像不care我,感觉我很一般。
计算机网络
问 : 当在浏览器中输入网址并且按下回车之后发生了什么?
- 解析URL
- 缓存判断
- DNS解析
- 获取MAC地址
- TCP三次握手
- HTTPS握手
- 返回数据
- 页面渲染
- TCP四次挥手
PS :上来一道送分题,嗯~ 有惊无险,如果再问深一点,恐怕就试探出来我的深度了,所以刚开始不要太深入,对之后不太好。
问 : 浏览器渲染过程 ?
浏览器首先会根据 HTML 文件构建 DOM 树,根据解析到的 CSS 文件构建 CSSOM 树,如果遇到 script 标签,则判端是否含有 defer 或者 async 属性,要不然 script 的加载和执行会造成页面的渲染的阻塞。当 DOM 树和 CSSOM 树建立好后,根据它们来构建渲染树。渲染树构建好后,会根据渲染树来进行布局。布局完成后,最后使用浏览器的 UI 接口对页面进行绘制。这个时候整个页面就显示出来了。
PS :真实情况没说那么全,但是基本该说的点都描述了,这块其实面试官已经感受到我基础差的问题了。
问 : 怎么渲染HTML文件的 ?
答不上来了....
PS :我知道CSS文件和JS文件解析,但是HTML解析渲染,我没查到过,我感觉答案就是上面那道题,但是没敢说,这里从气势上来讲,我已经没了,我把握不好节奏了,反而是面试官引导的面试节奏。
问:浏览器4层模型?
其实这里面试官应该问的 TCP/IP四层模型
我的答案:HTTP,HTTPS,FTP,SMTP
正确答案:应用层,传输层,网络层,网络接口层
PS : 我再三确认后,面试官提示了个应用层,我就没想那么多了,总感觉他问错了,反正慢慢因为面试官的神情,我的体验越来越差。
问:HTTP各个版本以及区别?
我的答案
1.http 1.0 吧啦吧啦
2.http 2.0 吧啦吧啦
3.http 3.0 吧啦吧啦
正确答案:
HTTP/0.9 仅支持GET请求,不支持请求头
HTTP/1.0 默认短连接(一次请求建议一次TCP连接,请求完就断开),支持GET、POST、 HEAD请求
HTTP/1.1 默认长连接(一次TCP连接可以多次请求),支持PUT、DELETE、PATCH等六种请求;增加host头,支持虚拟主机;支持断点续传功能
HTTP/2.0 多路复用,降低开销(一次TCP连接可以处理多个请求);服务器主动推送(相关资源一个请求全部推送);解析基于二进制,解析错误少,更高效(HTTP/1.X解析基于文本);报头压缩,降低开销。
HTTP/3.0 流量控制、传输可靠性功能,集成TLS加密功能,多路复用,快速握。
PS :不是这http0.9和1.1是干啥的?来凑热闹的?反常理啊,这块属实是被拿捏了。
Vue相关
问:VUEX原理
Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样可以方便地跟踪每一个状态的变化
Vue Components 是 vue 组件,组件会触发(dispatch)一些事件或动作,也就是图中的 Actions;
在组件中发出的动作,肯定是想获取或者改变数据的,但是在 vuex 中,数据是集中管理的,不能直接去更改数据,所以会把这个动作提交(Commit)到 Mutations 中;
然后 Mutations 就去改变(Mutate)State 中的数据;
当 State 中的数据被改变之后,就会重新渲染(Render)到 Vue Components 中去,组件展示更新后的数据,完成一个流程
PS :反击的时候来了,我涛涛不绝的讲完后,我感觉我讲的很明白了,然后屏幕那边的面部表情大概意思就是欧?就这?说完了?我一看那个表情,我就不爽。
问:vue router 几种模式 区别是什么?
有hash和history模式2种,
hash模式 : hash值会出现在URL里面,但是不会出现在HTTP请求中,对后端完全没有影响。所以改变hash值,不会重新加载页面。这种模式的浏览器支持度很好,低版本的IE浏览器也支持这种模式。hash路由被称为是前端路由,已经成为SPA(单页面应用)的标配
history模式 : history模式的URL中没有#,它使用的是传统的路由分发模式,即用户在输入一个URL时,服务器会接收这个请求,并解析这个URL,history模式需要后台配置支持。如果后台没有正确配置,访问时会返回404
问: 除了以上俩种还用过其他模式吗?
其他模式? 没有!
PS :知识盲区了,没有.... (盲生,你发现了华点..)。对了,哪位大佬用过其他路由模式的麻烦评论区说下,让我见识见识什么叫其他模式。
项目相关
问:你怎么做的优化?
正常项目优化嘛,毕竟自我介绍中就是那么说的
问:JSX是什么?
JSX是一种JavaScript的语法扩展,运用于React架构中,其格式比较像是模版语言,类似XML,但是需要转义解析,
问:所认知的类似Webpack工具
Webpack适⽤于⼤型复杂的前端站点构建: Webpack有强⼤的loader和插件⽣态,打包后的⽂件实际上就是⼀个⽴即执⾏函数,这个⽴即执⾏函数接收⼀个参数,这个参数是模块对象,键为各个模块的路径,值为模块内容。⽴即执⾏函数内部则处理模块之间的引⽤,执⾏模块等,这种情况更适合⽂件依赖复杂的应⽤开发。
Rollup适⽤于基础库的打包,如Vue、D3等: Rollup 就是将各个模块打包进⼀个⽂件中,并且通过 Tree-shaking 来删除⽆⽤的代码,可以最⼤程度上降低代码体积,但是rollup没有Webpack如此多的的如代码分割、按需加载等⾼级功能,其更聚焦于库的打包,因此更适合库的开发。
parcel适⽤于简单的实验性项⽬: 他可以满⾜低⻔槛的快速看到效果,但是⽣态差、报错信息不够全⾯都是他的硬伤,除了⼀些玩具项⽬或者实验项⽬不建议使⽤。
问:有写过Webpack插件吗?
没,都是直接网上找插件引入到 Plugin 中 , Webpack 在运⾏的⽣命周期中会⼴播出许多事件,Plugin 可以监听这些事件,在合适的时机通过 Webpack 提供的 API 改变输出结果。
问:说一下Webpack Rollup 以及不同?
Webpack适⽤于⼤型复杂的前端站点构建: Webpack有强⼤的loader和插件⽣态,
Rollup适⽤于基础库的打包,,但是Rollup没有Webpack如此多的的如代码分割、按需加载等⾼级功能,其更聚焦于库的打包,因此更适合库的开发。
PS :到我反击的时候了,前阶段面试表现已经不太好了,现在就是补救的时候,党和面试官需要我的时候到了,看我的知识储备,嗯~ 是不, 感觉我能把面试的方面切入到项目优化方向了,引入的很成功嘛。
反问
职业规划,入职培训,新技术的看法,
PS :这才半小时,这就没了?不是我刚找到感觉~,我刚能把话题切入到我能掌握的领域里,要不你问问算法,问问手写。
总结
我这是滴滴二面?
我是谁?
我在哪?
他都问什么了?
不考算法和手写?
我心态炸了,就特么你叫滴滴面试官?
准备了很多手写,算法,代码输出题,一道没考。全是问八股文,整个流程完全没有调离主题的机会,我几次试图将其面试方向切入到项目优化方向,但面试官的老道让我几次都失败了, 嗯 面试官各个体位给我来遍蹂躏,估计真的是一面面试官放海了。
虽然,结果面试感觉不太好,但我还是含有希望的问了HR
这波 这波你只看到我挂,那么你在第一层,你看到HR离职,你只在第二层,而我在大气层。
我们算笔帐,这波螳螂在 ,不是,我目前在职面试,过了就赚,不过我不亏。
反而滴滴呢,缺少了一位潜力巨大,贼jb猛的前端的加入,还少了一位HR实习生。
这波 这波不亏 只有滴滴亏了, 损失了个HR,哈哈哈哈哈哈哈哈哈,
虽然我二面挂了,但是这波搞笑事情反而一点都不低落。因为我还有字节另一部门的面试呢~~~