hawtim.github.io icon indicating copy to clipboard operation
hawtim.github.io copied to clipboard

前端知识图谱概览

Open hawtim opened this issue 5 years ago • 1 comments

如何通过思维导图将零散的碎片知识系统化?

笔者最近的工作中,前端资源很紧缺,日常招人,领导希望我整理一些前端面试的知识点,方便有些时候可以直接由他去面试。

然后我开始用思维导图来整理,基本上是从 HTML CSS JavaScript 的顺序来写的,想到什么就补充点什么,以工作中使用到的知识点来看的话,一个下午就搞定写完了。

思前想后,应该可以更加系统全面的整合前端的知识体系,第一点是先整理出哪些主要的模块,比如一开始我定的就是前端三板斧 HTML CSS JS,第二点是是根据前面的主要模块,在每一块里面找到经典的面试题目,由点及面,由浅到深的学习相关的知识和内容。帮助我做到以下三点:

  1. 查漏补缺
  2. 重难点攻克
  3. 培养脑图思维

我认为的前端知识点包括下面这些大模块

  1. HTML
  2. CSS
  3. JavaScript
  4. 浏览器
  5. 新技术
  6. 工程化
  7. 数据结构与算法
  8. 编译原理
  9. 设计模式
  10. 手撕代码
  11. 前端框架
  12. 性能和安全
  13. 计算机网络

我用 xmind zen 来完成这个工作

  1. HTML
  • meta 标签,有哪些属性? 能做什么?
  • 如何适配 iphoneX 的刘海屏,如何获取
  • audio / video / canvas / svg
  • 语义化标签
  1. CSS
  • display 有哪些属性, flex 布局 grid 布局
  • animation 属性
  • 两栏布局 / 三栏布局
  • 水平垂直居中
  • FC (BFC / IFC / FFC / GFC)
  • 文档流的类型
  • 选择器优先级计算
  • 重绘和回流,CSS 和 JavaScript 的规避方案吗?
  • 盒模型类型,特点
  • BEM 命名方式
  • CSS 模块化、scoped
  1. JS
  • ES6 有哪些新特性
  • 闭包是什么?
  • this 的指向
  • JavaScript 的事件循环机制
  • web worker / service worker
  • 封装 Ajax
  • Promise 的理解
  • setTimeout / setInterval
  • 线程和进程的差异
  • prototype 、 proto 、 constructor 的关系
  • 什么是原型链
  • JS 的模块化实现
  • 数组有哪些方法
  • 基本类型和引用数据类型有什么差异
  • 为什么 typeof null === ’object‘
  • Object.defineProperty
  • 内存泄露是什么,什么原因,怎么处理
  • 严格模式的差异
  • JS 如何实现继承
  1. 浏览器缓存
  • 强缓存、协商缓存的原理
  • cookie、localStorage、sessionStorage
  • 上线发版本如何解决缓存的问题
  • 浏览器读取缓存的顺序
  • 浏览器事件周期, domcontentloaded、load、beforeunload、unload、readyState
  • 浏览器事件冒泡、捕获、阻止冒泡、阻止默认事件
  • 什么是跨域,如何解决
  • 浏览器兼容问题
  • 浏览器下载文件的方法
  1. 新技术/实现相关
  • webAssembly 和 JavaScript 有什么差别
  • 小程序的生命周期
  • WebGL
  • webRTC
  • web worker
  • JSbridge
  1. 工程构建
  • webpack 的 loader plugins
  • webpack 热更新
  • webpack 构建优化
  • git stash/rebase/merge
  • git hook 能做什么
  • npm 和 yarn 有什么差异
  • docker 是什么,为什么使用
  • 代码校验 eslint stylelint
  • 提交规范 commitzen
  • 如何封装一个组件
  1. 数据结构与算法
  • 基本数据结构 堆 栈 链表 队列 集合 字典 二叉树
  • 排序算法: 快排、基线排序、冒泡
  • 动态规划的套路
  • 大O表示法
  1. 编译原理
  • 分词、语法分析、生成 AST
  • 应用
  1. 常见的设计模式

单例模式、原型模式、工厂模式、观察者模式、策略模式、代理模式、发布订阅模式

  1. 手撕代码
  • 防抖节流
  • 设计一个 ajax 库
  • jsonp
  • instanceOf
  • 柯里化
  • new 做了什么
  • 浅拷贝
  • 深拷贝
  1. 前端框架(Vue)
  • Vue 生命周期有哪些,执行顺序,父子组件的执行的先后顺序
  • 如何实现数据劫持
  • $nextTick 这个 API 用来做什么,原理是什么
  • computed 和 watch 的差异
  • 数据响应后是如何更新视图的?
  • vue 的 diff 算法是怎样?
  • vue hook 是什么?
  1. 性能和安全
  • XSS
  • CSRF
  • Cookie 安全
  • HTTP 劫持
  • 性能分析和监控
  1. 网络
  • 网络模型 OSI 七层模型、五层模型、TCP/IP 四层模型
  • tcp 三次握手、四次挥手
  • HTTP1.0 / HTTP1.1 / HTTP2.0 / HTTP3.0
  • 常见状态码
  • nginx 负载均衡是什么原理
  • CDN 的原理
  • Https 的全过程
  • DNS 的解析过程
  1. 浏览器运行机制,从输入 url 到页面展示内容过程中做了什么?
  • 合成 URL
  • 解析 URL, 生成 HTTP 消息
  • 进入浏览器缓存阶段
  • DNS 域名解析,找到服务器地址
  • 将 HTTP 的传输工作委托给系统的协议栈
  • 服务器处理请求的过程
  • 浏览器处理响应
  • 解析文档
  • 生成渲染树
  • 客户端绘制
  • 加载并执行js脚本

以上内容肯定不是前端的全部,大概才20%,主要是认为这些问题比较大,水平的区分度比较强。

脑图还在持续优化中,后续开源。

hawtim avatar May 17 '20 10:05 hawtim

脑图概览 image

hawtim avatar May 19 '20 14:05 hawtim