frontend_knowledge_structure Questions and answers about front-end 1. HTML HTML5与HTML4之间的区别 DOCTYPE到底有什么作用? html中meta标签有哪些?都有什么作用? 如何理解移动端的viewport? src和href引入资源的区别 script标签的defer和async属性的区别 html中引入css的方式有几种? cookie VS sessionStorage VS localStorage preload和prefetch的作用是什么?有什么区别? 2. CSS 块级元素、行内元素和块级行内元素之间的区别 CSS盒模型 CSS布局模型 float布局中的不完全脱离文档流、高度塌陷和清除浮动的方法 块级格式化上下文(BFC)是什么?有什么作用? 层叠上下文和z-index CSS动画的实现方式有哪些?CSS动画 VS JS动画? CSS样式权重和优先级 CSS选择器的解析顺序为什么要从右到左? 负margin值的应用:圣杯布局和双飞翼布局 深入理解line-height和vertical-align inline-block元素之间为什么会产生间隙?怎么解决? 水平居中、垂直居中和垂直水平居中的方式 CSS实现一个三角形和自适应正方形 3. Javascript 3.1 javascript中的数据类型 js中有哪些数据类型 js对象类型 js中类型检测的方法有哪些? JS类型转换 隐式转换 : ==号两边的数据的类型转换规则 ==、===和Object.is()有什么区别? JS中的位运算 手写instanceof操作符 3.2 变量、函数、作用域和闭包 编译器、JS引擎和作用域之间有什么关系? 作用域和作用域链 执行栈和执行上下文 变量声明提升的原理是什么? 定义变量的方式有哪些?有什么区别? 闭包是什么?有什么作用? 实现柯里化函数 防抖和节流 3.3 this关键字 谈谈this机制? 普通函数 VS 箭头函数 手写一个bind方法 手动实现一个call和apply方法 3.4 JS中的类、继承和行为委托 谈谈JS中的类的本质是什么 原型和原型链是什么? 对比js中的继承方案 类 VS 行为委托 实现一个new方法 3.5 JS异步解决方案 S中的异步实现和EventLoop JS中异步编程方案的演化过程 深入理解Promise以及手动实现一个Promise 深入理解Generator及其在异步方案中的作用 深入理解async+await 3.6 JS循环和迭代器 深入理解迭代器和Generator for...of循环和forEach之间的区别 实现一个可以用for...of遍历的对象 3.7 模块化 前端模块化的演变过程 深入理解CommonJS在node中的实现 深入理解ES Module CommonJS和ES Module之间的区别 3.8 数组和对象 类数组对象和数组的关联 数组去重 数组平铺 手动实现一个数组map方法 手动实现一个filter方法 手动实现一个reduce方法 分析V8中的sort方法并手动实现一个 数组乱序 Object的浅拷贝和深拷贝 4. 框架篇 4.1 React源码解析 React架构演变 Fiber架构的实现原理 结合源码分析render阶段 结合源码分析Diff算法的实现 commit - before mutation commit - mutation commit - layout 结合源码解析Scheduler的实现 update - 创建update update - 调度update update - 执行update React Hooks的设计理念 Hook - Hooks的数据结构和更新流程 Hook - useState和useReducer Hook - 保存无副作用状态:useCallback、useMemo和useRef Hook - Effects的数据结构和调用流程 Hook - useEffect 和 useLayoutEffect 结合源码分析React事件系统 批量更新的实现原理 结合源码分析Context的实现 结合React源码分析Suspense的实现原理 结合源码分析useTransition 结合源码分析useDeferredValue 4.2 React应用相关 react-hook-form 源码解析 结合React源码谈谈虚拟列表的实现和优化思路 5. 微前端 微前端(MicroFrontEnd) - 分而治之 结合qiankun源码分析基本执行流程 qiankun中CSS沙箱的实现 qiankun中JS沙箱的实现 qiankun中应用之间的通信方案 qiankun多实例模式的实现 6. Javascript宿主环境 6.1 浏览器 6.1.1 跨域 什么是跨域? 实现跨域请求的方法 6.1.2 前端安全 谈谈XSS攻击 谈谈CSRF 6.1.3 渲染原理 浏览器中的进程和线程 谈谈复合图层 浏览器帧和EventLoop 详细分析页面首次渲染和JS、CSS资源的关系 6.2 V8 7. 前端工程化 7.1 webpack 打包速度的优化策略 体积优化策略 webpack如何实现懒加载 8. 性能优化 从URL到页面输出中间经历了哪些过程? 性能优化—网络层面 性能优化—渲染层面 性能优化—应用层优化 9. 数据结构和算法 9.1 数组和字符串 常用的排序算法 9.2 堆 堆和堆的经典场景 10. 计算机基础 10.1 tcp 谈谈TCP协议 TCP协议对比UDP协议 10.2 http 谈谈http协议 http请求的方法对比 常见的http响应状态码 常见的请求头和响应头 谈谈http缓存 http各版本之间的差异 http与https之间的对比 11. 设计模式