2021最新 前端中高级面试题全都搞懂 20k轻松拿下(题目)

270 阅读8分钟

这些问题都是在掘金里面整理的,建议自己心里默答 一遍,看自己能掌握多少,不会的面试题可以在掘金里面搜,可以找到答案的

项目:

  1. 项目中遇到过哪些难题?怎么解决的?

  2. 怎么从零开始一个新项目?

  3. 购物车流程支付流程?

  4. 购物车是怎么做的?

  5. 怎么查看页面按钮的事件?

  6. 项目做过哪些优化?

  7. 首屏白屏怎么解决

浏览器

  1. 从输入 url 到展示的过程

1.找本地浏览器缓存:在浏览器缓存里面查找有没有缓存,有未过期的缓存就直接获取本地的内容

2.DNS获取ip:要是过期或者没有缓存,就去DNS服务器把域名的ip获取到 3.建立TCP3次握手连接:获取到ip后和web服务器建立TCP连接

4.浏览器发送请求:建立好连接后发送请求

5.服务器响应数据:收到浏览器的请求响应数据给浏览器

6.浏览器解析HTML:浏览器接收到响应后开始解析HTML,DOM树规则树生成 render树,布局render树,绘制render树然后渲染页面

  1. 怎么解决跨域问题
  2. CORS跨域的原理
  3. token一般可以存放在哪里的?分别有什么好处
  4. token会不会被伪造?
  5. 前后端如何验证一个用户是否下线了
  6. JSONP的实现原理

webpack:

  1. 怎么从0开始 配webpack ?

  2. 新项目怎么知道要配置哪些东西?

  3. 如果忘了怎么配置,怎么快速找配置的方法?

  4. webpack原理是什么?

  5. 入口 出口是什么?

  6. 怎么配置代理?

  7. 怎么优化打包速度和包的大小?

  8. 什么是热更新?怎么实现热模块替换?

  9. plugin和loader 区别

  10. 介绍AST(Abstract Syntax Tree)抽象语法树

  11. 怎么理解反向事件代理

  12. 使用过webpack里面哪些plugin和loader

  13. webpack里面的插件是怎么实现的

  14. dev-server是怎么跑起来

  15. 抽取公共文件是怎么配置的

  16. 使用import时,webpack对node_modules里的依赖会做什么

  17. webpack生命周期

  18. webpack打包的整个过程

  19. 常用的plugins

  20. pm2怎么做进程管理,进程挂掉怎么处理

  21. 不用pm2怎么做进程管理

  22. 如何配置把js、css、html单独打包成一个文件

  23. webpack和gulp的优缺点

  24. vite原理

  25. Tree Shaking 的3个使用场景?

  26. 反向代理知道吗?

CSS/HTML

  1. rem原理

  2. px rem em 区别

  3. 介绍下 BFC 及其应用

  4. 前端页面 居中对齐有哪些方式?

  5. H5新增了什么

  6. C3新增了什么

  7. canvas 常见 API , postMessage 和 worker 的结合有使用过吗?

  8. 盒模型

  9. 盒模型及如何转换

  10. 去除浮动影响,防止父级高度塌陷

  11. CSS选择器有哪些

  12. 如何实现高度自适应

  13. base64为什么能提升性能,缺点

  14. 介绍webp这个图片文件格式

  15. 怎么解决1px问题

    • tranform 缩小0.5倍
    • border 0.5px

JS/ES6

  1. 作用域的理解?

  2. 栈和堆具体怎么存储

  3. 什么是DOM?

  4. 对闭包的理解?

  5. 递归

  6. 深拷贝和浅拷贝

  7. JS怎么实现异步

  8. return 、break和continue的区别和作用

  9. 类数组如何转成数组

  10. setTimeout的执行原理

  11. new操作符做了什么?

  12. 你知道 typeof null为什么是 object 吗?

  13. Array是Object类型吗

  14. JavaScript延迟加载的方式有哪些?

  15. 防抖和截流 区别

  16. this的指向?

  17. 介绍宏任务和微任务

  18. 改变this的方法 ?

  19. 介绍暂时性死区

  20. V8垃圾回收机制

  21. 什么是事件代理?

  22. babel编译原理

  23. 函数科里化 的理解

  24. 什么是内存泄露 怎么避免?

  25. 闭包的核心是什么

  26. 闭包使用场景

24 .网络的五层模型

  1. HTTP和HTTPS的区别

  2. 介绍冒泡排序,选择排序,冒泡排序如何优化

  3. 所有的事件都有冒泡吗?

  4. CommonJS 和AMD ES6的区别

  5. 如何找0-5的随机数,95-99呢

  6. 数据类型的判断分别要哪些 优点 缺点

  7. for forEach map filutter 哪些循环可以中断 ?

  8. some、every、find、filter、map、forEach有什么区别

  9. js里面哪个循环速度最快

  10. ES6中let块作用域是怎么实现的

  11. 什么是强制类型转换,什么是隐式类型转换?

  12. 什么是构造函数,它与普通函数有什么区别?

  13. 说说你对原型链, prototype的理解?

  14. promise、async有什么区别

  15. 介绍Promise,异常捕获

  16. 介绍下Promise,内部实现

  17. 如何设计Promise.all()

  18. Promise.all中如果有一个抛出异常了会如何处理

  19. Promise有没有解决异步的问题(promise链是真正强大的地方)

  20. ES6新特性

  21. ES6中的map和原生的对象有什么区别

  22. 介绍class和ES5的类以及区别

  23. 进程和线程的区别(一个node实例就是一个进程,node是单线程,通过事件循环来实现异步

  24. 在实战项目当中 哪里使用过继承?

  25. 说说栈和队列的区别?

  26. 怎么解决跨域问题?

  27. bable原理

  28. 浏览器渲染原理?

  29. 重绘和重排/回流的区别?

  30. GC 的两种类型是什么?

  31. js事件循环机制?

  32. 介绍二叉搜索树的特点

  33. 介绍暂时性死区

  34. 什么是函数式编程

Vue

  1. 观察者和发布-订阅的区别

  2. 介绍defineProperty方法,什么时候需要用到

  3. vue2的原理?

  4. Vue2和Vue3的生命周期

  5. MVVM 和 MVC 的区别?

  6. 说下diff算法?

  7. vue3的原理?

  8. vue3 比vue2好在哪里?

  9. 什么是依赖树?

  10. watch跟computed的区别

  11. 说下 virtual dom 在 vue 和 react 的区别?

  12. 虚拟DOM主要做了什么

  13. vue的通信方式有哪些

  14. vue for循环渲染的时候 key的作用?

  15. 什么是渲染函数?

  16. vue生命周期里 DOM生成 在哪个生命周期里面?

  17. 什么时候使用keep-alive元素?

  18. vue指令有哪些

  19. vue修饰符?

  20. nextTick原理?

  21. vuex刷新页面数据没了怎么办?

  22. 什么是异步组件?

  23. less,sass它们的作用是什么?

  24. 路由动态加载模块

  25. vue里的<router-link>标签和<a>标签有什么区别

  26. token一般放在哪里?

  27. 小程序里面开页面最多多少

  28. 发布-订阅和观察者模式的区别

  29. Object.definedProperty 和 Proxy

  30. 不使用框架如何实现组件按需加载以及原理

Typescript:

  1. 为什么要使用 TypeScript ? TypeScript 相对于 JavaScript 的优势是什么?
  2. TypeScript 中装饰器是怎么实现的?
  3. TypeScript 中 const 和 readonly 的区别?枚举和常量枚举的区别?接口和类型别名的区别?
  4. TypeScript 中 any 类型的作用是什么?
  5. TypeScript 中 any、never、unknown、null & undefined 和 void 有什么区别?
  6. TypeScript 中的 this 和 JavaScript 中的 this 有什么差异?
  7. 简单介绍一下 TypeScript 模块的加载机制?

node:

  1. 你了解node多进程吗

  2. node进程中怎么通信

  3. node可以开启多线程吗

  4. node 原理

  5. 常用的中间件

  6. 说说浏览器和 Node 事件循环的区别

  7. nodejs Buffer缓冲区

算法:

  1. 二叉树
  2. 如何判断链表是否有环

HTTP:

  1. 简述https原理,以及与http的区别

  2. Tcp三次握手 四次挥手 tcp属于哪一层(1 物理层 -> 2 数据链路层 -> 3 网络层(ip)-> 4 传输层(tcp) -> 5 应用层(http))

  3. Get和post的区别

  4. 常见Http请求头

  5. 居中为什么要使用transform(为什么不使用marginLeft/Top)

  6. 介绍http2.0

  7. http缓存控制

  8. jsonp为什么不支持post方法

  9. 介绍下表单提交,和formData有什么关系

  10. cookie 和 token 都存放在 header 中,为什么不会劫持 token?

  11. 浏览器缓存读取规则

  12. 什么是数字签名? 什么是数字证书?

  13. https的加密方式

  14. 在项目中如何把http的请求换成https

  15. 为什么不是一次两次握手,三次挥手?

优化:

1.说一下平时项目是怎么优化的?

2.优化之后是怎么度量的?

3.首屏时间是怎么计算的?

导入导出 怎么区分 :


exports
export
export default
export const fn
export {}
export const num = 1


import {xx} from 'xxxxx'   
imoprt xx from 'xxxx'

require('xxx')
const xxx = require('xxx')

HR

  1. 你什么时候接触前端的

  2. 平时怎么学习

  3. 对未来的规划是什么

  4. 你对哪个项目印象深刻,说一下项目的难点

  5. 你对我们公司有什么了解

  6. 在上一家离职的原因是什么

  7. 手里有几个offer

  8. 你手里有offer了为什么不去?