这篇文章简单总结下2018年内我的一些前端面试经历, 在这简单分享一下,希望对大家有所启发。
楼主在深圳,毕业两年。面的主要是深圳的几家公司。
包括: 腾讯
, 蚂蚁金服
, Lazada
, Shopee
, 有赞
等 。
楼主在准备面试前, 想着复习一下, 但是前端的范围实在太大, 后来决定找两个肉鸡公司试一下水, 面试之后, 大概心里有个底。
最后楼主也拿到了 阿里
, Shopee
等几个不错的 offer.
下面就根据上面几家大厂的面试情况,和自己搜集到的一些信息,总结分享给大家。
自我介绍
简单介绍一下就好,适可而止。 面试官就是想看看简历先,让你先说一会儿。
技术一面
一面主要考察基础, 有些会有技术笔试
, 比如腾讯
, Shopee
。
Shopee 有现场的编码题, 难度不大, 要注意细节。
腾讯的技术笔试非常基础,两张纸,一般二十分钟就做完了,主要考察一些js基础,包括但不限于:
CSS
- 盒子模型
- BFC,Flex
变量类型
- JS 的数据类型分类和判断
- 值类型和引用类型
原型与原型链
- 原型和原型链定义
- 继承
作用域和闭包
- 执行上下文
- this
- 闭包
性能问题
- 比如为什么要用事件委托,原理是上面
- 为什么Dom 操作就慢了, 解释一下
- 看程序写输出
框架相关
- 简历上没写就不问, 写了你要答出个所以然, 原理什么的要清楚, 仅仅会用API是不行的。
都是一些很基础的考察, 但是如果写错太多, 也很容易就凉了。
一般是根据你做题的情况, 和你说的一些,针对性的提问, 懂套路的同学可以在这一步上,准备一些关键词, 并做好准备工作。
几乎没遇到问框架
的, 但是基础的原理是要懂
的。
一些发散性问题
- 事件循环, Promise, setTimeout/setInterval, React setState 是如何实现的, 原理等。
- Vue defineReactive 方法是如何实现全局状态更新的, 依赖是如何收集的。
- 语言的词法分析和语法分析 和 浏览器的html parse 有什么区别, 浏览器具体是如何解析的, 为什么标签不闭合浏览器也能正常处理, 能怎么实现,
- C++ 里没有settimeout, 既然没有, 要实现的话,用线程如何实现。
- Html5 新特性
- requestAnimationFrame 是做什么的, 如果写个 Node.js 的C++ 扩展, 怎么去优化requestAnimationFrame ?
- Dns 具体是如何解析的?
- 1 有没有 toString, Number(1) 有没有, ‘1’ 有没有, 为什么
- react diff
- 虚拟DOM
- react 新旧生命周期
- 为啥有新生命周期 , 这两个可以参考我的另一篇文章中,关于 Fiber 和生命周期的介绍
- 事件传播
- Event loop
- Obj getter setter
技术二面
一面完了之后, 会有相应的评价, 二面面试官会针对性的考察。
腾讯的面试官就很喜欢问 HTTP(1.x, 2.0, HTTPS)
, 安全
, 浏览器缓存
方面的问题, 计算机基础,但是要懂为什么
。
比如:
- HTTP 有什么缺点
- HTTP2 有什么好处
- HTTPS 有什么好处, 有什么缺点,为什么。
- TCP, UDP 的区别
- 为什么说HTTPS 是安全的, 解释一下加密过程(就非对称加密, 密钥交换那一套)。
- 三次握手的过程,为什么握手三次, 为什么挥手四次
- 安全相关(XSS & CSRF) (
高频
) - 浏览器缓存策略(
高频
) - 缓存头相关
- 浏览器 Cookie 相关。
- 常见的跨域问题及解决方案
- 常见的安全问题(csrf,点击劫持, 等等)
- 输入URL 到页面展示发生了什么(
超高频
) -
性能优化
策略(结合上一条,高频
)。 - 基础的数据结构和算法(比如快排,merge sort, N sum, Top N 等, 手写代码)
- 事件循环原理, 看题写输出, 解释一下。
- 一些常用的方法, 比如debounce, throttle, new, create, bind 的实现。
- promise, 异步的处理。
- 基础的算法和数据结构(Tree, BFS, DFS)
技术三面(腾讯交叉面)
一般都是没有三面的, 腾讯才有, 具体的套路和前面差不多。 前面两轮你都能的话, 这个就不用怕, 复盘
下前面的面试情况, 准备好再去, 有备无患, 就稳。
楼主的遇到的问题大概是:
- 简单自我介绍
- 问你做的项目
- 遇到什么问题
- 排查问题的方法
- Https 的优势
- Https 连接的过程(证书, 非对称加密的过程,加密算法等)
总监面
一般到了这里就问题不大了, 当然也有翻车的。 这一步主要就是看:
问项目
- 做了什么
- 哪些地方比较出彩, 有什么成果
- 这里我建议实现画个思维导图来梳理, 有计划的突出重点, 自己做的好的,多做准备。
- 看你的沟通能力
- 有些会问你一些智力题,也有人回问数学题(比如矩阵乘法)等, 考察
是否聪明
. - 会python 吗?(腾讯)
- 简述Https 连接的过程(还是非对称加密那一套的流程)(腾讯)
这一步, 总监觉得你OK, 就会放你到HR。
HR 面
这一步, 如果是正常的HR, 会问你:
- 过去的一些经历,做过啥
-
为什么离职
(权衡稳定性) 对工资的期望
这一步不要虚, 毕竟你都走到这了, 怕啥。这里
谈钱不伤感情
,千万不要
:不要急于出价
- 可以先套路一波
给你多少就要多少
- 一旦你说出一个薪酬范围,自己就不能增加薪酬了
谈一次被打击一次,最后越来越没有底气。
- 自信一些, 此条面对
阿里的HR
时, 请自行斟酌。
- 自信一些, 此条面对
也不要漫天要价, 自己值多少钱, 心里(能没个B数?)要有点数, 不知道的,要去
脉脉
上问下。可以适当加多点:- 一方面是留点砍价的空间
- 另一方面, 万一HR就答应了呢, 那不就美滋滋。
- 对于已经谈拢的薪酬待遇,一定要 HR 以发
邮件 offer
的形式来确认。 - 你前面拿的一些
肉鸡公司的offer 可以作为加价的筹码
, 不要扔了。
补充
持续学习
- 面试官还会看你平时的积累, 比如
技术博客
有没有常更新
, 写的都是啥,持续学习很重要。
- 面试官还会看你平时的积累, 比如
关注下产品
- 前端是有义务参与产品的设计的。
关注下业务
- 阿里的leader 会考察你对产品和业务的了解情况。
- 技术特别牛逼的,自行斟酌。
- 要有某个突出的点(或技术, 或产品, 或对业务的理解)。
最后
大概就是这些吧, 有需要面试的朋友可以参考一下,文中的题目, 答案我还在整理, 后面会慢慢写出来。 希望对能给有需要的朋友带来一些帮助 :)
END.