下一站,开启新的篇章

640 阅读6分钟

经过了半年的思考,加上一个触发的契机,终于下定决心准备跳槽了。9月下旬开始准备,国庆回来开始面试,经历了煎熬与等待,终于在10月底,收获了阿里的offer,然后11月初,又拿到了头条的offer,算是在进入寒冬前,为自己做好了保暖工作吧。

我面的不多,先后就面了阿里、猿题库、360奇舞团、头条。拿到offer之后,就没有再面了。总的给我的感觉是大厂会更加看中开发人员对业务的理解力,而猿题库则会更加注重算法(当然,这应该是早就知道的,只不过没面过没有那么深的体会)。而且,面试的成功与否可能还取决于你之前的项目背景,是否与面试部门的业务相契合。

一、说几个重点

(1)简历上写的基本都会被问到,所以写简历很关键,需要写自己比较熟悉的项目并且突出有亮点的东西。

(2)面试其实就是以后一起共事的同事和你提前进行沟通,所以也是考察自己的沟通能力,需要对自己做过的项目有一定的业务上的理解。

(3)每次面试之后,一定要进行总结,说不定一面问过的你不会的问题三面又会问一遍!

(4)找到自己的一个亮点,通过自己的思考进行系统的梳理,在面试的时候,把涵盖的点都覆盖一遍,会对面试有加分。比如我的简历上写了 React 性能优化,这其实是一个雷点,因为性能优化涵盖的范围很广,只是说一个部分一小点的话,就不会有太好的印象,但是如果能从整体的几个方面进行划分,脑中有一张思维导图,然后再结合自己工作的实践,那么,就会离成功更近一步。请参考我的文章:一张Web性能优化参考图

二、回顾一下自己的面试准备

(1)首先是准备简历,我会针对所投部门的岗位要求来整理自己的简历,后续就可以有针对性进行相应的补习,比如性能优化、前端安全问题;

(2)制定前端知识点复习要点,个个击破(在文章最后有 ⬇️);

(3)刷面经,平常收藏了好多面经,有序的刷了刷,比较推荐 前端 100 问:能搞懂 80% 的请把简历给我

(4)因为我做过的项目基本上都是 React 相关技术栈的,因此又会针对 React 知识点进行对应的复习:怎样学习React?当然是自己动手实现一个React啦2019年17道高频React面试题及详解

(5)leetcode 刷题是必备的,但是光按照 leetcode 上的题目来刷,我感觉效率是相对来说有点低的,而且真的很需要毅力,直到我看到这篇文章:前端该如何准备数据结构和算法?,然后刷题是在 LeetCode 探索 平台,这个平台将题目进行了卡片式归类划分,对于算法的理解或是记忆都会有很好的帮助。

三、感悟

其实第一次跳槽,是很忐忑的,因为未来会有很多的不确定性。当你熟悉了当前的一种工作以及生活模式,熟悉了一起共事的团队小伙伴,要换到另一种全新的未知的环境,是很需要勇气的,需要逃离舒适圈,逼着自己去重新适应的勇气。但是,人生就是一列火车,每一站都会有不同的风景,努力向前吧💪。

在这个过程中,也见识到了头条小伙伴的年轻活力,真诚与热情,沟通之后,收获了很多。有舍会有得,没有一次选择是绝对的,每一条路都会有自己独特的风景。

四、干货推荐

李兵老师的《浏览器工作原理与实践》,必须要墙裂推荐下,也是我面试期间学习的一门课程,收获了很多。

五、前端知识点复习大作战

JavaScript基础

  • 对象创建,new,this,闭包,作用域,执行上下文等
  • 继承、原型链、JS执行原理
  • 事件流
  • 异步回调(Promise、Asnyc/Await)
  • event loop
  • 垃圾回收
  • 正则:match、exec、test

CSS基础

  • BFC
  • 层叠上下文
  • 绝对定位
  • 盒模型
  • flex
  • grid

React技术栈

  • React实现原理,diff 算法,虚拟DOM
  • 生命周期
  • Redux
  • 异步请求选型:redux-saga、redux-thunk

前端工程化

  • 前端部署
  • Webpack:tree-shaking
  • 前端路由:hash、history

网络相关

数据结构和算法

  • leetcode刷题
  • 数组和字符串
  • 递归
  • 排序算法

性能优化

前端安全

  • 浏览器为什么有同源策略?
  • 解决过哪些安全问题?
  • 跨域:JSONP、CORS、PostMessage
  • cookie/session/token

项目梳理

  • websoket、即时通信要点
  • 富文本编辑器
  • 用过的设计模式(不给自己挖坑,简历上没写)
  • 解决的难题、遇到的坑
  • 性能优化点总结

手写代码

六、面试问题回顾

1)自我介绍:每一面都会有自我介绍,需要提前对自己的简历熟悉一遍。

2)项目重点问答。

3)问答题:

  • React 性能优化
  • PureComponent 机制、shouldComponentUpdate 比较的值
  • 浅比较和深比较的区别
  • 长列表滚动优化机制
  • 浏览器渲染流程,下载css和js会阻塞么,页面会如何显示?
  • js 脚本中加上 defer 和 async 区别
  • NaN类型判断
  • 为什么要用 Redux,它的作用是啥?
  • 前端安全:用过 postMessage,有考虑安全问题么?还知道哪些安全问题和对策?
  • es6相关:为什么要有 Set 和 Map,Symbol 取值
  • localStorage 内存分配
  • Webpack 中 tree-shaking 有用过吗?
  • 说说 setTimeout、Promise、Async/Await 的区别
  • 总结下自身的优势和不足
  • 你认为你工作中做的最深入的点是什么?

4)简答题:

  • 考察 Event Loop
  • 考察 React 渲染
  • 考察原型链,Function 跟 Object 的关系
  • 考察 this 指向

5)手写算法题(其实不一定要写全,说出大致思路就可以了):

  • 节流实现
  • 如何实现一个深比较
  • new 实现
  • Promise.all 实现
  • setTimeout 实现 setInterval
  • arr.reduce 实现
  • 数组求交并补
  • 斐波那契数列
  • 二叉树子节点路径求和
  • JSONP实现

6)其它:

CSS 问题 360 问的比较多,其他的也会让实现一些经典布局,不多。 头条Leader面还给了一道思考题,类似于数学上的推理,挺有意思的。