作者致力于建立一个有良好学习氛围的圈子,每天坚持语音打卡前端知识点,每日输出解析,有兴趣加入我们请扫码关注微信公众号(之所以需要关注公众号是因为不想直接把联系方式放在这里,加群之后可以取关),直接发私信我会添加你入群,欢迎加入我们
前端各个技术栈题目解析合集,按技术门类分类请看这里按技术栈分类
这里会将每日的面试题及解析汇总,由于每日会发布多道面试题,题解不一定能够跟得上,作者保证尽量每日争取一篇,对于没有题解的题目,如果有需要的话可以加群联系我更新,加群方式见上方说明
- 盒模型 盒模型
- 从输入URL到到页面显示发生了什么?从输入URL到到页面显示发生了什么?
- 媒体查询是如何实现响应式的?
- ajax有什么缺陷?
- vue3做了哪些设计上的优化,举几个例子
- 说一下快速排序的实现思路,做一下复杂度分析快速排序
- 说一下你理解的JS事件循环,宏任务和微任务?
- 如何理解BFC,怎么触发?
- 强制缓存和协商缓存?强制缓存和协商缓存
- vue中的key是干什么用的
- 常见的web攻击方式,如何防御?
- 说一下原型链是什么,实现继承的几种方式
- 说一下js闭包,怎么理解,有什么作用,有什么缺点
- 说一下Promise ,原理了解吗
- Vue 响应式原理了解吗,Vue2和Vue3响应式实现有何不同
- 了解堆吗,堆排序思路说一下?堆和堆排序
- js数组去重?
- 什么是同源策略,如何解决跨域问题
- 什么是回流和重绘,什么情况下会发生
- websocket了解么,建连过程是怎样的
- 微信小程序双线程原理?微信小程序双线程模型
- Map/WeakMap,Set/WeakSet了解吗,有什么区别,Map和普通的Object有什么不一样k?
- Vue中nextTick怎么理解?Vue.nextTick使用和实现原理
- js中的this对象?
- 常见的HTTP状态码,301和302什么区别
- 平衡二叉树?
- let var const的区别
- vue mixin 是什么,如何使用
- JavaScript 垃圾回收JavaScript垃圾回收
- webpack构建流程
- 翻转二叉树?
- apply,call,bind的作用及区别
- JavaScript函数式编程?
- vue组件通信
- css画一个三角形,原理是什么
- 深度优先遍历和广度优先遍历DFS和BFS
- 箭头函数和普通函数的区别
- nodejs事件循环,和浏览器中的事件循环机制有什么区别
- 虚拟DOM是什么,vue中虚拟DOM是怎么工作的虚拟DOM
- GET请求和POST请求的区别
- vue中computed和watch的区别
- 深拷贝/浅拷贝区别和实现
- vue模板解析原理Vue模板编译过程和原理
- CSS预编译
- nodejs有哪些原生模块,各自是什么作用
- 反转链表
- js中遍历对象,遍历数组分别有哪些方式 数组和对象的遍历
- 字符串方法substr,substring.slice,使用和区别
- vue组件生命周期
- git merge和git rebase
- 相交链表
- ES6中的Decorator是什么,使用场景?
- js中为什么0.1+0.2不等于0.3,数字精度问题如何解决
- ajax原理?手写ajax实现AJAX原理与实现
- Vue SSR是什么,解决了什么问题
- 有序数组合并
- Vue3 的 Composition Api 与 Vue2的 Options Api 有什么不同
- js事件模型、事件代理JavaScript事件模型和事件代理
- webpack热更新是怎么做到了,了解原理吗
- 微信小程序页面、组件生命周期?
- 二分查找
- OSI七层模型,TCP、IP、HTTP分别属于哪一层计算机网络模型
- 什么是单例模式?什么是观察者模式,有哪些使用场景
- 长列表优化?
- axios原理
- 了解哪些排序算法,复杂度是多少
- HTTPS比HTTP安全在哪里?HTTP和HTTPS的区别
- 进程和线程的区别
- typescript了解吗,简单介绍一下
- 小程序页面跳转方式有哪些,什么区别
- vue中的slot是什么,如何使用
- 什么是函数柯里化
- 浏览器路由模式,hash/history
- 性能优化手段有哪些 性能优化策略
- TCP和UDP的区别
- LRU缓存机制
- JavaScript数据类型
- ES6数组的扩展有哪些
- webpack常见的loader有哪些,什么作用webpack loader
- 如何优化webpack打包速度
- 最长回文子串:最长回文子串
- documentFragment是什么?它有什么好处?
- css中link和@import的区别是什么?
- vue-router的原理是什么?hash/history模式
- 什么是语义化,语义化标签有哪些
- 二叉树中序遍历 中序遍历
- vue中计算属性和普通属性的区别
- TS的优势
- v-model怎么实现是
- 什么是SEOSEO
- 二叉树前序遍历 https://leetcode.cn/problems/binary-tree-preorder-traversal/
- css清除浮动
- es6对象扩展
- Vuex是什么,简单介绍一下
- 内存泄露的情况
- 二叉树后序遍历算法题整理系列(-)
- 手写观察者模式
- 301、302、304的区别
- 前端单测如何做
- 什么是DOM,什么是BOM,相关的api有哪些 DOM和BOM简单介绍
- 二叉树最大路径和:https://leetcode.cn/problems/binary-tree-maximum-path-sum/
- vue路由守卫是什么?有哪几类?具体的方法?
- nginx了解吗,做什么用,反向代理是什么含义
- 介绍一下迭代器模式
- nodeJs中间件?NodeJS中间件
- 链表中倒数第k个节点https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
- Vue SSR是什么,解决了什么问题Vue SSR
- 长列表优化?
- axios原理
- TCP和UDP的区别
- 二叉树锯齿形层次遍历二叉树锯齿形层次遍历
- CSS3新特性
- new 运算符做了哪些事情
- js数组常用方法
- 说一下原型链是什么,实现继承的几种方式
- LRU 缓存机制LRU 缓存机制
- vue diff算法
- javascript闭包
- 浏览器本地存储浏览器本地存储
- csrf,跨站请求伪造
- 二叉树的最近公共祖先
- vue 响应式原理
- nodejs事件循环,和浏览器中的事件循环机制有什么区别
- 说一下Promise ,原理了解吗Promise介绍
- js中的this对象?
- 爬楼梯:https://leetcode.cn/problems/climbing-stairs/
- 虚拟DOM是什么,vue中虚拟DOM是怎么工作的
- nodeJs中间件
- ajax原理
- 长列表优化?
- 了解哪些排序算法,复杂度是多少排序算法合集
- webpack常用配置项有哪些
- Vue3特性知道哪些
- 函数式编程
- 垃圾回收
- js对象扁平化javascript对象和数组扁平化
- 如何理解BFC,怎么触发?
- webpack loader和plugin
- 从输入URL到页面渲染...从输入URL到页面渲染发生了什么
- webpack热更新原理webpack热更新原理
- 链表相关算法题
- Vue模板解析,AST?
- js中异步编程的解决方案,callback、Promise、Generator?
- Vue中data为什么是一个函数
- Vue为什么是渐进式的
- 下一个排列
- Vue diff算法比对过程,key的作用Vue diff算法
- Vue keep-alive
- Vuex是做什么用的,有哪几个模块
- flex布局常用属性和作用
- 合并区间合并区间
- nodejs有哪些原生模块,各自是什么作用
- js中为什么0.1+0.2不等于0.3,数字精度问题如何解决
- 如何优化webpack打包速度
- Vue 3.0中的Treeshaking
- 排序链表:https://leetcode.cn/problems/sort-list/
- css如何实现左侧固定,右侧自适应布局
- 设计一个下拉展开选中组件,怎么做
- nginx了解吗,做什么用,反向代理是什么含义nginx
- XSS注入了解吗,如何防御
- 快速排序
- 说一下回流和重绘,如何减少回流?
- nodeJs有哪些全局对象
- NodeJS fs这个模块了解吗
- vite了解吗vite
- 二分查找
- TS枚举类型?
- git reset 和git revert区别
- nodeJS性能监控和优化
- HTTP常见请求头HTTP常见请求头
- 环形链表
题解:二叉树相关题目合集
- 二叉树的先序、中序、后序遍历
- 二叉树层序遍历
- 二叉树的右视图
- 二叉树的最大深度
- 平衡二叉树
题解:算法题解整理系列(三)
- 两数之和
- 数组中的第K个最大元素
- 最大自序和
- 有效的括号
- 合并两个有序数组
题解:算法题解整理系列(四)
- LRU缓存机制
- 二叉树的最近公共祖先
- 岛屿数量
- 相交链表
- 最长上升子序列
- 二分查找
题解:算法题解整理系列(五)
- 全排列
- 反转链表
- 用栈实现队列
- 链表中的倒数第K个节点
- 对称二叉树
题解:算法题解系列整理(六)
- 最长回文子串
- 从前序遍历序列和中序遍历序列还原二叉树
- 斐波那契数列
- 零钱兑换
- 最大正方形
题解:算法题解整理系列(七)
- 快速排序
- js对象扁平化
- 爬楼梯
- 最长公共子序列
- 二叉树的直径
题解:算法题解整理系列(八)
- 无重复的最长子串
- 三数之和
- 括号生成
- 根节点到叶子节点的数字之和
- 下一个排列
题解:算法题解整理系列(九)
- 翻转二叉树
- 多数元素
- 最长公共前缀
- 寻找峰值
- 岛屿的最大面积
- 打家劫舍打家劫舍
- 只出现一次的数字
- 二叉树最大宽度
- 括号生成
- 堆排序
- 回文链表回文链表
- 二分查找
- 比较版本号
- 二叉树中序遍历
- 路径总和
- js对象扁平化
- 归并排序
- 二分查找
- 合并区间合并区间
- 最小路径和
题解:算法题解整理系列(十)
- webpack原理
- Vue diff算法Vue diff算法
- leecode:二叉搜索树的第k大节点
- leecode:青蛙跳台阶问题
- leecode:零钱兑换2
- webpack原理 Webpack打包流程解析
- Vue diff算法
- leecode 课程表
- leecode 全排列
- 长列表优化
- git merge 和git rebasegit merge 和 git rebase
- TS数据类型
- leecode 回文数
- leecode 删除排序链表中的重复元素
- leecode 有效电话号码
- 做一个简单的自我介绍,一分钟
- 项目中遇到过的最难的问题,怎么解决的
- 为什么离职
- 排序链表
- 下面这段代码输出结果是什么
var a = 10
var obj = {
a: 20,
say: () => {
console.log(this.a)
}
}
obj.say()
var anotherObj = { a:30 }
obj.say.apply(anotherObj)
- CDN是什么,实现原理CDN
- nodeJs Buffer是做什么的?
- TypeScript 枚举类型?
- 策略模式
- leecode x的平方根
- 长列表优化怎么做
- 如何判断一个元素在可视区内
- leecode 路径总和路径总和
- leecode 长度最小的子数组
- leecode:二叉树的完全性检验
- Vue生命周期
- JavaScript执行上下文和执行栈
- 正则表达式常见简写,空字符?数字?非单词字符正则表达式笔记.
- 写一个正则匹配手机号
- leecode:删除链表的倒数第N个节点
- 正则表达式匹配ip地址
- JavaScript闭包
- 函数式编程
- leecode:合并区间
- leecode最长公共子序列最长公共子序列
- JavaScript常用数组方法JavaScript常用数组方法
- 手写ajax
- 手写防抖函数、节流函数 4.Vue diff算法详细说一下
- leecode 二叉树的最大深度
- Vue3.0的设计目标是什么?做了哪些优化
- == 和===的区别
- js常用数组方法JavaScript数组常用方法(中)
- leecode 二叉树的最近公共祖先
- 二叉树的直径
- vue中的key是干什么用的
- 说一下原型链是什么,实现继承的几种方式
- 什么是同源策略,如何解决跨域问题
- 什么是回流和重绘,什么情况下会发生
- webpack构建原理
- ts中的interface怎么理解
- JavaScript闭包JavaScript闭包
- Vue整体工作流程,虚拟DOM。双向绑定?
- leecode:反转链表||
- leecode 最小路径和
- JavaScript原型链JavaScript原型链
- nodeJs事件循环
- webpack打包原理
- leecode 全排列
- leecode:归并排序
- 函数式编程
- webpack打包原理webpack打包原理
- Vue 异步更新机制
- leecode:翻转二叉树
- leecode 字符串的排列
- NodeJs事件循环NodeJS事件循环
- Vue Diff算法
- JavaScript new运算符做了写什么
- 编程题: JavaScript对象扁平化
- leecode:快速排序
- vue 异步更新机制
- Vue3做了哪些优化
- 说一说常用的设计模式JavaScript设计模式之工厂模式
- leecode :比较版本号
- leecode:移动0
- JavaScript设计模式
- Vue diff
- Vue 异步更新机制
- leecode 课程表
- leecode: x的平方根
- 简单说一下flex布局
- CSS3新特性
- Vue diff 算法详细说一下?
- leecode:最长连续序列
- leecode:二叉树前序、中序、后序遍历
- 使用 generator函数实现 async/await
- JavaScript this指向问题
- 原型链查找过程
- leecode 环形链表
- leecode 全排列
- async/await实现原理
- commonJS 和ES module的区别
- 实现一个异步的map函数 asyncMap
- leecode:字符串想加
- leecode:堆排序
- 手写防抖节流函数
- 手写Promise
- 手写ajax
- JavaScript闭包
- CSS动画怎么优化
- 手写async/await
- 手写原型模式继承
- Vue双向绑定原理
- leecode:打家劫舍
- leecode:岛屿数量
- 手写 async/await
- typescript联合类型
- nodeJS中间件
- leecode 反转链表
- leecode 最长公共子序列
- 对比一下Vue和react
- react state和props的区别
- node js processNodeJS原生模块(一)
- leecode:无重复字符的最长子串
- leecode: LRU缓存机制
- node JS process模块process模块
- 为什么v-if和v-for不建议一起用
- JavaScript类型转换
- leecode:数组中的第K个最大元素
- leecode: 三叔之和
- Vue懒加载
- proxy实现数据响应式
- JavaScript事件委托
- leecode: k个一组翻转链表
- leecode:手撕快速排序
- cookie和session的区别
- OSI网络模型
- typescript数据类型
- leecode:最大自序和
- leecode:合并两个有序链表
- async/await实现
- JavaScript数字精度问题
- web常见攻击方式
- leecode:两数之和
- leecode:二叉树的层序遍历
- webpack plugin
- webpack loader
- 函数柯里化
- leecode:搜索旋转排序数组
- leecode:买卖股票的最佳时机
- serviceworker和webworker的区别
- Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
- ==和===的区别 4.leecode:环形链表
- leecode: 岛屿数量
- 接口返回1万条数据,如何处理
- 编写一个抽奖程序
- 强制缓存和协商缓存
- leecode:岛屿数量
- leecode:二叉树锯齿形层序遍历
- 打包工具对比 webpack、rollup、vite
- CDN的实现原理
- Node JS buffer
- leecode:二叉树的最近公共祖先
- leecode:最长回文子串
- Symbol类型有什么用处
- 计算属性和普通属性的区别
- Vue组件间通信的方式
- leecode:合并两个有序链表
- leecode:相交链表
- Vue keep-alive
- 说说em/px/rem/vh/vw区别?
- TCP和UDP的区别
- leecode: 全排列
- leecode: 螺旋矩阵
1.强制缓存和协商缓存过程 2. Promise的原理、手写一下? 3. async/await手写一下? 4. leecode:反转链表|| 5. leecode: 环形链表||
- Vue 模板解析过程,
- 正则表达式基础
- Vue diff算法
- leecode: 字符串想加
- leecode: 最长上升子序列
- JavaScript事件模型
- type和inistanceOf的区别
- new操作符具体做了些什么
- leecode:接雨水 5.leecode:重排链表
- JavaScript事件模型
- type和inistanceOf的区别
- new操作符具体做了些什么
- leecode:接雨水 5.leecode:重排链表
- TS接口怎么理解
- Node js Buffer
- get和post的区别
- leecode: 用栈实现队列
- leecode: 合并区间
- HTTP1和HTTP2的区别
- node进程监控和优化
- CSS三角形怎么画
- leecode:合并区间 4.leecode:排序链表
- 如何让Chrome支持小于12px的字体
- DNS协议是什么,完整的DNS查询过程是怎样的
- react state和props的区别
- leecode: 二叉树的右视图
- leecode: 删除链表的倒数第n个节点
- flex布局
- CSS清除浮动
- CSS垂直居中
- leecode: 二叉树的右视图
- leecode: 排序链表
- Vue中父子组件的加载顺序
- Vue中数据通讯的方式
- TCP头部字段有哪些
- leecode:删除排序链表中的重复元素
- leecode: x的平方根
- Vue diff算法
- Vue和react的区别
- 小程序组件和Vue组件的区别
- leecode:下一个排列
- leecode:字符串转换成整数
- react中props和state的区别
- css中link和@import的区别
- 封装一个组件要注意些什么
- leecode:最长公共子序列
- leecode:链表的倒数第K个元素
- 什么是DTD
- 什么是微服务
- 哪些操作会导致内存泄漏
- leecode:链表中的倒数第k个节点
- leecode: 括号生成
- CSS外边距折叠是指什么,如何解决
- 解释一下同源策略
- iframe的缺点
- leecode: 二叉树前序遍历
- leecode:翻转字符串里的单词
- 图片使用base64的优缺点
- V8引擎的垃圾回收机制
- 文档类型声明的作用是什么
- leecode: 从前序和中序遍历序列中还原二叉树
- leecode:零钱兑换
- 二进制、10进制、16进制转换
- CSS左侧固定,右侧自适应布局
- 小程序性能优化策略有哪些
- leecode: 平衡二叉树
- leecode:最小栈
- Vue组件传值的方式有哪几种
- Symbol有什么用处
- 使用iconfont有什么优缺点
- leecode:比较版本号
- leecode:求根节点要叶节点数字之和
- Vue中计算属性和普通属性的区别
- 严格模式?
- HTML文档加载顺序
- leecode:二叉树的最大深度
- leecode:字符串相乘
- 词法作用域和this的区别
- CSS实现响应式的几种方式
- webpack热更新原理
- leecode: 对称二叉树
- leecode:二叉树的最大深度
- sourceMap是做什么用的
- HTTP请求有什么特征
- 单向数据流的好处
- leecode:二叉树的直径
- leecode:路径总和
- 如何理解前后端分离
- CSS加载会阻塞渲染吗,为什么
- requestAnimationFrame的运行机制?
- leecode:二叉树的直径
- leecode:最小路径和
- grid布局了解吗
- PM2是什么,做什么用的
- CSP是什么
- 快速排序
- 数组去重
- CSS清楚浮动
- 手写EventBus
- CDN缓存刷新
- leecode:最大正方形
- leecode:翻转二叉树
- class和工厂模式的区别是什么
- 说说如何借助webpack来优化前端性能?
- React生命周期?
- leecode:路径总和
- leecode:组合总数
- 小程序的技术实现了解多少
- react如何做性能优化
- 什么是负载均衡
- leecode:最长重复子数组,
- leecode:翻转二叉树
- Vue中如何重置data
- 浏览器丢帧会造成什么问题
- DNS查询有几种方式
- 手写一个观察者模式
- leecode:合并两个有序链表
- 说一下Vuex
- React DOM 和虚拟DOM的区别
- state和props的区别
- leecode:最长公共前缀
- leecode:寻找峰值
- 说一下创建对象的几种方式,工厂模式?构造函数模式、原型模式,class之间的联系和区别
- Vue中的filter
- Vue中的依赖注入
- leecode:最大数
- leecode:手撕堆排序
- JavaScript中数组如何在内存中存储的
- 如何理解HTTP代理
- CSS Sprites是什么
- leecode: 字符串解码
- leecode: 岛屿的最大面积
- B站视频的弹幕是如何做到不遮挡人物的
- 如何理解Proxy,使用场景
- Linux了解吗,聊一下Linux文件系统
- leecode: 二叉树最大宽度
- leecode: 移动0
- 网页置灰的需求如何实现
- 如何实现webpack持久化存储
- 微服务和单体应用的区别
- 定时器为什么是不精准的
- get、post、put三种请求方式的区别