前言
本人毕业一年,最近陆续面试了头条、瓜子、360、猿辅导、中信银行、老虎等公司,由于最近比较寒冬而且招1-3年的并不多,再加上自己对公司规模和位置有一定要求,所以最后合适的也就这几家了。不过幸运的是所有面试的公司都给了offer。
其实应届生的面试和1-3年的社招相比并没有太大区别,只是对项目能力的要求更高些,基础知识问题都差不多,在这里总结下经验,大家有什么问题也可以留言问我。
面经地址:https://juejin.im/post/5d3d311251882548de1e7369
经验总结
我简单的把面试分了四个部分,然后针对每个部分做下详细的介绍。
技术面-基础
技术面-算法、数据结构
技术面-项目
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、期望薪资
总结
一年经验其实问的并不难,只要把常见的基础面试题都总结好再准备个稍微亮眼的项目就基本没什么问题,同时面试时一定要有自信,不会的不要装懂,问的问题多想想再回答。相信自己,自信的人最有魅力。