一、来源背景
面试题是来自微博@牛客网发布的真实大厂前端面经题目,我一直在收集题目长期一个一个的记录下来的,可能会有重复,但基本前端的面试大纲和需要掌握的知识都在其中了,面试题仅做学习参考,学习者阅后也要用心钻研其中的原理,重要知识需要系统学习、透彻学习,形成自己的知识链。
二、532道前端真实大厂面试题
- express和koa的对比,两者中间件的原理,koa捕获异常多种情况说一下
- 你项目里用到第三方登录涉及的oAuth(JWT)协议的实现原理,以及你本地的实现原理,第三方登录怎么样保证安全性
- 说下快排完整性
- react和vue的区别,你开发如何选择技术栈
- express里面登录的session服务怎么样实现分布式服务
- vue的理解
- vue的双向数据绑定的原理
- vue怎么样实现数组绑定
- js的继承
- call和apply的区别
- ajax是同步还是异步,怎么样实现同步
- ajax实现过程
- 闭包的作用理解,以及那些地方用过闭包,以及闭包的缺点,如何实现闭包
- 跨域方法以及怎么样实现的与原理
- 工作中做的项目有什么亮点
- webpack工程构建工具怎么样用
- 数组去重
- 快排和冒泡原理
- http状态码
- nodejs了解多少
- 为什么css样式初始化,目的是为了什么
- 为什么浏览器会产生同源策略
- axios有什么特点
- cookie和webstrage的区别以及cookie怎么样使用?原生cookie怎么样封装
- 三次握手
- 对跨域了解吗。jsonp的限制
- 浏览器那些地方用到了异步
- css弹性布局,那些地方用到过
- position属性有哪些值,分别有什么含义
- ES6用过吗,新增了那些东西,你用到过什么
- const和let的区别,可以改变const定义对象某个属性吗
- 箭头函数,箭头函数的特点
- js的this理解, 如何改变this的指向
- cookie有什么限制
- js的事件机制
- settimeout的机制
- 遇到过兼容性的问题吗,要如何处理
- 项目中使用过构建工具吗
- 平时如何学习前端的,最近在看的一本书
- 内存泄露的排除定位和解决方法
- 垃圾回收机制
- websocket实现原理
- http状态码301 302的区别,304是啥
- 缓存机制,协商协议
- 定时器setTimeout的运行机制
- 事件循环机制 eventloop
- 异步es5 es6 es7分别怎么样解决
- js的继承的实现方法
- 清除浮动的方法
- 常见布局的方法
- 从输入一个url到浏览器页面展示都经历了哪些过程
- new生成了一个对象的过程(核心return this)
- 请简单说明什么是事件冒泡和事件捕获以及事件委托
- 实现一个两边宽度固定中间自适应的三列布局,圣杯布局,双飞燕
- flex布局有没有了解
- 请简述一下js原型链
- es6有了解吗,请简单说一下promise机制,异步的承诺机制,顺势说一下解决回调地狱的问题
- 手写一下深拷贝,答案提示:JSON.parse(JSON.stringify(obj)) 用JSON实现深拷贝
- == 和 === 的却别,typeof null的结果是什么
- 同步和异步的执行顺序
- get和post的请求区别
- 什么情况算是跨域,如何解决跨域问题
- 一个有序的数组如何进行查找操作
- 手写一个快速排序
- 事件委托理解,原理,好处,应用场景
- 前端框架用过什么?
- vue和react的区别
- vue的原理
- 闭包
- let和var的区别,let的产生背景?
- 定宽定高,如何垂直居中,那不定宽定高呢?
- https的请求过程
- 代码规范
- 项目中遇到过什么难点,如何解决的
- 尾递归问题
- 电脑里有很多大小不一样的照片,我现在要复制到U盘上,但是U盘容量固定,让你写一个程序,挑选一组照片,让U盘的剩余空间最小。
- 后端会哪些语言
- 讲下如何负载均衡
- cookie和session的区别和联系
- nodejs是单线程还是多线程的,为什么能去开很多异步请求去访问其他接口
- 一般你是如何操作数据库的?会哪些数据库
- mysql的底层引擎,发布
- mysql语言写的如何,怎么样判断sql语句的性能?如何优化?
- 如何去除数组中的重复的项?
- 遍历数组处理用for循环还有什么方法吗
- 浏览器出于安全考虑有?(同源策略)
- 登录原理
- 让我设计一个页面,选择男或女,搜索出相对性
- 发送请求有哪些?
- web的安全问题?
- 自我介绍
- JS如何计算浏览器的渲染时间的
- 浏览器的缓存
- var的变量提升底层原理是什么?
- event loop讲讲
- JS的回收机制说一下
- 数组常用的方法有哪些
- websock的底层原理讲讲
- 你的聊天室项目,如果数据传输出错了怎么办?
- 现在有一大段文字,如何在页面中设置一个窗口滚动播出这段文件(轮播),轮播图如何解决卡顿问题,有手写过轮播图你,原理是什么
- 垂直水平居中的方式
- 实现三栏布局,中间自适应有几种方法
- 算法:给你一个无序数字数组,里面是随机的书,并给出一个目标值,求这个数组的两个数,这个数的和等于目标值,要求这两个数并给出下标,你能想到最优的办法是什么吗(提示:快排,双指针)
- 算法:给一个无序的数组,让我分割成m组,这个m组里和最大的一组是所有可能的分割情况最小的(二分答案法)
- webpack的原理
- _proto_ 和prototype分别是什么
- 原型链原理
- 在原型链上Object再往上是什么
- new和Object.create的区别
- 哪种情况下__proto__和prototype的指向是同一个?
- typeof array null undefined NaN分别是什么
- 把undefined和null转成Number分别是什么
- 如何判断是否为数组?(instanceOf和constructor可以,但是有原型链断裂的风险,Object.toString.call()最稳定)
- instanceOf和constructor的区别
- 原型链断裂了以后的结果是什么
- 如果让你实现一个promise怎么样实现
- 如何学前端的,看了哪些书
- 博客写了多少篇
- 你的技术亮点在哪里
- 写一下实现合理化
- 你对三大框架的理解是什么
- 前端性能理解,优化有哪些
- nodejs了解多少
- 你遇到的最有难度的技术问题是什么
- redux原理讲讲
- 了解web移动开发吗,移动端适配方案有哪些
- 你有Native开发经验吗,讲下Android如何调用页面的资源
- 行内元素和块级元素有哪些,img属于什么元素
- margin坍塌
- BFC原理
- 写一下清除浮动
- 写一下不知道宽高元素垂直水平居中方法
- 写一下节点的增删改
- 如何获取元素的父节点和兄弟节点
- JS如何获得用户来源(navigator.userAgent)
- 跨域方法说一下
- jsonp的原理是什么,处理script标签还可以通过什么实现?(静态资源标签)
- 原型链说一下
- 谈谈对原型链继承
- 前端缓存
- 给你一个乱序数组,你怎么样排序
- 你的项目有什么亮点
- 你的文件上传方案是什么
- 写一个方法提取一下search里面的参数
- 写一个API实现insertAfter
- CSS3哪些用的比较多
- CSS动画会吗,怎么样用CSS实现一个loading效果
- 如何处理CSS兼容问题
- webpack有个插件可以解决css兼容性问题你知道吗(postcss-loader)
- ES6新特性说说
- ES6的代理是什么
- let和var的区别讲讲
- 箭头函数和ES5和this的指向区别讲讲
- 前端安全这块了解多少
- 写一个API,实现jQuery的$(selector)选择器,要求兼容IE6
- 浏览器是如何实现通过你的代码去找到指定的元素的
- 用JS模拟一个双向链表
- 前端工程化思想
- 模块化思想
- 你为什么选择前端
- cookie,session,localStorage和sessionStorage的区别
- Nodejs的线程管理
- JS设计模式有哪些
- 跨域的方法有哪些
- 说说bind,apply,call的区别以及bind的实现
- 算法:反转二叉树以及时间复杂度
- 链表找环
- react的virtual DOM和Diff算法
- React的生命周期
- Vue的生命周期
- boostrap的底层原理
- 图片压缩的原理
- 如何处理高并发的情况下,用户顺序问题
- 说一下web安全,xss,csrf防范
- csrf流程,举例子
- session+cookie的登录机制
- token香港,浏览器缓存
- vue双向绑定原理,vue-loader做了什么
- webpack的插件大致流程
- 编程题:给出一个字符串(“obj.a”),返回对象属性obj.a,类似eval的效果
- 前端路由会不会发请求
- 画布濡染有了解吗
- 前端监控,pm2,如果我服务器挂了,如何快速发现并且定位错误
- pm2除了监控还能干什么,如何实现
- express中间件如何实现
- 了解TCP吗,数据结构简单介绍一下以及你的想法
- webpack项目太大了怎么办
- 深拷贝
- 如果弹出的菜单位置过于贴近边框,如何调整这个元素的位置
- 计算50个人至少有2个生日相同的概率
- 一个升序数组,求两个元素的和为一个指定数
- vue的生命周期
- vuex的状态管理的原理是什么
- 如何在浏览器端和原生端的代码复用,讲到weex又简单讲了它的原理
- 跨域如何解决
- 前端性能优化问题
- csrf攻击原理以及防御手段
- 平衡二叉树
- 如何在上亿规模的数据中找到最大的一个数
- 最近看过的技术文章和一遍非技术文章(考察表达能力,和主动学习新知识的习惯)
- 算法题:二叉树层序遍历
- JS的全排列
- get和post的区别
- 301和302的区别
- 如何避免301跳转https
- tcp建立连接三次握手的区别
- 操作系统进程和线程的区别
- 线程的哪些资源共享,哪些资源不共享
- 设计模式有哪些
- Linux命令用的多吗,怎么样进行进程间通信
- kill指令了解过吗
- 如何画一个三角形
- CSS中对溢出的处理
- CSS选择器有哪些,优先级呢?
- ES6中用过什么
- promise的状态有哪些
- 讲讲JS的闭包
- 你有用到express吗
- express和koa2的区别
- 讲讲JS的语言特性吗
- 最近在学啥
- 项目用到JAVA,反射来讲
- 你用过什么数据库
- MySQL里面的索引用过吗
- B+树了解过吗
- mongoDB有哪些特点
- 实现一个两列等高布局,思路
- 清除浮动的方法
- 如何让一个元素消失
- 重排和重绘
- HTTP状态码
- 讲讲304
- 浏览器缓存机制
- 强缓存,协商缓存什么时候用哪个
- 如何判断一个数组
- 你说到typeof,能不能加一个限制条件typeof只能判断是object,可以判断一下是否拥有数组的方法
- JS的如何实现倒计时,为什么不准,校正方式
- JS实现跨域
- React的特性
- nodejs的时间方法讲讲看
- nodejs的特性,适合处理什么场景
- IO多路复用
- 前端优化
- 实现一个ajax,兼容
- 如何有一个很多的列表,像头条的新闻列表,用户看得多了,列表越来越大,怎么样处理,思考一下
- 如果有这样的场景:一个模块A作为输出,BCD等扩展模块可以在A做更改后展示A的原来内容或者驾驶CSS后的内容,想想思路
- 同一个网站,在上海打开慢,在北京打开快,怎么样分析原因,(DNS解析和CDN)
- vue react jquery比较,有测试过性能吗
- 对大前端的理解,前端会发展怎么样
- 算法:两个排序好的数组,怎么样找他的中位数
- React虚拟DOM,生命周期
- react父子通信
- nodejs如何require一个包
- es6和es5的区别
- Nodejs加载原生的包与自己定义的包路径如何查找
- HTTP2.0的优势
- flex弹性布局裂解,移动端适配方案有哪些
- 页面缓存
- 页面性能优化
- css性能优化,就动画效果,如何从js,cs角度减少回流?
- webpack的plugin和loader的区别
- es5如何转为es5-babel
- 了解webpack如何打败
- 原型基础
- BFC
- 原型链与作用域链
- jQuery的源码看过没
- 移动端开发经验
- css会吗
- 怎么样学前端
- 遇到问题如何解决
- 正则如何将一个数千分化表示
- js设计模式知道哪些,单例详细说
- 函数式编程-柯里化
- es6的变量定义和es5的区别
- JS事件流
- 七层网络协议,每层干嘛的
- tcp三次握手,四次挥手
- 排序算法有哪些,时间复杂度,选择排序怎么样搞
- 数据结构有哪些,红黑树和二叉树的区别,二叉搜索树与二叉平衡树
- 项目经验
- 树数据多少非常多怎么样办(懒加载)
- 页面优化方法
- 设计模式
- cookie和session的却别
- 如果现在重新做这个项目,有什么想优化的
- 多长时间开始独立做前端,这段时间是如何学习的
- 学习生涯最失败的事情是什么,怎么样走出来的
- 如何看待竞争
- 项目里最难的事情,如何克服
- 职业规范是怎么样的
- 是独生子女吗
- 别人对你的项目认可度,项目做的怎么样
- block元素和inline元素的区别
- position有哪些,特性
- css选择器有哪些
- es5和es6:let,const打包后如何变-块级作用域
- JS基本数据类型
- 作用域链
- 递归
- react生命周期
- react通信机制
- js事件流
- redux
- flex弹性布局
- this
- promise如何从then转为catch的
- 介绍你做过的项目
- promise函数
- es6模块新特性
- 浏览器内存泄露,闭包内存泄露如何解决
- 怎么样让页面加载更快
- 兼容过IE的方法
- 缓存
- 会pc端还是移动端
- 观察者模式如何实现
- 行元素,块级元素的却别
- css选择器的优先级
- 水平垂直居中布局
- 前端性能优化
- 闭包的概念,平时如何实现
- es6的特性以及这些特性如何实现的
- 事件冒泡,事件捕获,事件委托的原理,如何实现委托,事件,委托的有点是什么,事件监听
- 输入URL浏览器是如何工作的
- requirejs组件化
- jQuery和vue的区别
- vue的特点
- vue的双向绑定原理
- 谈谈js设计模式
- 如何实现订阅者发者模式
- MVVM实现原理
- vue生命周期
- vue跨组件通信实现
- vue的props和slot的使用,区别
- vuex的原理
- 详细说明解决跨域的方式
- 前端安全(资源枚举,XSS共计,DOS攻击,CSRF攻击)
- HTTP状态码
- 重排重绘
- 谈谈JS的异步机制
- 项目中是是如何优化页面的
- 如何实现移动端布局,适配方案
- call apply bind的区别
- 深拷贝的实现
- jQuery原理,平时用jQuery都做过什么
- 用过webpack吗,谈一下webpack打包
- 给了一个settimeout代码输出的顺序
- git命令
- Linux命令
- JS基础有几种
- 流式布局
- 对前端的了解和个人规划
- html5的新特性
- float和position的区别
- 如何获取当前日期
- html语义化,好处
- 计算器
- 清除浮动
- 盒子模型
- border-box和content-box
- css伪元素有哪些
- 打开连接到网页呈现的流程
- HTTP请求头,响应头里面有哪些
- 异步加载JS
- JS原型
- 看哪些技术网站
- 觉得自己的不足
- cookie实现
- cookie长度限制
- http状态码
- 301 302
- 性能优化
- 一个网页很多很多页面,怎么样让用户体验好一点
- 一个项目可能要延期,怎么样处理
- URL长度限制
- 缓存
- 什么时候用local,什么时候用session和 storage
- 长连接
- 有没有抓过包
- 有没有用过代理
- DNS
- 图片压缩
- gzip
- 浏览器兼容
- webpack css兼容
- css性能
- 垂直居中,水平居中
- 盒子米线
- last-modifined,etg怎么样判断
- css动画优化
- 401状态码
- reflow和repaint
- 应用层协议有哪些
- TCP和UDP
- 有哪些状态码
- Ajax如何实现的
- Ajax返回204算是成功吗
- settimeout异步
- tcp ip分成
- vue diff算法
- vue的生命周期
- pwa
- vue-router不能解决情况和边界情况
- transition生命周期
- 线程和进程的区别
- 什么是异步
- promise是如何解析异步操作的
- 如果给a,b,c,d四个时间,执行时间分别为1,2,3,4,怎么样做才能在abc都在执行完后再执行d,除了使用promise还能使用什么方法
- 数组去重方法
- 函数节流和函数防抖知道吗,区别是什么
- TCP和UDP的区别
- HTTP1.0和HTTP1.1相关我让你听
- 强缓存和协商缓存知道吗
- 为什么HTTP1.1中使用Cache-Control代替Expires
- HTTP1.1中Etg和f-None-Match哪个权重比较大
- 排序的几种方法知道吗,是如何实现的
- 栈和队列有什么区别,具体的应用场景
- hashmap原理
- react中props和state的区别
- 组件怎么样拿到redux的数据
- 给你一个DOM元素,用CSS的方式让他呈现两个的想过,只有一个DOM元素
- 一个数组只有1和2,排序,1在前面,2在后面
- js事件模型,捕获和冒泡,阻止冒泡
- preventDefault和stopPropagation的区别
- HTTP缓存
- https
- react的事件绑定和原生有什么区别吗
- 一个数组,有很多数字存在2次,只有一个数字寸一次,怎么样找出这个数字
- 关于iframe内部和外部变量的读取是如何的
- 前端防连击throttle和debounce
- ES6 generator async/await了解吗
- HTTP/2有什么新特性
- 哈希的原理
- 如何反转链表
- 二叉搜索树的原理
- 给定两个文本文件,找出他们中相同的行都有哪些
- 对JS单线程的理解
- 页面共享数据的方法有哪些
- amd,cmd规范
- 用户页面打开很慢,有哪些优化方式
- react的虚拟DOM了解什么,这些类型的框架和传统的jd操作dom的优势
- koa generator能讲一下吗
- 如何做单侧,单侧和开发占比应该是多少
- hybrid
- v-model参数
- mvvm,mvc,mvp区别
- cdn
- 网络安全xss,csfr是什么,怎么样解决安全
- https怎么样校验证书有效性
- websocket协议,nodejs中有哪些实现了这个协议
- TCP/IP体系结构以及每层的主要协议
- TCP的三次握手
- HTTP各版本比较
- 数据结构学过什么
- js如何实现一个栈
- 哈希表是怎么样的结构
- 说说操作系统的内存管理
- 怎么样实现一个服务器
- 如何删除一个dom节点
- 浏览器如何渲染页面的
- GitHub的项目问
- 看过什么书
- 你是如何理解HTML语义化的
- HTML的黑钻模型有哪些构成的,盒子模型有哪些,默认是哪些
- 盒子模型有没有办法把宽度设置为包含padding
- 浮动元素有没有什么特性
- 清除浮动的所有方法
- ji基本数据类型
- typeof去判断数据类型返回值有哪些
- 说说事件代理利用的是什么原理
- 阻止冒泡的函数是什么
- cookie有什么特征
- 加入访问A.com存进了一个cookie,在另外一个页面用ajax向A的域名发请求会携带cookie吗
- cookie的其他解决方案
- localStorage存储数据格式是什么
- 怎么样把一个数组存进localSorage
- storage有哪些存储方法
- html5有哪些新的特性
- 假设两台电脑之间同步画板如何实现
- promise的两个方法,具体实现
- es6用的多的有哪些
- 箭头函数
- 如果一个页面做辛夷花,从哪些方面考察,从哪些地方优化
- vue开发模式和jQuery模式有哪些不同,有哪些优缺点
- 假设一个object A里面的值n为1,怎么样知道n改变了,有事件绑定吗
- react是如何实现数据绑定的
- 给数字加千位分隔符
- HTTP1 SPDY HTTP2的对比
- webkit内核渲染页面过程
- 简单介绍一下backbone
- react首次渲染过程
- redux和vuex的区别
- 了解过weex吗
- typescript和es6的区别
- 知道xss吗,介绍一下,如何避免
- 跨域方式
- 如何理解html语义化
- 浏览器如何处理未知的的tab
- html5有什么新的tag,canvas…
- nodejs的优势,用过nodejs的哪些模块
- 预约系统如何解决高并发的问题
- kut如何优化react的diff,有去提pr吗,为什么
- 简单说一下ICP UDP
- Socks5代理是如何实现的,读过协议吗
- http状态码,307是什么,401和403的区别
- 酸酸是如何实现穿墙的
- 如何实现文件上传的功能
- 垂直居中的实现
- react和vue的区别
- 介绍一下盒子模型
- 实现css动画有哪些
- jsonp如何实现,过程
- 知道哪些http状态码
- 200和304实现缓存的区别
- localstorage和cookie的区别,如何设置cookie
- 表单提交和ajax的区别
- calc属性
- symbol
- 事件监听
- 常见的请求方式
- tcp和http的区别
- css的定位属性,怎么样定位的
- 情景题:给你一个ul列表,找到点击的li对象,把点击到的对象的字符串翻转,讲出思路并且写出代码
- 只能用获取到对象的属性
- 小程序的生命周期
- 小程序的Onlaunch周期不支持同步获取信息之后再执行到下一个生命周期
- 你怎么样维持用户登录状态的
- 给你一颗树,如何找到其公共的父节点
- 你最荣耀的事情
- 你怎么样知道我们公司的,为什么来我们公司
- rem,px,em的区别
- 协同开发需要注意什么
- 一个数组中要正数,也有负数,请随机找到其中几个子数组,使其相加之和最小?(动态规划算法)