一个前端工程师应该具备哪些基础技术能力?
各个节点对应链接可移步语雀点击查看 www.yuque.com/g/wangruona… 邀请你查看文档「前端工程师技术图谱」
写在前面
有关HTML CSS JavaScript的所有知识点,都不建议参考【w3school 在线教程】或【菜鸟教程】这两个网站(可以用来练习代码开发),因为很多知识点描述不准确不全面,建议习惯性打开【MDN】 developer.mozilla.org/zh-CN/
举例1:CSS属性position,图一是w3school,图二是MDN,面试官往往会考察sticky
举例2:JavaScript函数原型上的方法call,图一是w3school,图二是MDN,面试官往往会考察call的this传值为非对象的情况
面试流程(技术面):
高级前端工程师:一般两面,一面主管,二面交叉或主管leader,面试内容类似
- 项目经验(40%-50%):谈1-2个项目中遇到的最难的问题,怎么解决的?
- 基础知识考核(20-30%)
- 手写代码(20%-30%)
初级前端工程师:三面-四面不等;一面同团队比你厉害的,二面主管,三面交叉或主管leader
- 一面:基础知识考核(50-60%)手写代码(40%-50%)
- 二面:深度知识考核(50-60%)手写代码(40%-50%) 有的会重点关注项目经验
- 三面或四面:项目经验,综合能力考察
手写代码题:
高级前端工程师:
- 实现函数柯里化
- 实现Array.group、Array.reduce、Array.filter
- 封装函数实现:限制fetch请求数量最多同时进行limit个,超过limit个要等前面有请求结束再请求 类似的变换有:fetch换为promise
- 有效的括号 Leetcode原题
- 实现JSON.stringify
- 翻转链表 Leetcode原题
- 实现自定义React hook useInterval
- 实现 bind apply call
- 岛屿数量 Leetcode原题
- 爬楼梯 Leetcode原题
- 无重复字符的最长子串 Leetcode原题
- 实现一组promise按顺序输出结果
初级前端工程师:
- 数组扁平化
- 将一个数组随机打乱次序并输出乱序后的数组
- 实现深拷贝 注意解决循环引用的问题
- 原生JS封装百度输入框
- 实现new操作符
- 实现防抖、节流
- 实现Promise.all
- 实现promise的timeout:即如果一个promise没有在规定时间内resolve,就reject特定error
- 二叉树的最小深度 Leetcode原题
- 验证二叉搜索树 Leetcode原题
八股文:
高级前端工程师:
- React底层原理:Fiber架构、lane模型、class与hook区别
- Redux底层原理:middleware实现原理
- React和Rdux常用Hook的用法
- https中的tls加密过程
- 首屏加载优化方案
- 虚拟表格原理
- 富文本编辑器实现
- 系统错误监控 sentry
- 应用白屏如何排查解决
- 内存泄露如何定位
- TypeScript中的static、type、key of
- 自适应布局有多少种实现方案
- 页面跳转,同源和不同源情况下分别实现传参
- 平时学习的渠道,最近在看什么书?有什么心得?
初级前端工程师:
- 浏览器缓存策略
- web应用常见攻击方式及如何防御:xss csrf
- 抓包为什么能抓https
- 跨域是什么,如何解决,什么时候会有预检请求
- 大文件切片上传,断点续传
- treeShaking原理
- CSS:flex,position,nth-of-type,em和rem
- 301和302区别
- canvas和svg区别
- 事件循环EventLoop
- ES6新特性:太多了不举例了,希望大家全部掌握
- 平时学习的渠道,最近在看什么书?有什么心得?