记一次大厂面试经历

954 阅读5分钟

作为一个非科班前端,一直有一个「大厂梦」,不过现公司呆着也算舒服,始终没想着走出舒适区。最近因为某些原因,萌生了面试大厂试水的想法,于是说投就投,开始了为期一个月的面试之旅。

个人情况是 17 年某管理专业毕业,现于一家中厂打杂。简历是通过 BOSS 直聘投递给非 HR 的 BOSS,由于投的都是异地的岗位,面试形式主要是电话(视频)面试 + 在线笔试。

这次面的公司主要是几家大厂(蚂蚁、腾讯、京东)和一些中小厂(丁香园、平安科技、明源云等),出乎意料的是大厂技术面全过了,中小厂几乎全挂了,大多挂在了一、二面。接下来就分享一下相关技术面的问题,hr 面的问题都大同小异就不再赘述。

腾讯

一面(一个小时)

  1. 聊聊职业规划,聊聊 devOps,对以后的工作内容有什么要求
  2. 用过哪些单元测试框架?为什么选择 jest
  3. 用过哪些 e2e 测试框架,cypress 与 nightWatch 的区别,聊聊 selenium 和 webdirver
  4. 有没有写过一些开发提效工具
  5. 为什么要离职

二面(半个小时)

  1. 引入 css 有哪些方式,@import<link href=""> 有什么区别
  2. Webpack 打包过程
  3. HTTPS 的握手流程,说说对称加密与非对称加密
  4. HTTP/2 与 HTTP/1.x 有哪些区别,HTTP/2 还存在线头阻塞吗
  5. 输入 URL 到页面展现的过程,白屏优化有哪些方法
  6. 跨域的方案,jsonp 的原理
  7. Vue 与 React 区别
  8. Vue 双向绑定原理
  9. React diff 的原理
  10. cookie 与 session 的区别
  11. xss 是什么以及如何防范
  12. 算法:字符串加法

补充二面(一个小时)

由于二面没过,半个月后又收到了一次「二面」电话。

  1. 什么是 mvvm
  2. Vue 有哪些常用指令?v-showv-if 有什么区别
  3. 了解哪些前端性能优化的方法
  4. 前端有哪些安全性问题?xss 与 csrf 如何攻击以及如何防范
  5. tcp 四次挥手,为什么需要四次?为什么最后一次挥手需要等 2MSL
  6. Vue 双向绑定原理
  7. 如何实现一个 Vue
  8. 如何设计一个通用组件
  9. 如何设计一个 e2e 测试框架
  10. 如何评价当前前端的生态
  11. 为什么要离职
  12. 怎么看待加班
  13. 算法:查找链表的中间节点,快排和冒泡的思路和复杂度

蚂蚁

一面(一个小时)

  1. setTimeout 实现 setInterval
  2. 实现 Promise 的「防抖」
  3. 算法:反转从位置 m 到 n 的链表,要求复杂度 O(N)

二面(一个半小时)

  1. 聊聊项目,裁剪的有哪些常见的交互方案?它们在 PC 端与移动端上的实现有什么差异,说说 marching squares 算法
  2. 用过哪些打包工具?rollup 与 webpack、 parcel 有什么不同?webpack 中 loader 与 plugin 有哪些区别?有写过 rollup 的插件吗?了解 rollup 的插件实现原理吗
  3. webassembly 是不是比 js 快,为什么
  4. 平时写测试吗?有哪些心得
  5. 对以后的工作内容有什么要求
  6. 为什么要离职
  7. 对加班怎么看

三面(十分钟)

  1. 为什么要离职
  2. 如何学习前端
  3. 聊聊职业规划

京东

一面(半个小时)

  1. typescript 中的泛型与其用途,typeinterface 的异同,anyunknown 的异同
  2. HTTP 有哪些常见的状态码
  3. mousedownclick 的区别
  4. mouseentermouseover 的区别
  5. flex 常见属性
  6. 聊聊 HTTP 缓存
  7. 跨页面通讯方案有哪些
  8. 域名劫持如何防范

二面(一个小时)

  1. 聊聊项目,如何实现图像描边,为什么选择使用 react-pixi
  2. 如何设计一个图片编辑器
  3. 矩阵计算的顺序及其影响
  4. 包围盒计算与碰撞检测方案
  5. 编辑器使用 Canvas 与 DOM 进行渲染的优劣
  6. 说说 OffscreenCanvas 的应用
  7. 如何实现 photoshop 中参考线吸附的效果

三面(二十分钟)

  1. 为什么要离职
  2. 谈谈职业规划
  3. 有哪些业余爱好

其他

其他公司的题主要考察的是基础知识,题目包括但不限于以下内容:

  • JS 中的数据类型
  • 原型与原型链
  • 作用域与作用域链
  • 为什么 typeof nullobject
  • 变量提升与 TDZ
  • this 指向
  • EventLoop 流程
  • nullundefined 的区别
  • 箭头函数与普通函数的区别
  • Webpack 打包流程
  • Webpack 持久化
  • Vue 中 computedwatch 区别
  • Vue 的生命周期
  • Vue 的组件通信方式,为什么需要 Vuex?为什么不建议直接更改 Vuex 中 store 的值
  • 了解哪些设计模式
  • CSS 中position 的值有哪些,各有什么用处

总结

关于面试准备,因为起初抱着试一试的心态,也没想着能拿到 offer,所以也没有准备太多,匆匆忙忙刷了一遍 木易杨大佬的面试题 就硬着头皮上了。不过面试后都有及时复盘和查缺补漏。还有一点是,面试心态一定要放好(腾讯二面挂了颓废了好几天)。

说说面试结果,最终收到了腾讯和蚂蚁的 offer,京东挂在了 hr 面上。本来投简历就只是想着试试水,没想到还真就单车变摩托了。不过能有这个结果,运气成分占了大多数(也许是因为每次面试前都会认真洗手?),一是面试题感觉比起其他大厂面经来说简单了很多,二是面试题跟自己的知识面比较符合,比如 CSS 中令人比较苦手的问题并没有被问到(BFC、水平垂直居中之类偏记忆性的知识点)。结论:爱洗手的男孩更容易进大厂。