五年以上前端面试
笔者背景:八年前端、无大厂经验、广告转前端、本科
在做了八年前端后,公司裁员,开始了我的面试之旅,在这期间,我面试了一些公司,得到一些经验。发现他们很少问我与 CSS 相关的问题,甚至有些为了不浪费时间直接贴编程题,在此笔者将面试时的题目贴出来,供大家参考
以下题目都是一面时遇到的(部分遗漏)
- [x] React18 有什么新特性
- [x] 有做过性能优化吗
- [ ]
Taro 怎么把 React 代码转换成跨平台的(笔者上一家公司用过 Taro ,与此公司技术栈相关) - [ ]
var [a,b] = {a:1,b:2}怎么才能成立 - [x] React Fiber 的作用和原理
- [x] React 渲染经历了什么(如何调度、如何做Diff)
- [x] solidjs 是什么
- [x] React中父组件如何调用子组件中的方法?
- [x] 深拷贝 -> json.stringify 缺点 -> 怎么解决
- [x] 讲一下 promise,口述一下实现原理
- [x] 讲一下事件循环
- [x] 知道web worker吗,展示说说
- [x] web socket呢?
- [x] React Hooks 是什么?怎么实现的
- [x] 写过自定义 Hooks 吗,讲一下
- [x] typescript 的类型问题(具体忘记了)
- [x] Redux 是什么以及实现原理
- [x] flex 有多少属性,flex:1代表什么意思
- [x] css 有多少方法让元素隐藏
- [x] seo有哪些优化(比较另类)
- [x] 性能优化
- [x] a b测试(没涉猎)
- [x] useCallback、useMemo 使用场景
- [x] react 是如何优化的
- [x] webpack 的优化(工程化优化)
- [x] 手写 progress(进度条)
- [x] 编码题:一个数组中获取最大的值,至少两种方法
- [x] 编码题:求两个数组的交集和并集
- [x] 虚拟滚动
- [x] 防抖
- [x] 让一个动画动起来
- [x] 乾坤技术原理
- [x] 为什么不用 iframe
- [x] sso 是什么
- [x] 父子应用如何通讯
- [x] 乾坤的生命周期(微前端)
- [x] 中国平安算法题,数组对象去重
- [x] useEffect 第二个参数是对象如何处理
- 将对象转成字符串
- [x] vite 和 webpack 的区别
- vite 是用 ES 模块构建,无需预先打包应用程序
- [x] state 为1,button 点击之后为2,能描述一下 react 的执行过程吗
- [x] 从 url 输入到返回请求的过程
- [x] 协商缓存时,有发送HTTP请求吗
- ETag的话发送条件性请求:if-None-Match
- Last-Modified的话发送:if-Modified-Since
- [x] 协商缓存时,有发送HTTP请求吗
- [x] qiankun 怎么通信
- [x] promise.all 中一个接口坏了,怎么保证其他两个正常调用(Promise.allSettled())
- [x] 白屏性能优化
- [x] 快排
- [x] 数组去重
- [x] ssr的缺点
- 开发难度上升
- 服务器负担增加
- 页面切换延迟
- [x] foreach 跳出循环
- 不能被 break 或 return 提前结束循环
- 通过 try catch 抛出异常跳出循环
- [x] CSS3新特性
- [x] ES6新特性
- [x] 浏览器的架构?JS引擎在哪个进程里?
- [x] 性能监控 怎么做
- [ ] 你是怎么做ci/cd的
- [x] 项目如何做缓存过期的
- nginx 里设置过期时间;cdn上设置过期时间
- [x] Interface 和 Type 的区别
- [x] 联合类型和类型收窄
- [ ] flex和grid的区别
- [ ] webpack的工作流程
- [x] class 组件和 function 组件的区别
- [x] 前端怎么做 seo 优化
- [ ] jsbridge
- [x] 发布订阅模式
- [x] React-router 原理
- [x] React 运行机制
- [ ] 前端权限管理
- [x] react keep-alive 实现
- [x] ?? 是什么意思
- [x] typescript 中的 tuple(元组)
- [x] vite 与 webpack 为什么快?
- [x] 前端安全:xss、crsf
- [x] CSS3 点击穿透:pointer-events:none
- [x] 你还有什么问题要问我的吗
- [ ] 对称加密与非对称加密
- [x] 跟随图片变化的背景
- [x] IndexedDB
- [x] cookie 如何防止信息被篡改
- [ ] git husky 原理
- [ ] 前端限制 git commit 提交格式
- [x] 受控组件和非受控组件
- [x] 最有挑战的项目
- [x] 如何取消请求
- [x] 如何排查?用户访问页面白屏了,原因是啥
- [x] 微前端其他方案(microapp、无界各自优缺点)
- [ ] 求两个字符串的最长的公共子串
- [ ] 面向对象和函数式编程的区别
- [ ] 字节面试题
别人的面经
- React为什么要使用Fiber,它解决了那些问题
- 你说到了并发模式与时间分片,它怎么做的时间分片,用了什么方法。scheduler 为什么要使用宏任务去执行,你说到了任务合并,它是怎么去区分是不是同一个任务的。
- 它为什么不用 requestIdleCallback
- 你了解优先级吗,你说到高优打断低优,它是如何打断的。如果一直插入高优任务,低优任务会一直得不到执行嘛,它是怎么解决这个问题的
- 说一下合成事件吧,它解决了哪些问题。
- 合成事件的事件委托 在新版本与老版本都绑定到了哪些? 老版本为什么绑定到document,而新的绑定到根节点上
twitter 上有面试官的面试题
讨厌八股文,我就问三个实际的,又快又准:
1,讲讲你的项目,就选你做得最满意的。
2,讲讲你的技术,就选你准备得最好的。
3,我给你一个场景,你有哪些思考和方案。
这三个问题谁都能答,但答好不容易。
基本可以覆盖80%的工作要求。
高级前端职位描述
岗位职责
1、协助产品团队完成业务的需求调研和分析,独立完成功能模块的设计与代码编写;
2、能够提供合理的前端解决方案,结合相关的产品业务需求,不断改进和优化开发流程、开发框架和开发工具;
3、与团队不同角色成员(业务、产品、技术)能够保持良好沟通,快速理解、消化各方需求,并落实为具体的开发工作;
岗位要求
1、计算机相关专业本科及以上学历,三年以上Web前端开发经验,有大型互联网公司Web前端经验者优先;
2、前端基础知识扎实,熟悉浏览器底层原理和机制,熟练掌握原生 JavaScript ( ES6 )、HTML 、CSS ;
3、具备完整 React 项目的开发经验,熟悉 React 开发基本思想及相关生态 (react hook,react-router,react-redux,antd);
4、熟练掌握 git 操作, 了解 GitHub Flow 等实践;
5、有良好的编程风格, 具有较强的问题解决能力、理解能力和团队协作意识;
6、对于负责过的业务有深入了解,能清晰介绍业务逻辑,有通过技术手段解决业务难题经验;
7、有小程序/React Native/Flutter 等跨平台开发经验者加分;
8、有 Node.js 及主流开发框架 (Koa.js 、Egg.js)或具备其他后端语言经验,如Java,Python,Golang者加分;
9、GitHub 上有组织良好,功能完整的开源代码者加分;
岗位要求:
1、本科及以上学历,计算机相关专业,5年以上APP/WEB工作经验,3年及以上技术架构经验,有团队管理者优
2、精通大前端2个以上的客户端平台开发技术(iOS、Android、WEB等),熟练掌握常见的开源框架及其设计原理,编程能力出众
3、精通Web开发技术,精通Javascript,JQuery(这个了解即可),HTML5,ES6,CSS3,sass、less
4、熟悉NodeJS技术及生态,(了解)React/(精通)Vue前端框架,对前端工程化有一定的了解,熟悉webpack等构建工具
5、较强的沟通能力和丰富需求分析能力,技术视野广阔,有主导大型前端/移动端技术方案设计的能力和经验,熟悉服务端开发者优先
6、熟练掌握敏捷项目开发,有较强的团队协作和组织能力,性格乐观积极,有良好的语言表达及沟通能力
7、善于思考,能独立分析和解决问题,有良好的学习能力和责任心,具有良好的团队协作与沟通能力
岗位要求:
1、本科及以上学历,计算机相关专业,5年以上APP/WEB工作经验,3年及以上技术架构经验,有团队管理者优先
2、精通大前端2个以上的客户端平台开发技术(iOS、Android、WEB等),熟练掌握常见的开源框架及其设计原理,编程能力出众
3、精通Web开发技术,精通Javascript,JQuery(这个了解即可),HTML5,ES6,CSS3,sass、less
4、熟悉NodeJS技术及生态,(了解)React/(精通)Vue前端框架,对前端工程化有一定的了解,熟悉webpack等构建工具
5、较强的沟通能力和丰富需求分析能力,技术视野广阔,有主导大型前端/移动端技术方案设计的能力和经验,熟悉服务端开发者优先
6、熟练掌握敏捷项目开发,有较强的团队协作和组织能力,性格乐观积极,有良好的语言表达及沟通能力
7、善于思考,能独立分析和解决问题,有良好的学习能力和责任心,具有良好的团队协作与沟通能力
全栈工程师任职要求:
1、计算机相关专业,本科及以上学历。
2、3年及以上的全栈开发经验。
3、熟悉Node.js技术栈。
4、熟悉数据库技术,包括关系型数据库(如MySQL)和非关系型数据库(如MongoDB, Redis)。
5、熟悉CI/CD及Docker部署。
6、具备良好的问题解决能力、沟通能力和团队合作精神。
7、英语读写能力良好,能够阅读和编写技术文档。
Node.JS后端开发工程师(AI方向)
1、本科及以上学历,2~5 年以上 NodeJS 实际工作经验,有 Typescript 实际开发经验优先,扎实的Javascript基本功。
2、熟悉 Koa、express 后端框架。
3、熟悉 Mysql、MongoDB 等数据库。
4、了解 Web前端基础知识(HTML/CSS/JavaScript)和常见开发技术(webpack/React等)。
5、对AI有强烈兴趣,熟悉使用大模型,有prompt调试、利用AI处理文字和图片等经验者优先。
6、具有较强的沟通能力与团队合作精神,具有良好的分析问题、解决问题的能力以及较强的学习能力。
7、责任心强,有较强的抗压能力。