共计 2479 个字符,预计需要花费 7 分钟才能阅读完成。
前言
本人毕业一年,最近陆续面试了头条、瓜子、360、猿辅导、中信银行、老虎等公司,由于最近比较寒冬而且招 1 - 3 年的并不多,再加上自己对公司规模和位置有一定要求,所以最后合适的也就这几家了。不过幸运的是所有面试的公司都给了 offer,在这里总结下经验吧。
掘金:https://juejin.im/post/5d3d31…
经验总结
我简单的把面试分了四个部分,然后针对每个部分做下详细的介绍。
- 技术面 - 基础
- 技术面 - 算法、数据结构
- 技术面 - 项目
- hr 面 - 综合
基础知识部分
基础知识部分是最重要的,我当时看了很多面经,自己查找答案并总结记录,一定要在自己的博客或者 github 上总结一遍,第一可以加深自己的印象,第二以后再找也方便。这里推荐下我当时看的一篇的面经,木易杨老师写的《2018 大厂高级前端面试题汇总》。
然后我再总结下我最近遇到的面试题,标注必考的都是大部分公司都会问的
http
http 相关没有特别难的,常见的了解下就没问题。
- 介绍 Http2,优点和存在什么坑或问题(必考)
- HTTP 报文的请求和返回会有几个部分(请求行、请求头、请求体);每部分具体都有什么(常见的请求头)
- GET 和 POST 的区别
- 输入 url 到页面加载全过程(必考)
- 介绍 HTTPS;HTTP 和 HTTPS 的区别(必考)
- HTTPS 加密过程
- HTTP 缓存控制(强缓存、弱缓存);缓存相关的 HTTP 请求头(必考)
- 对跨域的了解,跨域怎么解决(必考)
- cors 的返回头、cors 预请求,什么时候会出发预请求(必考)
- tcp 的长连接和 http2 多路复用相关
- tcp 拥塞控制和流量控制
- 三次握手四次挥手,为什么三次和四次
- 前端性能优化(必考)
css
css 最近问的越来越少了,只要会写常见的布局就 ok,难点的答不出来也没事。相比移动端相关的会问题的比较多。
- 盒模型
- positon 的值,都是根据什么定位(注意下还有 sticky)
- 栅格布局的原理
- 垂直居中布局
- 上中下布局,中间自适应
- 左中右布局,中间自适应
- 什么 css 可以减少重绘
- 动画相关属性
- 移动端适配方案(必考)
- 移动端适配 1px 的问题
- lineheight 属性 1.5 和 150% 区别
- em 和 rem 的区别
js
重中之重,没啥可说的刷题就完事了,而且像节流防抖、bind、promise 之类的都要会手写。这里就不标必考了,因为大部分都是重点。
- 判断数组方法
- Object.assign 和 Object.create 相关
- 深拷贝和浅拷贝
- let、const 和 var 的区别
- 基本类型和引用类型相关(堆栈)
- bind, call, apply 相关(自己要会实现)
- 介绍事件循环(宏任务微任务,要知道执行顺序)
- 定时器为什么不准(有可能会让你实现一个倒计时)
- 原型介绍
- 继承方法(手写)
- 闭包介绍和它的作用(手写)
- new 实现过程
- 防抖和节流(手写)
- 数组去重、扁平化、柯里化
- this 指向
- es6 特性
- promise 介绍(最好会写)
- promise.all 和 promise.race 介绍(手写)
- async 介绍(了解原理 generator+ 自执行器)
- 异步的串行(可以用 promise 也可以 async)
- 箭头函数指向
- set、map 介绍;和数组、对象的区别
- 模块化介绍 (commnjs amd cmd umd export)
- localstorage sessionstorage cookie
- 事件委托
- Proxy 和 Object.defineProperty
框架相关 (react webpack)
由于我一直用的 react 框架,所以面试也问的相关问题,一定要了解下框架的原理和状态管理的相关原理,同时 webpack 也是必考点。
- React 介绍、优点(必考)
- React 生命周期(最新版本的也要知道)
- 介绍 diff 算法(必考)
- 介绍虚拟 dom、为什么用虚拟 dom
- 组件间的通信方式(必考)
- redux 介绍和原理(必考)
- setState 什么时候异步、什么时候同步、为什么
- 事件机制
- 路由相关、几种 history 以及每种实现原理
- 高阶组件介绍
- 纯函数介绍
- React 新特性了解么
- React hooks 介绍
- React 新生命周期和 React Fiber
- React 和 Vue 对比
- React 常见优化方式
- webpack 介绍、整理的一个流程(必考)
- webpack 的优化做过什么(必考)
- 用过什么 webpack 的 loader 和 plugin(必考)
- webpack 的 loader 和 plugin 的原理
算法、数据结构部分
本来以为只有头条、猿辅导之类的公司才考算法,但是最后发现每家公司都会考,可能都想拿算法来做下区分度了吧。不过遇到做不出来的面试官基本也都会给提示,提示完能写出来也没问题。总体来说考的都是常见的题或者变形而来的,把 LeetCode 或剑指 offer 里常见的 easy 题看了就行。数据结构和设计模式问的很少,但是自己也需要总结了解下。
- 冒泡排序
- 快速排序
- 回文字符串
- 两数之和、k sum
- 大数相加
- 二分查找
- 二叉树前中后遍历
- 二叉树层次遍历
- 二叉树深度优先遍历 (递归、非递归)
- 二叉树广度优先遍历 (递归、非递归)
- 和为 n 的二叉树路径
- 二叉树深度
- 二叉树是否对称
- 链表反转
- 16 进制转 10 进制
项目部分
每个公司都会有项目的介绍,如果你介绍的项目面试官有兴趣的话会很加分,所以一定要认真准备。我一般会介绍之前做的一个前端微服务的架构,项目做了很多优化也比较复杂,感觉算是自己比较加分的部分。
- 介绍下你项目的难点
- 如果现在再看这个项目你会做哪些优化
- 根据项目的具体问题
hr 部分
能到 hr 大概率就是过了,hr 部分基本不会刷人,但是常见的问题也需要想想怎么说。谈薪阶段也是非常重要的,感觉现在的 hr 都是根据你的面试情况、工作年限再加上你手里其他 offer 的薪资来定的,所以手里有大厂高薪 offer 的话还挺重要的。hr 沟通完薪资后可以试探性的加一点问问行不行,现在大部分 hr 都会压薪预留些空间。
- 为什么换工作
- 找工作比较看重什么
- 介绍下你的项目
- 为什么学前端
- 平常怎么学前端
- 手里有哪些 offer、期望薪资
总结
一年经验其实问的并不难,只要把常见的基础面试题都总结好再准备个稍微亮眼的项目就基本没什么问题,同时面试时一定要有自信,不会的不要装懂,问的问题多想想再回答。相信自己,自信的人最有魅力。