双非硕,22届,前端岗,有实验室项目,算法题比较弱。
从3.16到4.9,三周面了6家公司18面,一周等待offer call,目前已全部OC(阿里、微信、字节、美团、快手、有赞,5家offer,字节offer审批中)。
附面试历程图一张:
从2月底开始复习准备面试(刷题+基础+项目)。上来就面了快手,之后每一面结束都复盘、总结、扫盲、记笔记,思考面试官问的每一个问题都是以什么为出发点、想考察我哪方面的内容),思考怎样叙述才可以突出项目的亮点。不断面试不断复盘,螺旋式成长。
目录
1. 各厂面试总结,大厂面试风格总结
2. 详细面经分享
3. 如何准备面试
个人复习历程重要知识点(必须掌握)
1. 各厂面试总结

投递方式扫码内推链接官网投递前端训练营投递官网投递官网投递官网投递
面试流程两轮技术面+HR三轮技术面+HR三轮技术面两轮技术面+HR两轮技术面+HR两轮技术面+HR
面试形式☎️ 电话面腾讯会议视频面牛客视频面牛客视频面牛客视频面☎️ 电话面
是否笔试前端岗无笔试否是是否否
面试周期3.20 - 4.123.24 - 4.83.24 -3.20 - 4.83.16 - 3.233.16 - 3.18
offer状态offerofferoffer审批中offerofferoffer
公司个人面试感受
阿里⦁ 感觉阿里今年扩招,比较缺人。
⦁ 我面的部门只有两轮技术面,电话面,没有问到算法题。
⦁ 有项目经历和实习经历的同学一定要好好准备每一个写在简历上的项目,不要只准备最好或者最近的那个。面试官会凭个人兴趣去进行提问,如果没有准备答不上来就很尴尬。
⦁ 阿里重视对项目的理解以及在做项目的过程中有没有自己的思考,高频问题如:
1. 你做的这个东西如果要优化,你觉得哪里还可以优化
2. 从你的某个作品衍生出一个新的功能(会根据作品说明具体功能),你要怎么去实现
⦁收获,每一个项目或实习都要去总结从这个项目你收获了什么(技术深度、技术广度、软实力
微信腾讯的面试流程感觉非常规范,面试官的风格也比较相像:问项目,问基础,做两道题,结束面试
每面都有代码题或算法题。
字节字节面试官风格迥异,整体重代码题和算法题(每面必问)。讲完项目就一直在做题,三轮都是。
字节能过是比较意外的,我本人算法能力是偏弱的,刷题也不多。二面面完一度觉得过不了了,第二天还是收到了三面的通知。
不过4.2通知三面通过offer审批中,就一直在审批流程中,可能评价不高,在排队吧~
美团美团到店,两面技术面。第一面纯技术面,不咋问项目;二面Leader面,会更关注对业务的理解。
快手杭州这边只有一个电商部门,面试时说实习要满六个月有转正机会~
有赞有赞风格有点像网易,重视基础,两面都是基础知识问答

Tip

就我个人经验,面试过程中有一些非常重要的TIP:
保持自信,保持阳光的一种状态
随时反问,有疑问随时提出
做不出来求助
某个函数接口忘记了,直接提问可不可以查一下🔍思考很久没有思路,就问是不是可以给个小提示💡~
2. 详细面经分享

阿里淘系(两轮技术面+HR,电话面)

一面

亮点、难点、最有意义的工作收获优化
基础
204,304状态码浏览器拿到HTML文件之后发生的事情JS异步加载跨域
热情
了解新技术的途径未来想要发展的方向
反问
业务团队规模

二面

亮点优化

HR(所有HR面都相似)

意向稳定性:比如会问籍贯、留杭意向

微信(三轮技术面+HR,视频面)

一面
自我介绍
除项目本身,会考察对项目整体的一个把握,整条开发链路GitFlow测试部署过程
基础
代码题
实现一个类(考察数组拍平):给一个嵌套数组[[1,2],[1],[3],[5]],实现next方法(取下一个值),hasNext方法(是否还有下一个值)
二面
自我介绍
基础
前端模块化,AMD vs CMD熟悉的ES6语法,随后展开promiseasync/awaitconst、let vs var你知道的网络攻击从输入URL到渲染完毕
代码题
给定n个人的出生年份和死亡年份,找出人数最多的一年
三面
代码题
JS中数字运算会丢失精度(0.1 + 0.2 === 0.3是false),给两个浮点数,实现不丢失精度的浮点数相乘
HR

字节(三轮技术面,牛客视频面)

一面
基础
代码题
React Hooks实现倒计时(挺有意思的一道题)读取Cookie为对象
二面
代码题
实现左边固定宽右边自适应布局,各种布局方式(flex、grid、float、position)
实现PlayBoy类:(很好的题,代码如下,大家可以跑一下理解一下)
// 1. 链式调用 // 2. 实现sleep函数 class PlayBoy { constructor (name) { this.name = name; } sayHi () { console.log('大家好,我是' + this.name); return this; } sleep (time) { const start = new Date().getTime(); while (new Date().getTime() - start