1. 前言
本文内容讲笔者在 2019 的秋季社招时期,去大厂面试的问题和经验总结。
居安思危,安逸久了,都要试着知道自己目前的市场价,而最好的方法就是去外面面试几场,受受打击,知道自己的不足,以后加强。
笔者入坑前端 3 年多了,有 2 年多的前端工作经验,面试坐标:广州。
本文的面试问题只写了些开放性的问题,其公司要求保密的试题就不写出来了。
2. 字节跳 X
一面,45 分钟
- 根据自己简历和做过的项目,问一系列相关问题。
- 闭包的输出值,考查闭包(看试题给结果,分析过程)。
- 状态码 304 是什么意思,有什么用?
- 浏览器缓存的方法有哪些,它们的优先级是怎样的?
- 都说要减少 https 的请求,https 为什么慢?
- http2 与 http1 有什么区别?
- click DOM 节点的 inner 与 outer 的执行机制,考查事件冒泡与事件捕获(看试题给结果,分析过程)。
- for 循环中的 var、let 与 const 区别,比如 for(const i = 0; i< 3; i++){console.log(i); } 会输出什么结果?(看试题给结果,分析过程)。
- 有没有系统学习过 es6 或者看过 es6 的书?
- js 单线程、宏任务与微任务的执行顺序(看试题给结果,分析过程)。
- 考查箭头函数的 this 与 普通函数的区别,this 的指向(看试题给结果,分析过程)。
- vue 中 computed 与 watch 的内在是如何实现的?
- 接下来前端要深入的方向?
- 写一个方法输出 ABCDEFG 的值(看试题、现场写程序)。
- 从排好序的两个链表中,找到相同的节点,并输出链表(看试题、现场写程序)。
- 最后面试官问了句,你没刷过什么面试题吗 ????。
总结
最后没过面试,总结一下原因。
- 因为这次面试是字节的猎头找的我,帮我内推的,但我还没准备好就去了,没多大信心;
- 很久没面试了,第一次面试还是比较紧张,很多技术问题的回答也不是很好,现在回想下,当时连情商都不在线 ????。
3. CVT X
一面是电话面试,半小时
- 问了简历中的项目的一系列问题(此处省略)。
- vue 中 next-tick 的作用与大概实现原理?
- vue 组件的双向绑定通信是如何实现的?
- vue 按需加载的方式有几种,是哪几种?
- 浏览器缓存的类别与优先级?
- react 中数据请求为什么要在 某个生命周期里面执行,在哪个生命周期?
- react 高级组件的作用?本质是什么来的?
总结
- CVT X 的面试是找熟人内推的。
- 回答的都挺好,过了一面。
二面是视频 HR 面试,20 分钟
- 问了一系列个人以及在现在公司的问题。
总结
后面就没有下文了,所以没有第三轮现场技术面,我猜原因如下:
- 谈期望薪资时,我说了该公司的招聘信息上的最低薪资,应该还是太高了,因为那是 3 年 + 经验 的薪资范围。
- 再加上我是以前面的字节跳 X 的薪资范围做为了参考标准 ????,字节跳 X 的薪资范围的是很高的,我有点漂了 ????。
4. X 教育
一面,现场面试,大概 1 小时
- var 和 let 的作用域,匿名表达式的运用(看试题给结果,分析过程)。
- –proto– 指向(看试题给结果,分析过程)
- 闭包,及修正方法(看试题给结果,分析过程)
- 一个从小到大排好的数字型数组,找到数值为 target 值,并返回 index 值(现场写程序)
function findIndex(arr, target){…}
- 给两个 input 框,实现双向绑定功能的思路或者代码(现场写程序)。【JavaScript 学习笔记】自己实现双向绑定
- nextTick 的使用场景?
- vue 路由中,有 post/:id 的路由,当路由切换 post/1 => post/2 时,组件会更新吗,如何修改能更新?vue 更新路由 router-view 复用组件内容不刷新
- vue-router 的导航钩子有哪些?组件里面的导航钩子又有哪些?
- header 头部固定,剩下 body 占满全部高,超出就上下滚动,如何实现?
- 平时的开发流程?
二面,大概一个钟
- tcp 和 udp 的区别,各自的优势是什么?
- web-socket 用过吗?
- 对计算机的基础知识熟悉吗,比如网络层什么的?
- 给 10 亿的数据的 url 去重,思路(现场写部分代码)
三面,HR 面
- 问了一系列个人以及在现在公司的问题。
总结
- 技术面试的过程表现的都不错,最终拿到了 offer,开出的薪资涨了不少。
- 虽然总收入涨了,但是就时薪来说,还是亏了的。
- 跳槽的成本是很高的,总薪资或者时薪没有涨 30%,都是亏的。
- 因为现在的公司上班时间是 965 或者说是 955,平时有比较多的时间写博客,做些有意思的开源项目什么的,入职这家公司估计就不能了。
- 所以没去这家公司。
5. 酷 X
一面
线上笔试,20 分钟
- 线上笔试的内容应该是有试题库的,笔试前签了不能泄露试题的协议之类,就不写出来了。
现场逻辑题面试,30 分钟
- 行测逻辑题面试,试题声明了不能泄露试题之类,就不写出来了。
现场技术面试,大概 10 分钟,就问 10 个问题左右
- 模块化开发方式有哪些,你用过哪些?
- 闭包的理解和其应用场景有哪些?对 JS 闭包的理解及常见应用场景
- 对 mvc、mvp、mvvm 的理解?
- vue 双向绑定的理解?
- 对设计模式的理解,有用过哪些?
- http 的理解,tcp 包有什么内容?
- https 为什么比 http 安全?
- https 请求,你通常要注意的是什么?
- post 和 get 请求的区别?
- 前端要考虑什么安全问题,比如:你知道 ssr 跨站脚本攻击吗?
- 一般工作中你是如何排查前端性能问题的?
总结
- 结果是没过,技术面试问的太宽了,以上写出来的问题还是我细化之后的了。
- 我感觉我的技术范围和面试公司的不是很一致。
6. 总结
情况
- 投了十来份简历,都是离我住的地方不是很远的公司,都是广州的大厂,收到的面试邀请才 4 个而已,有些投了简历都没人看。
- 笔者 GitHub 上的开源项目总收获的 Star 数超过了 1.6K 好像也没多大作用,面试过程都没怎么问。
- 广州的互联网大厂其实挺少的,目前大厂没有什么坑位,有的估计也是候补的,要求更加严格,而且社招的几乎都是 3 年及以上的高级前端工程师,不到 3 年经验的没多少机会。
- 2 年多的社招,面试的内容绝大部分还是基础知识,实际工作的内容问得少。
- 笔者在广州的时薪应该算是中偏上的水平。
经过最近的面试,笔者感觉如下:
- 经过 2018 年的寒冬,现在 2019 年下半年了,寒冬依然严峻。
- 想通过社招进大厂的程序员,最好有 3 年及以上经验了再去面试大厂。
- 回答开放性问题时,要把面试官往自己熟悉的方向引。
- 很久没面试了,要准备好再去面试,不然信心不足,成功率不高。
- 面试成功往往是后面面试的公司,先去面试几个不是最想去的公司,再去面试最想去的公司。
- 不要裸辞,特别是才工作一两年的程序员,不然压力非常大,最后可能找到的也是不是非常理想的公司。
- 如果非要跳槽,那建议: 骑驴找马 。
7. 最后
笔者博客地址:GitHub。
推荐阅读:
1. 前端硬核面试专题,内容包含:HTML + CSS + JS + ES6 + Webpack + Vue + React + Node + HTTPS + 数据结构与算法 + Git。
2. GitHub 上能挖矿的神仙技巧 – 如何发现优秀开源项目