这个Repo主要用来分享前端面试题,目前已经涵盖html&css、bom&dom、js基础、webpack、HTTP、HTTP2&HTTP缓存、跨域、HTTPS、Git、计算机基础、数据结构与算法、性能优化等内容,后续还会不断更新。
如果对于有所帮助,可以给个star。有纰漏的地方,欢迎给我们提PR。
如果想获取本Repo的PDF版本,可以用微信扫描下方二维码,回复 “pdf” ,即可获取。如果二维码加载不出来,可以在微信搜索公众号 “前端技术星球”,回复 “pdf” ,即可获取PDF版本。
- 1.BOM事件?
- 2.常见BOM事件?
- 3.BOM事件处理程序?
- 4.BOM对象方法?
- 5.BOM对象
- 1.history
- 2.location
- 3.document
- 6.DOM?
- 7.DOM节点
- 8.DOM获取节点
- 9.DOM创建节点与插入节点
- 10.DOM0级和DOM2级有什么区别
- 11.textContent、innerText、innnerHTML、value的区别
- 12.关于dom的api有什么
- 13.什么叫Dom事件流?
- 14.如何让事件先冒泡后捕获
- 15.说一下事件代理
- 1. 如何理解CSS盒子模型
- 2.BFC
- 3.标签语义化
- 4.meta标签
- 5.css与javascript引入设置
- 6.HTML的块级元素,行内元素,行内块元素有哪些,区别是什么
- 7.CSS3有哪些新特性
- 8.实现元素隐藏
- 9.如何实现元素水平居中
- 10.如何实现元素垂直居中
- 11.Position
- 12.定位元素水平垂直居中
- 13.清除浮动
- 14.css选择器有哪些,选择器的优先级
- 15.各种布局优缺点
- 16.html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
- 17. CSS3新增伪类举例:
- 18.解释盒模型宽高值得计算方式,边界塌陷,负值作用,box-sizing概念?
- 19.如何实现浏览器内多个标签页之间的通信?
- 20.解释下浮动和它的工作原理?清除浮动的方法
- 1.什么是闭包
- 2.闭包的用途
- 3.闭包的缺点
- 4.闭包实用场景
- 5. JS 有哪些数据类型?
- 6.基本数据类型和引用数据类型有什么区别?
- 7.判断数据类型的方法有哪些?
- 8.浅拷贝与深拷贝有何区别?如何实现?
- 9. let、const的区别是什么?
- 10. 什么是执行上下文和执行栈?
- 11.什么是作用域和作用域链?
- 12.作用域和执行上下文的区别是什么?
- 13.this指向的各种情况都有什么?
- 14.如何改变this指针的指向?
- 15.如何理解同步和异步?
- 16.JS是如何实现异步的?
- 17.什么是AJAX?如何实现?
- 18.实现异步的方式有哪些?
- 19.怎么理解Promise对象?
- 20.怎么理解宏任务,微任务???
- 21.实现继承的方法有哪些???
- 22.require/import之间的区别?
- 23.原型和原型链
- 24.事件委托
- 25.解释一下变量的提升
- 26. 如何理解高阶函数
- 27.如何区分声明函数和表达式函数
- 28.解释原型继承是如何工作的
- 1.webpack与grunt、gulp的不同?
- 2.与webpack类似的工具还有哪些?谈谈你为什么最终选择(或放弃)使用webpack?
- 3.有哪些常见的Loader?他们是解决什么问题的?
- 4.有哪些常见的Plugin?他们是解决什么问题的?
- 5.Loader和Plugin的不同?
- 不同的作用
- 不同的用法
- 6.webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全
- 7.是否写过Loader和Plugin?描述一下编写loader或plugin的思路?
- 8.webpack的热更新是如何做到的?说明其原理?
- 原理:
- 9.如何利用webpack来优化前端性能?(提高性能和体验)
- 10.如何提高webpack的构建速度?
- 11.怎么配置单页应用?怎么配置多页应用?
- 12.npm打包时需要注意哪些?如何利用webpack来更好的构建?
- 13.如何在vue项目中实现按需加载?
- 14.webpack是解决什么问题而生的?
- 15.如何配置多入口文件?
- 16.webpack中的模块解析规则
- 17.webpack中的模块解析规则具体实现
- 18.什么是模块热替换
- 1.https的访问过程
- 2.https的优缺点?
- 1. 优点
- 2、缺点
- 3.https如何进行性能优化?
- 1.https访问速度优化
- 2.https计算性能优化
- 4.http和https
- 5.HTTPS为什么是安全的?
- 6.HTTPS相对于HTTP的缺陷?
- 7.为什么需要证书?
- 8.怎么防止的篡改?
- 1.什么是域名发散和域名收敛?
- 2.为什么浏览器要做并发限制呢?
- 3.什么是 DDOS 攻击
- 4.DDOS 攻击方式
- 5.如何应对 DDOS 攻击
- 6.http请求过程
- 7.DNS 域名如何解析的?
- 8.TCP三次握手
- 9.为什么要三次握手?
- 10.为什么HTTP协议要基于TCP来实现?
- 11.什么是面相连接协议?面向无链接协议又是什么?
- 1. 面相连接协议定义
- 2. 面向无链接协议定义
- 12.说到三次握手,那在说下四次挥手吧?
- 13.为什么要四次挥手
- 14.为什么建立连接是三次握手,关闭连接确是四次挥手呢?
- 15.如果已经建立了连接,但是客户端突然出现故障了怎么办?
- 16.http请求方式有哪些?
- 17.常用的请求状态码?
- 18.TCP和UDP的区别以及应用场景
- 1.UDP
- 2.TCP
- 3.应用场景
- 19.GET和POST的区别
- 20.cookies机制和session机制的区别:
- 21.HTTP、状态码:
- 22.Internet采用哪种网络协议?该协议的主要层次结构?
- 23.IP地址的编码分为哪俩部分?
- 24.TCP/IP通信建立的过程怎样,端口有什么作用?
- 25.IP组播有那些好处?
- 1.http/2项目设定目标
- 2.http/2特性
- 3.什么是缓存?又有什么用?
- 4.你知道有哪些缓存方式吗?
- 5.缓存位置
- 6.http缓存怎样生效的?
- 7.HTTP2的伪头字段
- 8.HTTP 2:服务器推送
- 9.队首阻塞问题
- 10.Transport头域
- 11.时效缓存(强制缓存)
- 12.非时效缓存(对比缓存,用的是标识):
- 13.两种缓存标识
- 14.Service Worker
- 15.memory cache
- 16.disk cache
- 1.什么是跨域
- 2.同源策略
- 3.为什么有同源策略
- 4.跨域的解决方案
- 5.jsonp原理
- 6.常见的跨域场景
- 7.postMessage跨域
- 8.资源共享跨域(CORS)
- 9.nginx代理跨域
- 10.nodejs中间件代理跨域
- 1、 非vue框架的跨域(2次跨域)
- 2、 vue框架跨域
- 11.webscoket协议跨域
- 1.列举工作中常用的几个git命令?
- 2. 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的?
- 3. 如果本次提交误操作,如何撤销?
- 4. 如果我想修改提交的历史信息,应该用什么命令?
- 第二步:执行命令git rebase –i HEAD~3,会把前3次的提交记录按照倒叙列出来;
- 5. 你使用过git stash命令吗?你一般什么情况下会使用它?
- 6. 如何查看分支提交的历史记录?查看某个文件的历史记录呢?
- 7. 能不能说一下git fetch和git pull命令之间的区别?
- 8. 使用过git merge和git rebase吗?它们之间有什么区别?
- 9. 能说一下git系统中HEAD、工作树和索引之间的区别吗?
- 10. 之前项目中是使用的GitFlow工作流程吗?它有什么好处?
- 11. 使用过git cherry-pick,有什么作用?
- 12. git跟其他版本控制器有啥区别?
- 13.我们在本地工程常会修改一些配置文件,这些文件不需要被提交,而我们又不想每次执行git status时都让这些文件显示出来,我们该如何操作?
- 14. 如何把本地仓库的内容推向一个空的远程仓库?
- 15.如在 Git 恢复先前的提交?
- 16.什么是“git cherry-pick”?
- 1.CPU基础
- 2.CPU与主存
- 3.程序等同数据
- 4.指令系统
- 5.指令寄存器与程序计数器
- 6.指令如何执行
- 7.控制器
- 8.直接存储器存取
- 9.什么是程序局部性?为什么会有程序的空间局部性?
- 10.为了实现重定位,需要哪些硬件?
- 11.在交互式系统中,非剥夺是不是一个好的策略?为什么?
- 12.谈一谈计算机网络和分布式计算机系统的区别
- 13.为什么要引入多道程序技术?
- 14.处理器如何读并解释存储在内存中的指令
- 15.总线
- 16.I/O设备
- 17.主存
- 18.处理器
- 19.计算机如何访问信息
- 20.什么是操作数指示符
- 21.如何传送数据
- 22.栈数据如何压入和弹出
- 23.如何进行算数和逻辑操作
- 24.什么是“加载有效地址”
- 25.什么是一元和二元操作
- 1. 什么是复杂度分析 ?
- 2. 为什么要进行复杂度分析 ?
- 3. 如何进行复杂度分析 ?
- 1 大 O 表示法
- 2 时间复杂度
- 3 时间复杂度分析
- 4.常用的时间复杂度分析
- 5.时间复杂度分类
- 6.时间复杂度消耗时间排序
- 7.空间复杂度分析
- 8.如何掌握好复杂度分析方法 ?
- 9.判断一段字符串是否为回文?
- 10.数组去重
- 1.性能优化的几个方面?
- 2.如何进行首屏优化
- 3.什么情况会造成内存泄漏?
- 4.异步加载?
- 5.加载方式区别?
- 6.浏览器缓存?
- 分类
- 7.预加载?
- 8.预渲染?
- 9.CDN?
- 10.DNS 预解析?
- 11.节流?
- 12.防抖?
- 13.懒执行?
- 14.懒加载?
- 15.图片优化?
- 16.图片加载优化?
- 17.js css 顺序对前端优化影响?
- 18.重排重绘为什么会影响渲染,如何避免?
- 19.何时缓存在memory,合适缓存在dist?
- 20.CSS选择符优化
- 1.什么是Angular 7?与AngularJS有何不同?
- 2.什么是Angular框架?
- 3.Angular 7中的结构指令和属性指令有什么区别?
- 4.NgModule中的”声明”, “提供者”和”导入”之间有什么区别?
- 5.Angular的关键组件是什么?
- 6.解释Angular的体系结构概述
- 7.如何将Angular 6更新为Angular 7?
- 8.什么是angular material?
- 9. 什么是aot编译?
- 10.什么是数据绑定?在Angular中有几种方式?
- 参考链接
- 1.什么是ajax?ajax作用是什么?
- 2.为什么要用ajax:
- 3.AJAX最大的特点是什么。
- 4.请介绍一下XMLHttprequest对象。
- 5.AJAX技术体系的组成部分有哪些。
- 6.工作当中会和后台交互吗? 那你能说说封装好的 ajax里的几个参数吗 ?
- 7.Ajax的实现流程是怎样的?
- 8.AJAX请求总共有多少种CALLBACK
- 9.AJAX有哪些有点和缺点?
- 10.Ajax 解决浏览器缓存问题?
- 参考链接
- 1.Grunt的特点
- 2.Gulp和Grunt的异同点
- 3.差异和不同
- 4.I/O流程的不同
- 5.Gulp中的流
- 6.为什么应该使用流?
- 7.为什么要使用Grunt?
- 8.Grunt都有哪些插件?
- 9.哪些人都在使用Grunt?
- 10.Gulp优点:
- 参考链接
- 1.vue 优点?
- 2.vue 父组件向子组件传递数据?
- 3.子组件像父组件传递事件?
- 4.v-show 和 v-if 指令的共同点和不同点?
- 5. 如何让 CSS 只在当前组件中起作用?
- 6.keep-alive的作用是什么
- 7.如何获取 dom?
- 8.说出几种 vue 当中的指令和它的用法?
- 9.vue-loader 是什么?使用它的用途有哪些?
- 10.为什么使用 key?
- 11.axios 及安装?
- 12.v-modal 的使用。
- 13.请说出 vue.cli 项目中 src 目录每个文件夹和文件的用法?
- 14. 分别简述 computed 和 watch 的使用场景
- 15.v-on 可以监听多个方法吗?
- 16.$nextTick 的使用
- 17.vue 组件中 data 为什么必须是一个函数?
- 18. 渐进式框架的理解
- 19.Vue 中双向数据绑定是如何实现的?
- 20. 单页面应用和多页面应用区别及优缺点
- 21.v-if 和 v-for 的优先级
- 22.assets 和 static 的区别
- 23.vue 常用的修饰符
- 24.vue 的两个核心点
- 25.vue 和 jQuery 的区别
- 26. 引进组件的步骤
- 27.delete 和 Vue.delete 删除数组的区别
- 28.SPA 首屏加载慢如何解决
- 29.Vue-router 跳转和 location.href 有什么区别
- 30. vue slot
- 31. 你们 vue 项目是打包了一个 js 文件,一个 css 文件,还是有多个文件?
- 32.Vue 里面 router-link 在电脑上有用,在安卓上没反应怎么解决?
- 33.Vue2 中注册在 router-link 上事件无效解决方法
- 34.RouterLink 在 IE 和 Firefox 中不起作用(路由不跳转)的问题
- 35.axios 的特点有哪些
- 36. 请说下封装 vue 组件的过程?
- 37.params 和 query 的区别
- 38.vue 初始化页面闪动问题
- 39.vue 更新数组时触发视图更新的方法
- 40.vue 常用的 UI 组件库
- 41. Vue的生命周期?
- 42.虚拟DOM和DIFF算法?
- 43.vue2和vue3原理?
- 44.生命周期钩子的一些使用方法:
- 45.开发中常用的指令有哪些?
- 参考链接
- 1.es5和es6的区别,说一下你所知道的es6
- 2.var、let、const之间的区别
- 3.使用箭头函数应注意什么?
- 4.ES6的模板字符串有哪些新特性?并实现一个类模板字符串的功能
- 5.介绍下 Set、Map的区别?
- 6.ECMAScript 6 怎么写 class ,为何会出现 class?
- 7.Promise构造函数是同步执行还是异步执行,那么 then 方法呢?
- 8.setTimeout、Promise、Async/Await 的区别
- 9.promise有几种状态,什么时候会进入catch?
- 10.使用结构赋值,实现两个变量的值的交换
- 11.Promise 中reject 和 catch 处理上有什么区别
- 12.理解 async/await以及对Generator的优势
- 参考资料
- 1.jQuery库中的$()是什么?
- 2.网页上有5个div元素,如何使用 jQuery来选择它们?
- 3.$(this) 和 this 关键字在 jQuery 中有何不同?
- 4.使用CDN加载 jQuery库的主要优势是什么?
- 5.jQuery中的方法链是什么?使用方法链有什么好处?
- 6.如何将一个HTML元素添加到DOM树中的?
- 7.说出jQuery中常见的几种函数以及他们的含义是什么?
- 8.jQuery 能做什么?
- 9.jquery中的选择器和CSS中的选择器有区别吗?
- 10.jQuery的特点都有什么?
- 参考资料
- 1.什么是React?
- 2.React有什么特点?
- 3.列出React的一些主要优点。
- 4.React有哪些限制?
- 5.什么是JSX?
- 6.你了解 Virtual DOM 吗?解释一下它的工作原理。
- 7.为什么浏览器无法读取JSX?
- 8.如何理解“在React中,一切都是组件”这句话?
- 9.解释 React 中 render() 的目的。
- 10.什么是 Props?
- 11.React中的状态是什么?它是如何使用的?
- 12.React组件生命周期的阶段是什么?
- 13.详细解释 React 组件的生命周期方法。
- 14.React中的事件是什么?
- 15.React中的合成事件是什么?
- 16.列出一些应该使用 Refs 的情况。
- 17.什么是高阶组件(HOC)?
- 18.你能用HOC做什么?
- 19.什么是纯组件?
- 20.React 中 key 的重要性是什么?
- 21.什么是React 路由?
- 22.为什么需要 React 中的路由?
- 23.列出 React Router 的优点。
- 24.类组件和函数组件之间有什么区别?
- 25.state 和 props有什么区别?
- 26.constructor中super与props参数一起使用的目的是什么?
- 27.什么是受控组件?
- 28.使用React Hooks有什么优势?
- 29.React中的StrictMode是什么?
- 30.React context是什么?
- 31.React Fiber是什么?
- 32.react diff 原理
- 33.setState 和 replaceState 的区别
- 34.React 中有三种构建组件的方式
- 35.应该在 React 组件的何处发起 Ajax 请求
- 参考资料