这些问题都是在掘金里面整理的,建议自己心里默答 一遍,看自己能掌握多少,不会的面试题可以在掘金里面搜,可以找到答案的
项目:
-
项目中遇到过哪些难题?怎么解决的?
-
怎么从零开始一个新项目?
-
购物车流程支付流程?
-
购物车是怎么做的?
-
怎么查看页面按钮的事件?
-
项目做过哪些优化?
-
首屏白屏怎么解决
浏览器
1.找本地浏览器缓存:在浏览器缓存里面查找有没有缓存,有未过期的缓存就直接获取本地的内容
2.DNS获取ip:要是过期或者没有缓存,就去DNS服务器把域名的ip获取到 3.建立TCP3次握手连接:获取到ip后和web服务器建立TCP连接
4.浏览器发送请求:建立好连接后发送请求
5.服务器响应数据:收到浏览器的请求响应数据给浏览器
6.浏览器解析HTML:浏览器接收到响应后开始解析HTML,DOM树规则树生成 render树,布局render树,绘制render树然后渲染页面
- 怎么解决跨域问题
- CORS跨域的原理
- token一般可以存放在哪里的?分别有什么好处
- token会不会被伪造?
- 前后端如何验证一个用户是否下线了
- JSONP的实现原理
webpack:
-
怎么从0开始 配webpack ?
-
新项目怎么知道要配置哪些东西?
-
如果忘了怎么配置,怎么快速找配置的方法?
-
webpack原理是什么?
-
入口 出口是什么?
-
怎么配置代理?
-
怎么优化打包速度和包的大小?
-
什么是热更新?怎么实现热模块替换?
-
plugin和loader 区别
-
介绍AST(Abstract Syntax Tree)抽象语法树
-
怎么理解反向事件代理
-
使用过webpack里面哪些plugin和loader
-
webpack里面的插件是怎么实现的
-
dev-server是怎么跑起来
-
抽取公共文件是怎么配置的
-
使用import时,webpack对node_modules里的依赖会做什么
-
webpack生命周期
-
webpack打包的整个过程
-
常用的plugins
-
pm2怎么做进程管理,进程挂掉怎么处理
-
不用pm2怎么做进程管理
-
如何配置把js、css、html单独打包成一个文件
-
webpack和gulp的优缺点
-
vite原理
-
Tree Shaking 的3个使用场景?
-
反向代理知道吗?
CSS/HTML
-
rem原理
-
px rem em 区别
-
介绍下 BFC 及其应用
-
前端页面 居中对齐有哪些方式?
-
H5新增了什么
-
C3新增了什么
-
canvas 常见 API , postMessage 和 worker 的结合有使用过吗?
-
盒模型
-
盒模型及如何转换
-
去除浮动影响,防止父级高度塌陷
-
CSS选择器有哪些
-
如何实现高度自适应
-
base64为什么能提升性能,缺点
-
介绍webp这个图片文件格式
-
怎么解决1px问题
- tranform 缩小0.5倍
- border 0.5px
JS/ES6
-
作用域的理解?
-
栈和堆具体怎么存储
-
什么是DOM?
-
对闭包的理解?
-
递归
-
深拷贝和浅拷贝
-
JS怎么实现异步
-
return 、break和continue的区别和作用
-
类数组如何转成数组
-
setTimeout的执行原理
-
new操作符做了什么?
-
你知道 typeof null为什么是 object 吗?
-
Array是Object类型吗
-
JavaScript延迟加载的方式有哪些?
-
防抖和截流 区别
-
this的指向?
-
介绍宏任务和微任务
-
改变this的方法 ?
-
介绍暂时性死区
-
V8垃圾回收机制
-
什么是事件代理?
-
babel编译原理
-
函数科里化 的理解
-
什么是内存泄露 怎么避免?
-
闭包的核心是什么
-
闭包使用场景
24 .网络的五层模型
-
HTTP和HTTPS的区别
-
介绍冒泡排序,选择排序,冒泡排序如何优化
-
所有的事件都有冒泡吗?
-
CommonJS 和AMD ES6的区别
-
如何找0-5的随机数,95-99呢
-
数据类型的判断分别要哪些 优点 缺点
-
for forEach map filutter 哪些循环可以中断 ?
-
some、every、find、filter、map、forEach有什么区别
-
js里面哪个循环速度最快
-
ES6中let块作用域是怎么实现的
-
什么是强制类型转换,什么是隐式类型转换?
-
什么是构造函数,它与普通函数有什么区别?
-
说说你对原型链, prototype的理解?
-
promise、async有什么区别
-
介绍Promise,异常捕获
-
介绍下Promise,内部实现
-
如何设计Promise.all()
-
Promise.all中如果有一个抛出异常了会如何处理
-
Promise有没有解决异步的问题(promise链是真正强大的地方)
-
ES6新特性
-
ES6中的map和原生的对象有什么区别
-
介绍class和ES5的类以及区别
-
进程和线程的区别(一个node实例就是一个进程,node是单线程,通过事件循环来实现异步
-
在实战项目当中 哪里使用过继承?
-
说说栈和队列的区别?
-
怎么解决跨域问题?
-
bable原理
-
浏览器渲染原理?
-
重绘和重排/回流的区别?
-
GC 的两种类型是什么?
-
js事件循环机制?
-
介绍二叉搜索树的特点
-
介绍暂时性死区
-
什么是函数式编程
Vue
-
观察者和发布-订阅的区别
-
介绍defineProperty方法,什么时候需要用到
-
vue2的原理?
-
Vue2和Vue3的生命周期
-
MVVM 和 MVC 的区别?
-
说下diff算法?
-
vue3的原理?
-
vue3 比vue2好在哪里?
-
什么是依赖树?
-
watch跟computed的区别
-
说下 virtual dom 在 vue 和 react 的区别?
-
虚拟DOM主要做了什么
-
vue的通信方式有哪些
-
vue for循环渲染的时候 key的作用?
-
什么是渲染函数?
-
vue生命周期里 DOM生成 在哪个生命周期里面?
-
什么时候使用keep-alive元素?
-
vue指令有哪些
-
vue修饰符?
-
nextTick原理?
-
vuex刷新页面数据没了怎么办?
-
什么是异步组件?
-
less,sass它们的作用是什么?
-
路由动态加载模块
-
vue里的<router-link>标签和<a>标签有什么区别
-
token一般放在哪里?
-
小程序里面开页面最多多少
-
发布-订阅和观察者模式的区别
-
Object.definedProperty 和 Proxy
-
不使用框架如何实现组件按需加载以及原理
Typescript:
- 为什么要使用 TypeScript ? TypeScript 相对于 JavaScript 的优势是什么?
- TypeScript 中装饰器是怎么实现的?
- TypeScript 中 const 和 readonly 的区别?枚举和常量枚举的区别?接口和类型别名的区别?
- TypeScript 中 any 类型的作用是什么?
- TypeScript 中 any、never、unknown、null & undefined 和 void 有什么区别?
- TypeScript 中的 this 和 JavaScript 中的 this 有什么差异?
- 简单介绍一下 TypeScript 模块的加载机制?
node:
-
你了解node多进程吗
-
node进程中怎么通信
-
node可以开启多线程吗
-
node 原理
-
常用的中间件
-
说说浏览器和 Node 事件循环的区别
-
nodejs Buffer缓冲区
算法:
- 二叉树
- 如何判断链表是否有环
HTTP:
-
简述https原理,以及与http的区别
-
Tcp三次握手 四次挥手 tcp属于哪一层(1 物理层 -> 2 数据链路层 -> 3 网络层(ip)-> 4 传输层(tcp) -> 5 应用层(http))
-
Get和post的区别
-
常见Http请求头
-
居中为什么要使用transform(为什么不使用marginLeft/Top)
-
介绍http2.0
-
http缓存控制
-
jsonp为什么不支持post方法
-
介绍下表单提交,和formData有什么关系
-
cookie 和 token 都存放在 header 中,为什么不会劫持 token?
-
浏览器缓存读取规则
-
什么是数字签名? 什么是数字证书?
-
https的加密方式
-
在项目中如何把http的请求换成https
-
为什么不是一次两次握手,三次挥手?
优化:
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
-
你什么时候接触前端的
-
平时怎么学习
-
对未来的规划是什么
-
你对哪个项目印象深刻,说一下项目的难点
-
你对我们公司有什么了解
-
在上一家离职的原因是什么
-
手里有几个offer
-
你手里有offer了为什么不去?