本人今年研一,两年制硕士,今年实习。本科前半段迷茫在科班的基础理论学习和课程作业中,大一大二对前端一无所知,没想关心太多,只想保研就好。大二暑假参加一项学校项目,第一次接触前端,一脸茫然,发现软件工程还有很多值得探寻的地方。大三保研形势已定,于是参加各种比赛,摸索自己的兴趣所在,终于在一系列比赛种尝到了前端的甜头——原来好看的页面这么吃香(当时就是这么粗浅的认识),于是决定正式入坑,带着起初“前端能让页面好看”这般粗浅好笑的见识,打开新世界,一步步丰富自身,直到今年春招刚好两年半。春招战线很长,从二月中旬一直延续至今,赛程仅刚好过半,目前取得初步成果:
- 网易雷火三轮技术+HR,拿到offer。
- 字节跳动教育业务三轮技术+HR,拿到offer。
- 美团两轮技术,leader就给了通过,在等offer。
- 阿里淘系目前三面结束,被大leader全方位调教,现在准备交叉面,无论成败收获都很多。
- 腾讯PCG到第四面,战线很长,不知能否过关。
在这里把分享面经,附带我自己的简要回答和思考。对于基础问题,大家可以查漏补缺,建议收藏;对于场景或者高层思考型问题,大家参考即可,这些都是面试官根据自己部门或每个人的履历定制的。轮次越多,问题也就越偏向高层,需要大家更多的总结思考,找到平衡,甚至再生产。
网易雷火三轮技术+HR
一面
一面一般都是基础,在回答问题的基础上,最好能主动发散广度深度,面试官印象会很好。
-
介绍下自己并聊聊项目。
-
这个因人而异,要大方得体,讲出重点。主要围绕项目是什么,为何要做这个项目,解决了什么痛点,你在其中负责了什么工作,遇到并解决了什么问题,如何和不同模块合作,把控了多少架构。后两点需要一定思考和积累,把前面的讲清楚能满足一些面试官,但是大厂面试官常常会希望你说一些架构和整体方面的理解,是加分项。
-
- 如何用await和async写一个睡眠函数?
function sleep(time){
return new Promise(function(resolve,reject){
setTimeout(()=>resolve('over'),time);
});
}
async function run(time){
let result = await sleep(time);
console.log(result);
}
run(3000);
- 说说inline元素和inline-block元素的区别。
- CSS基础题,我从布局方面不换行和尺寸方面inline设置宽高无效,inline-block可以来讲,还发散了一些CSS元素体系讲了讲。
- inline元素的margin有用吗?
- 是一个很刁钻的切入口,大家常常忽略对inline元素的研究,还好我平时比较喜欢捣鼓CSS,其实再默认水平方向的文档下,设定水平方向margin是有效的,垂直方向无效。
- 讲讲html如何添加事件监听,事件处理有哪些阶段?
- 添加事件监听很简单,document.addEventListener就能直接来,事件阶段按时间顺序有捕获,目标,冒泡三段。
- 说出三个你知道的不常用的html标签。
- 一般都问那些常用的,结果面试官反其道行之,很佩服。当时只答出<iframe><strong><i><audio>,可以百度一下,其实有很多。
二面
因为我React技术栈比较多,所以这方面问题也多,大家按需食用。
- React中函数组件和类组件的区别。
- React16.9之后,加入了钩子,给组件体系带来了很多新变化,函数组件也拥有了生命周期方面的特性,useEffect钩子其实就是对几个生命周期的封装定制。
- React是如何将redux包装到组件上的?
- React的react-redux库,通过给根组件包装一层<Provider>,并将store绑定上去,需要进行状态管理的组件通过connect包装生成容器组件,并将状态和事件映射到props上。redux其实有很多细节,可以视情况引申。
- React类组件能在componentShouldUpdate中比较属性是否改变来判断是否应该重新render,那函数组件如何实现同样功能?
- 函数组件通过React16.6的包装函数React.memo()得到一个优化后的组件。
- ES6的proxy讲一下。
- 代理,拦截对象的各种类型操作如get和set等,常常在讲到Vue3.0时,用来和Vue2.0的Object.defineProperty对比,其实提到proxy面试官就希望你提到Vue方面的变化。
- Objec