前排提示,非标题党。
背景
写面经之前,先介绍下题者的个人背景,以供给大家参考(节省时间,直接列出重点)。
- 20年毕业
- 本科学历
- base帝都
- 曾在某家大厂工作
面试结果及准备时间
准备时间
1-2个星期(主要是没想到会很快收到面试邀约,导致我天天熬夜刷题到2、3点,头发都要秃了...)
个人认为面试的准备时间尽量在1个月左右,这样有充足的时间去准备面试题和算法。
面试结果
BOSS沟通5家,一家小公司由于要去线下,个人认为时间成本太高(拒面),其余4家包含百度(二轮挂)、快手(进行时)、字节(过)、美团(过)
面试通用
自我介绍
强烈建议在面试之前准备一份自我介绍,其中要包含工作经历、简要的项目描述、职责描述、个人技术栈以及个人优势等内容(重要性就不多介绍了)。
tips:自我介绍要根据具体面试情况而不断调整、优化
项目难点
因人而异,建议面试之前提前构思清楚项目难点,并做适当衍生。
举个例子:
面试官:看到你简历上写了有做过性能优化,可以讲讲你知道的其他方式吗?如果现在去看还有哪些方式可以完成目标?
类似这种问题,如果提前做了准备,那基本上可以说是手拿把掐了。
最近在学习什么
实话实话,同时做好面试官衍生问题的准备,这一部分重点在于告诉面试官你的学习方向和个人对于学习新技术的动力。
如:Wasm、Turoback等等..
温馨提示:没时间学习的话,建议不要去强答,否则撞上对口的面试官会死的很难看
个人未来发展方向
侃大山
面经
不废话了,开始总结面经,其中美团二面、字节二&三面、百度二面我给安排到了一天,从上午两点开始一直到晚上7点多,嗓子快废了。
美团
美团的几轮面试体验非常棒(手动点个赞),面试官会很耐心的去提出问题并进行延申,而并非单纯的八股
一轮
- 多包管理说一下?
- H5与WebView通信
- CSS样式隔离手段
- 性能指标说一下?Web Vitals知道吗?
- 性能优化手段都知道哪些?
- 你在项目中具体做了哪些性能优化?
- 问的非常详细,跟面试官聊完我又找到了一些可能优化的点
- 单元测试和E2E测试说一下?(有用过)
- 尝试过在团队内推广单元测试吗?为什么推广不起来?
- 响应式设计手段
- new操作符的过程
- 原型、原型链
- PromiseAPI了解哪些?
- 手写一个Promise.all
- Webpack的了解?构建过程?与Vite的区别?
- React-router的理解?如何实现?
- Redux的理解?
- 微信小程序的授权流程?
- 简单讲下WebGPU?
二轮
- 项目问题
- 问的比较详细,面试官比较关注细节
- 性能优化做了哪些?全链路性能优化?
- 问的很深
- 性能监控怎么做?
- 为什么有Sentry还要接入其他监控?
- 拨测说一下?
- this指向
- 节流和防抖?写一下?为什么要用匿名函数?为什么要用箭头函数?它们的this指向哪里?
- 这一轮的面试官问的很细节...给答主问懵了,后面会针对节流和防抖全方位写一篇文章,感兴趣可以提前关注下~
- 三次握手,四次挥手讲一下?
- 第一次握手失败会发生什么?第一次成功第二次失败发生什么?会引起什么安全问题?
- 算法题记不太清了(emo...)
美团基本就这些,整体来说体验很棒~
字节
字节的面试果然名不虚传(━((′д`)爻(′д`))━!!!!),三轮面试感觉每次都过的很艰难,但收获也非常多。
一面
- CSS选择器
- flex布局
- this指向
- es6了解哪些?
- PromiseAPI说一下?
- 事件循环机制
- 解读事件循环代码题(各种setTimeout、then、await混在一起)
- 场景题:实现一个useRequest,要有超时机制、重试机制、错误机制同时尽可能考虑封装性
- 竞态问题如何解决?
- 发布订阅模式
- 性能优化手段?webp说一下?
- 数组扁平化写一下?
- 数字每千分位用逗号隔开?
- 最长公共前缀
- 图片懒加载写一下?
- 项目的PC应用如何做的页面适配?
- 项目问题
面试结束我以为已经凉了...结果几天后接到了后续的面试流程,说实话有些意外(同时又狂刷了一波算法题)
二面&三面
二面&三面为了节省时间,因此选在了同一轮,两个面试官交叉的问,压力山大
- 性能指标说一下?
- 性能优化说一下?做了哪些性能优化?最后的结果怎么样?
- 现在回头看,还有没有其他的性能优化方式?
- 看你使用了npm包在多个项目间共享代码,为什么要这么做?优势在哪?劣势在哪?
- 现在回头看还有没有其他的方式?
- 页面适配手段?
- 前端监控机制说一下?Sentry的原理简单讲一下?
- React Fiber架构?
- 垃圾回收机制?
- Map和WeakMap?
- 原型链?
- 项目问题
- 巨多...
- WebGPU讲一下?和WebGl的区别?
- WebGPU的computer shader是做什么的?
- WebGPU画一个三角形
- 很简单,感觉主要是考察你有没有说谎...
- Electron和Tauri说一下?
- 用Tauri做了什么项目?
- 项目中你都做了哪些工作?
- 算法题:逆序对,时间复杂度?能不能优化?
- 注意代码的美观(在没有ESlint的情况下)
这两轮面试的侧重点在项目上,问了很多很多的细节,甚至我都已经忘记了。
同时跟一面一样,面试完我其实已经不抱希望了,结果没想到隔天便接到了HR的电话(效率点赞,减少了我等待的时间成本)
百度
一面
百度的一轮面试个人感觉比较常规,基本围绕着常见的知识点,而二轮面试因为面到最后状态不好,答的很艰难
- CSS盒子模型、选择器
- flex布局
- BFC
- JS数据类型
- JS类型转换机制
- ES6了解哪些?
- 对象、数组都新增了哪些内容?
- Promise讲一下?
- Promise.all、Promise.bind
- this指向
- bind、apply、call区别
- 写一个节流函数
- H5图片曝光打点如何做?只计算第一次曝光?
- 算法题貌似是计算最长重复子串
二面
- 浏览器渲染流程?
- CSS会不会阻塞?JS呢?
- HTML的defer和async机制?domContentload?
- href和url?
- 浏览器遇到link标签会发生什么?
- crossorigin="anonymous"?
- 看到一个H5页面,你作为一个前端开发都关注到了哪里?
- 页面适配手段?
- meta标签?viewport?device-width?
- 页面宽度如何获取?
- devicePixelRatio说一下?
- CSS像素?物理像素?独立像素?有什么区别?
- electron崩溃有了解过吗?
- 算法题:最大子数组和
二面一直面试到了7点多,由于当天下午已经面了4个小时,体能和脑力已经接近极限,挂的很惨...
快手
快手的面试全部集中于项目及衍生(很深),不太具备参考性,此处略过。
总结
现在这个就业环境,工作确实很难找,并且涨幅也非常有限,强烈建议不要裸辞,骑驴找马最佳。
同时面试前一定要好好准备,不仅为了工作,而是一个学习归纳自己技术体系的方式,通过这种方式每次面试结束都能获得不小的收获(查缺补漏)
面经大概就是这些,仅供参考~