前端面试知识点汇总

作者:AmbitionC
链接:https://www.nowcoder.com/discuss/258810
来源:牛客网

一、JavaScript

  1. 原始值和引用值类型及区别
  2. 判断数据类型typeof、instanceof、Object.prototype.toString.call()、constructor
  3. 类数组与数组的区别与转换
  4. 数组的常见API
  5. bind、call、apply的区别
  6. new的原理
  7. 如何正确判断this?
  8. 闭包及其作用
  9. 原型和原型链
  10. prototype与__proto__的关系与区别
  11. 继承的实现方式及比较
  12. 深拷贝与浅拷贝
  13. 防抖和节流
  14. 作用域和作用域链、执行期上下文
  15. DOM常见的操作方式
  16. Array.sort()方法与实现机制
  17. Ajax的请求过程
  18. JS的垃圾回收机制
  19. JS中的String、Array和Math方法
  20. addEventListener和onClick()的区别
  21. new和Object.create的区别
  22. DOM的location对象
  23. 浏览器从输入URL到页面渲染的整个流程(涉及到计算机网络数据传输过程、浏览器解析渲染过程)
  24. 跨域、同源策略及跨域实现方式和原理
  25. 浏览器的回流(Reflow)和重绘(Repaints)
  26. JavaScript中的arguments
  27. EventLoop事件循环
  28. 宏任务与微任务
  29. BOM属性对象方法
  30. 函数柯里化及其通用封装
  31. JS的map()和reduce()方法
  32. ”和“=”的区别
  33. setTimeout用作倒计时为何会产生误差?
    二、ES6
  34. let、const和var的概念与区别
  35. 变量提升与暂时性死区
  36. 变量的结构赋值
  37. 箭头函数及其this问题
  38. Symbol概念及其作用
  39. Set和Map数据结构
  40. Proxy
  41. Reflect对象
  42. Promise(手撕Promise A+规范、Promise.all、Promise相关API和方法)
  43. Iterator和for…of(Iterator遍历器的实现)
  44. 循环语法比较及使用场景(for、forEach、for…in、for…of)
  45. Generator及其异步方面的应用
  46. async函数
  47. 几种异步方式的比较(回调、setTimeout、Promise、Generator、async)
  48. class基本语法及继承
  49. 模块加载方案比较(CommonJS和ES6的Module)
  50. ES6模块加载与CommonJS加载的原理
    三、HTML/CSS
  51. CSS权重及其引入方式
  52. 标签全部作用
  53. 用CSS画三角形
  54. 未知宽高元素水平垂直居中(方案及比较)
  55. 元素种类的划分
  56. 盒子模型及其理解
  57. 定位方式及其区别(文档流)
  58. margin塌陷及合并问题
  59. 浮动模型及清除浮动的方法
  60. CSS定位属性
  61. display及相关属性
  62. IFC与BFC
  63. 圣杯布局和双飞翼布局的实现
  64. Flex布局
  65. px、em、rem的区别
  66. Less预处理语言
  67. 媒体查询
  68. vh与vw
  69. H5的语义化作用及语义化标签
  70. Web Worker和Web Socket
  71. CSS3及相关动画
  72. 如何实现响应式布局
  73. SEO的概念及实现
  74. HTML5的新特性
  75. Less和Sass使用
    四、HTTP与计算机网络
  76. TCP/IP协议分层管理
  77. 三次握手四次挥手机制及原因
  78. HTTP方法
  79. GET和POST的区别
  80. HTTP建立持久连接的意义
  81. HTTP报文的结构
  82. HTTP状态码
  83. Web服务器及其组成
  84. HTTP报文首部
  85. HTTP通用首部字段
  86. HTTP请求首部字段、响应首部字段、实体首部字段
  87. Cookie相关首部字段
  88. HTTPS与HTTP区别及实现方式
  89. Cookie与Session
  90. 基于HTTP的功能追加协议(SPY、WebSocket、HTTP)
  91. 常见的Web攻击分类
  92. TCP与UDP区别
  93. 存储机制localStorage、sessionStorage与Cookie存储技术
  94. XSS攻击及防御
  95. CSRF攻击及防御
    五、前端工程化
  96. 前端工程化的流程(架构选型、业务开发、测试、打包构建、部署上线、项目监控)
  97. Webpack基本概念与配置
  98. loader与plugin原理与实现
  99. Webpack的模块热替换及实现
  100. Webpack的优化问题
  101. SPA及其优缺点
  102. SSR实现及优缺点
  103. 设计模式(工厂模式、单例模式、原型模式、***模式、适配器模式、观察者模式等…)
    六、React
  104. React自身特点及选型时考虑
  105. React与VUE的异同
  106. Virtual DOM
  107. React生命周期
  108. Diff算法
  109. 受控组件与非受控组件
  110. 高阶组件
  111. Flux架构模式(涉及MVC/MVVM、Flux)
  112. Redux设计概念、设计原则、方法、redux实现异步流的库
  113. 纯组件(Pure Component)与shouldComponentUpdate关系
  114. Redux中的组件与connect函数
  115. React Fiber架构
  116. React Hooks的作用及原理
    七、NodeJS
  117. NodeJS基本概念与特点
  118. CommonJS规范、核心模块
  119. Node的异步I/O
  120. Node的内存控制
  121. Node构建网络服务(TCP、HTTP、Web Socket服务等)
  122. Node的进程
    八、需要会手撕的代码部分
  123. Promise(A+规范)、then、all方法
  124. Iterator遍历器实现
  125. Thunk函数实现(结合Generator实现异步)
  126. async实现原理(spawn函数)
  127. class的继承
  128. 防抖和节流
  129. Ajax原生实现
  130. 深拷贝的几种方法与比较
  131. 继承的几种实现与比较
  132. 未知宽高的元素水平垂直居中
  133. 三栏布局的实现
  134. 两栏布局的实现
  135. React高阶组件
  136. 数组去重
  137. 几种排序算法的实现及其复杂度比较
  138. 前序后序遍历二叉树(非递归)
  139. 二叉树深度遍历(分析时间复杂度)
  140. 跨域的实现(JSONP、CORS)
    九、数据可视化
  141. Canvas和SVG的区别
  142. 在考虑设计可视化图表时,结合Canvas和SVG特性会怎么取舍
  143. 常见的可视化组件库
  144. 可视化组件库如Echarts的设计思路
  145. 一些偏向底层的可视化组件库和前端框架结合方面需要考虑哪些问题
  146. 可视化组件如何做到数据驱动?
    十、计算机基础
  147. 计算机系统
  148. 线程与进程
  149. 常见的git指令
  150. Linux相关指令
  151. 其他类型的编程语言(如Java)
  152. 数据库

你可能感兴趣的:(前端工程师面试)