对于 JavaScript,掌握其语法和特性是最基本的,但是这些只是应用能力,最终仍旧考量仍然是计算机体系的理论知识,所以数据结构,算法,软件工程,设计模式等基础知识对前端工程师同样重要,这些知识的理解程度,可以决定你在前端工程师这条路上能走多远,是时候进行一波自检了,查漏补缺,只有全面发展,才会使你更强,以下会进行自问的形式按照图片里面的知识点进行自我 check
知识点在面试过不下 50 人后进行的一波总结。
可能不全,有新增的点可以放在评论区讨论

1. 你关于性能优化是否只知道 js 文件摆放顺序、减少请求、雪碧图等等,却连衡量指标 window.performance.timing 都不清楚是干什么的?
2. 请你描述下一个网页是如何渲染出来的,dom 树和 css 树是如何合并的,浏览器的运行机制是什么,什么是否会造成渲染阻塞?
3. 请简述下 js 引擎的工作原理,js 是怎样处理事件的 eventloop,宏任务源 tasks 和微任务源 jobs 分别有哪些?js 是如何构造抽象语法书(AST)的?
4. 你是否考虑全面你编写的整个函数,或者整个功能的容错性与扩展性?怎样构建一个组件是最合理最科学的,对于错误的处理是否有统一的方式方法?
5. 浏览器缓存的基本策略,什么时候该缓存什么时候不该缓存,以及对于控制缓存的字段的相关设置是否清楚?
6. 你是否可以利用面向对象的思维去抽象你的功能,你会构建一个class(ES6)吗?你对于前端架构的理解?
7. 你会用 VUE,你会用 React,你读得懂这两个架构的源码吗?你懂他俩的基本设计模式吗?让你去构建一个类似的框架你如何下手?
8. 你了解的 ES6 只是 const、let、promise 吗?你考虑过 ES6 提出的真正趋势吗?
9. 你会用 less,那么让你去写一个 loader 你可以吗?
10. webpack 你也会用,你了解其中原理吗?你知道分析打包依赖的过程吗?你知道 tree-shakeing 是如何干掉无用重复的代码的吗?
11. 你真的熟练使用 css 吗,那你知道 position 有几个属性吗,具体参考 https://github.com/wintercn/b…
12. 你了解 js 的数据结构吗?基本数据类型有哪些?复杂数据类型有哪些?在内存是如何表现的?
13. 你可以用 js 去实现一个单向、双向、循环链表吗?你可以实现查找、插入、删除操作吗?
14. 你了解基本常见算法吗?快速排序写一个?要是限制空间利用你该如何写?
15. 你了解贪心算法、动态规划、分治算法、回溯算法等常见的算法吗?
16. 你是如何理解前端架构的?你了解持续集成吗?
17. 你了解基本的设计模式吗?举例单例模式、策略模式、代理模式、迭代模式、发布订阅模式。。。?
18. 写一个事件监听函数呗?实现 once、on、remove、emit 功能
19. node.js 的实现层是什么?
20. node 的事件循环机制是怎样的?
21. node 的 child_process 模块有几个 api,分别的作用是什么?
22. http1.0 与 1.1 协议的区别?
23. node 是如何实现 http 模块的?
24. 如何构建一个主从模式?
25. nginx 相关配置了解过吗?
26. 你真的理解前端吗?
作者:SuperX 原文链接:https://segmentfault.com/a/1190000018873042
推荐阅读
「一个有温度的前端号」