前端面试知识点汇总
作者:AmbitionC链接:https://www.nowcoder.com/discuss/258810来源:牛客网一、JavaScript原始值和引用值类型及区别判断数据类型typeof、instanceof、Object.prototype.toString.call()、constructor类数组与数组的区别与转换数组的常见APIbind、call、apply的区别...
·
作者:AmbitionC
链接:https://www.nowcoder.com/discuss/258810
来源:牛客网
一、JavaScript
- 原始值和引用值类型及区别
- 判断数据类型typeof、instanceof、Object.prototype.toString.call()、constructor
- 类数组与数组的区别与转换
- 数组的常见API
- bind、call、apply的区别
- new的原理
- 如何正确判断this?
- 闭包及其作用
- 原型和原型链
- prototype与__proto__的关系与区别
- 继承的实现方式及比较
- 深拷贝与浅拷贝
- 防抖和节流
- 作用域和作用域链、执行期上下文
- DOM常见的操作方式
- Array.sort()方法与实现机制
- Ajax的请求过程
- JS的垃圾回收机制
- JS中的String、Array和Math方法
- addEventListener和onClick()的区别
- new和Object.create的区别
- DOM的location对象
- 浏览器从输入URL到页面渲染的整个流程(涉及到计算机网络数据传输过程、浏览器解析渲染过程)
- 跨域、同源策略及跨域实现方式和原理
- 浏览器的回流(Reflow)和重绘(Repaints)
- JavaScript中的arguments
- EventLoop事件循环
- 宏任务与微任务
- BOM属性对象方法
- 函数柯里化及其通用封装
- JS的map()和reduce()方法
- “”和“=”的区别
- setTimeout用作倒计时为何会产生误差?
二、ES6 - let、const和var的概念与区别
- 变量提升与暂时性死区
- 变量的结构赋值
- 箭头函数及其this问题
- Symbol概念及其作用
- Set和Map数据结构
- Proxy
- Reflect对象
- Promise(手撕Promise A+规范、Promise.all、Promise相关API和方法)
- Iterator和for…of(Iterator遍历器的实现)
- 循环语法比较及使用场景(for、forEach、for…in、for…of)
- Generator及其异步方面的应用
- async函数
- 几种异步方式的比较(回调、setTimeout、Promise、Generator、async)
- class基本语法及继承
- 模块加载方案比较(CommonJS和ES6的Module)
- ES6模块加载与CommonJS加载的原理
三、HTML/CSS - CSS权重及其引入方式
- 标签全部作用
- 用CSS画三角形
- 未知宽高元素水平垂直居中(方案及比较)
- 元素种类的划分
- 盒子模型及其理解
- 定位方式及其区别(文档流)
- margin塌陷及合并问题
- 浮动模型及清除浮动的方法
- CSS定位属性
- display及相关属性
- IFC与BFC
- 圣杯布局和双飞翼布局的实现
- Flex布局
- px、em、rem的区别
- Less预处理语言
- 媒体查询
- vh与vw
- H5的语义化作用及语义化标签
- Web Worker和Web Socket
- CSS3及相关动画
- 如何实现响应式布局
- SEO的概念及实现
- HTML5的新特性
- Less和Sass使用
四、HTTP与计算机网络 - TCP/IP协议分层管理
- 三次握手四次挥手机制及原因
- HTTP方法
- GET和POST的区别
- HTTP建立持久连接的意义
- HTTP报文的结构
- HTTP状态码
- Web服务器及其组成
- HTTP报文首部
- HTTP通用首部字段
- HTTP请求首部字段、响应首部字段、实体首部字段
- Cookie相关首部字段
- HTTPS与HTTP区别及实现方式
- Cookie与Session
- 基于HTTP的功能追加协议(SPY、WebSocket、HTTP)
- 常见的Web攻击分类
- TCP与UDP区别
- 存储机制localStorage、sessionStorage与Cookie存储技术
- XSS攻击及防御
- CSRF攻击及防御
五、前端工程化 - 前端工程化的流程(架构选型、业务开发、测试、打包构建、部署上线、项目监控)
- Webpack基本概念与配置
- loader与plugin原理与实现
- Webpack的模块热替换及实现
- Webpack的优化问题
- SPA及其优缺点
- SSR实现及优缺点
- 设计模式(工厂模式、单例模式、原型模式、***模式、适配器模式、观察者模式等…)
六、React - React自身特点及选型时考虑
- React与VUE的异同
- Virtual DOM
- React生命周期
- Diff算法
- 受控组件与非受控组件
- 高阶组件
- Flux架构模式(涉及MVC/MVVM、Flux)
- Redux设计概念、设计原则、方法、redux实现异步流的库
- 纯组件(Pure Component)与shouldComponentUpdate关系
- Redux中的组件与connect函数
- React Fiber架构
- React Hooks的作用及原理
七、NodeJS - NodeJS基本概念与特点
- CommonJS规范、核心模块
- Node的异步I/O
- Node的内存控制
- Node构建网络服务(TCP、HTTP、Web Socket服务等)
- Node的进程
八、需要会手撕的代码部分 - Promise(A+规范)、then、all方法
- Iterator遍历器实现
- Thunk函数实现(结合Generator实现异步)
- async实现原理(spawn函数)
- class的继承
- 防抖和节流
- Ajax原生实现
- 深拷贝的几种方法与比较
- 继承的几种实现与比较
- 未知宽高的元素水平垂直居中
- 三栏布局的实现
- 两栏布局的实现
- React高阶组件
- 数组去重
- 几种排序算法的实现及其复杂度比较
- 前序后序遍历二叉树(非递归)
- 二叉树深度遍历(分析时间复杂度)
- 跨域的实现(JSONP、CORS)
九、数据可视化 - Canvas和SVG的区别
- 在考虑设计可视化图表时,结合Canvas和SVG特性会怎么取舍
- 常见的可视化组件库
- 可视化组件库如Echarts的设计思路
- 一些偏向底层的可视化组件库和前端框架结合方面需要考虑哪些问题
- 可视化组件如何做到数据驱动?
十、计算机基础 - 计算机系统
- 线程与进程
- 常见的git指令
- Linux相关指令
- 其他类型的编程语言(如Java)
- 数据库
更多推荐
已为社区贡献1条内容
所有评论(0)