坐标广州,双非一本非科班转行,5年经验前端开发。
之前任职于某独角兽中厂基建部门,公司的低代码项目磕磕绊绊搞了一年半,人手少要求高,也是十分痛苦,差点没抑郁。后来公司开始大面积裁员和调岗,也错过了好几波,心灰意冷最后还是选择在11月裸辞了。辞职后一个人去旅行了一段时间,回来开始复习,原计划是想在三四月份能找到下家就不错了,随手投了一下没想到面试机会还挺多,也许行情没有以前那么糟了吧,经过3周的努力,最后拿到了2个offer。
关于招聘平台的情况,拉勾和脉脉的机会非常少,目前只在Boss直聘上投,并且只投自研,不考虑外包和IT服务商,每10个大概有1个回复,可能也是因为投简历的人太多,竞争比较激烈,也有捡漏的可能。毕竟等到三四月份什么神仙都出来找工作了,变数更多,那么公司也会更加挑。
以下是我的部分面经,目前只整理了关键问题,之后有时间的话我会挑一些问题出来详细解析。
字节跳动飞书一面(通过)
自我介绍+聊项目(10min)
- 低代码平台如何解决源码更新的发版问题
- 低代码平台适用于公司的哪些业务
- 如何理解在低代码平台经过分发后在几条业务线并行开发
技术问题(30min)
- JS的数据类型和区别
- JS的不同类型作为函数参数调用的区别
- let和var的区别
- 追问:哪些情况会发生上下文提升
- 追问:function和var在发生提升时,谁的优先级更高
- 如何理解闭包
- 追问:函数作用域是什么时候创建的
- 有没有了解过CDN
- 说一下重绘和回流
- 追问:什么情况会触发回流,回流的影响范围是多大
- 说一下对BFC的理解
- 说一下CSS选择器的优先级,在项目中如何避免选择器的冲突
- 浏览器的储存方式有哪些,区别是什么,分别可以用于哪些业务场景
- 工作中经常用到的BOM API
- 接口的缓存方式有哪些
手写代码(20min)
- 二叉树的蛇形遍历
- 封装一个发布订阅事件监听器,实现on、off、once、emit
字节跳动飞书二面(卒)
自我介绍+聊项目(30min)
- 做低代码平台的时候有没有参考其它公司的开源项目,比如阿里的低代码引擎,他的协议设计和你们的差异是什么
- 介绍一下物料的数据协议和页面的数据协议如何设计的
- 为什么不使用开源项目的设计规范,而是选择自己定义
- 如何解决多人同时编辑的冲突问题,比如动态代码编译后变成一行后,多人同时修改的冲突
- 展示组件能否实现嵌套
- 如何通过容器组件和展示组件实现一个列表
- 低代码渲染器前端的性能问题如何解决
- 表单项的关联更新和隐藏是如何设计的
- 动态代码的线上问题如何定位和排查
- 说一下变量管理为什么不使用 React 的 state,而是自己做依赖收集
- 如何实现组件的动态化,属性随着接口数据变化
手写代码(20min)
- 走二维迷宫,根据随机的起点和终点判断有没有解
A在线教育公司一面(通过)
自我介绍+聊项目(20min)
- 略过重复问题...
- 低代码页面的性能优化怎么做的,有什么判定指标,如何监控
技术问题(10min)
- package-lock 的作用
- 追问:什么情况下不能锁定版本
- package.json 的 scripts 运行脚本和 node 运行脚本有什么区别
- node 文件中执行 require 会发生什么
- 你们项目的 http 缓存通常采用什么策略
A在线教育公司二面(通过)
自我介绍+聊项目(30min)
- 略过重复问题...
- 项目上做了哪些体验上的优化
- 低代码的页面发布到生产环境的流程是怎样的
- 前端的错误监控体系怎么做的
- 低代码项目如果线上出了问题,说一下你们从排查到修复的流程
- 你们团队有多少个人在做这个项目
- 项目上遇到最大的挑战是什么
B游戏公司一面(通过)
自我介绍(5min)
技术问题(45min)
- pm2 怎么同时启动多个服务,能不能做负载均衡
- pm2 开启多进程的实现原理
- 对 serverless 的理解
- 对 DDD 的理解
- 手写:正则表达式匹配URL中的query参数
- 手写:ts的Pick泛型
- 二分查找的时间复杂度是多少,怎么计算出来
- 贪心算法和动态规划的时间复杂度有什么区别
- 从原理上说一下闭包怎么产生的
- 追问:怎么排查和避免内存泄漏的问题
- 追问:JS 能调用 GC 吗
- 追问:JS 执行 var a = null 会立即释放内存吗
- 前端性能优化在网络方面有哪些手段
- 前端场景中有哪些情况会用到链表结构
- XSS 攻击怎么防范
- 追问:对于混淆加密过的XSS攻击怎么防范
- 使用docker容器部署前端应用的好处
- 如何实现服务的无停机部署和灰度更新
- 前端应用如何进行性能和错误监控的,有没有用到什么第三方包
网易一面(通过)
自我介绍+聊项目(15min)
- 略过重复问题...
- 低代码的实践过程中有遇到什么难点可以分享的
- 物料协议由哪几部分组成
- 关于需要制定物料来源这块有什么特别的考虑
- 为什么选择使用 iframe 来当画布
技术问题(25min)
- 通过 monorepo 的方式可能会出现速度打包非常慢的问题,有什么办法可以优化
- React 的 useLayoutEffect 和 useEffect 的区别
- 如果希望在 React 的 useLayoutEffect 里面获取 dom,有什么方式
- React 中连续执行 2 次 setState,render 会执行 2 遍吗
- React 的同步模式和并发模式有什么区别
- 你提到了 React 并发模式可以中断和恢复,它的底层原理是什么
- 你提到了 requestIdleCallback,它在主流浏览器的支持中并不友好,React 怎么解决这个问题的
- 你在项目中提到了通过 Proxy 收集依赖,Proxy 代理对象需要和 Reflect 配合使用是什么原因
- webpack5 有什么新特性
- 介绍一下模块联邦
- webpack5 怎么做一些特定依赖的分包,例如把 vue 的包抽离成一个包
- 除了 webpack,还关注哪些打包工具
- vite 相比 webpack 的优势在哪
- 前端监控方面有哪些实践
- 对 CSRF 攻击有什么了解
- 对 Cache-Control 有什么了解
B游戏公司二面(通过)
自我介绍+聊项目(15min)
- 和前面差不多...
开发性问题(25min)
- 有没有AI相关的实践经验
- 有没有threejs相关的实践经验
- 如果让你来带前端团队,会怎么安排工作
- 如果公司领导不太看好你想尝试的新技术,你会如何应对
- 平时如何进行学习
A在线教育公司三面(offer)
自我介绍(10min)
开放性问题(20min)
- 为什么会选择从事前端开发
- 平时通过哪些方式学习
- 最近在学习什么,关注哪些新技术
- 平时业余时间是什么驱动你去学习的
- 上家公司开发低代码项目的目的是什么
- 用三个词总结你自己,在哪些方面有体现
- 职业生涯中遇到最大的挑战是什么,如何克服的
- 最近学习到了哪些开发思想或者最佳实践
- 追问:这套方法有帮助到公司的项目吗
- 追问:单测上为什么选择了 jest,有没有关注过其它的库
- 有没有AI相关的实践经验
C创业公司(卒)
自我介绍(5min)
开发性问题(2min)
- 这个岗位需要长期996加班,没有加班费,能不能接受(不接受,结束面试)
网易二面(卒)
自我介绍+聊项目(30min)
- 略过重复问题...
- 低代码项目除了基本的实现之外,有没有进行过前沿探索,例如AI
- 如何解决基础组件频繁发版的问题
- 表单项的校验是怎么实现的
- 如何解决表单项的联动和互斥问题
技术问题(20min)
- 假如有表单项A、B、C,C关联了A,A更新后需要异步调接口更新B,如何设计成通用组件
- 介绍一下 typescript 的泛型
- 介绍一下 typescript 的 never,有哪些使用场景
- interface 和 type 的区别
B游戏公司三面(offer)
自我介绍+聊项目(10min)
技术问题(30min)
- 小程序如何对接微信开放能力
- hybrid 架构中如何实现 app 和 webview 之间的通信
- 在 hybrid 中 webview 通常是以本地打包的方式放在 app 包中,这样做会面临哪些问题
- 假如后端给的数据要通过一系列的接口获取到,如何去优化请求性能
- 追问:多写一个 node 中间层来做这个事情会有哪些风险
- 追问:node 中间层这块有没有做过事务性的处理
- 移动端的尺寸问题通常会如何适配
- 有没有做过 CICD,讲一下全流程
总结反思
-
除了大厂一面会有一定数量的八股文之外,其它公司有一半时间都在聊项目,通过项目穿插着问一些技术问题,所以可以预埋一些有亮点的技术点在项目里面
-
在面试官眼里,对于3-5年经验开发者来说,CUDR的时代早已过去了,问都不会再问了,即使平时工作确实是在CUDR,也需要自己包装一些亮点出来
-
ElementUI、Antd是工具,React、Vue也同样是工具,对3-5年经验开发者来说应该更注重底层原理,包括但不限于算法优化、执行栈、事件循环、GC过程
-
如果有机会走到二面三面,面试官更关注你的思维和视野,一定要进行前沿技术的探索和思考,例如severless、web assembly、AI相关应用场景