前端面试题大汇总
HTML
- 什么是 HTML 语义化,有什么好处
- HTML5的新特性?
- 为什么要在html文件开头加上一个<!DOCTYPE html>
- DOCTYPE的作用,严格与混杂模式的区别,有何意义
- HTML5为什么只需要写<!DOCTYPE HTML>
- 请写出table标签下面会包含哪些标签元素
- 很多网站不常用table iframe这两个元素,知道原因吗?
- jpg和png格式的图片有什么区别?
- 常用浏览器有哪些,内核都是什么?
- a标签在新窗口打开链接怎么加属性?
- form标签上定义请求类型的是哪个属性?定义请求地址的是哪个属性?
css
- 元素水平垂直居中的方法
- flex布局介绍。
- css盒模型中,IE盒模型和标准盒模的区别。
- 选择器的优先级。
- css中link和@import的区别。
- position的属性。
- 介绍下和伪元素和伪类。
- 如何清除浮动。
- less 和 sass是什么?他们的区别。
- 如何实现页面适配 简写代码
- 原生复选框如何去点击改变里面的样式?比如把点击勾选的样式变成圆圈的样式?
- 了解过处理兼容性的问题吗?
- 标准的CSS的盒子模型?
- 说下盒模型?
- 与低版本IE的盒子模型有什么不同的?
- box-sizing属性?
- 盒子模型在不同浏览器上的区别
- 不定宽高水平垂直居中?
- 文字在垂直和水平方向重叠的两个属性分别是什么?
- 如何居中div
- 为什么margin: 0 auto会让div居中
- 对BFC的理解?
- 如何触发BFC?
- BFC解决了什么问题?
- 为什么overflow:hidden能触发bfc?
- Position定位值有哪些?
- absolute的containing block计算方式跟正常流有什么不同?
- display有哪些值?说明他们的作用?
- display:none与visibility:hidden的区别?
- display:inline-block 什么时候会显示间隙?
- overflow属性定义溢出元素内容区的内容会如何处理?
- visibility属性有个collapse属性值?在不同浏览器下以后什么区别?
- position跟display、overflow、float这些特性相互叠加后会怎么样?
- 为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?
- margin和padding分别适合什么场景使用?
- CSS常用选择器
- 哪些属性可以继承?
- CSS优先级算法如何计算?
- CSS3新增伪类有那些?
- ::before 和 :after 中双冒号和单冒号的区别?这2个伪元素的作用?
- Flex布局
- 请解释一下flexbox(弹性盒布局模型),以及适用场景?
- 如何让DOM元素不显示在浏览器的可视范围内?
- 一个满屏品字布局如何设计?
- 常见的兼容性问题?
- 浏览器兼容性有哪些
- CSS 预处理器
- CSS 3的新增特性?
- CSS 创建一个三角形
- CSS 初始化样式是为什么?
- CSS 优化 提高性能的方法有哪些?
- CSS 选择器是怎样被浏览器解析的?
- CSS Sprites
- CSS Hack是什么?ie6,7,8的hack分别是什么?
- CSS 引入方式?
- 移动端的布局用过媒体查询吗
- 在网页中的应该使用奇数还是偶数的字体?为什么呢?
- 元素竖向的百分比设定是相对于容器的高度吗?
- 全屏滚动的原理是什么?用到了CSS的哪些属性?
- 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
- 视差滚动效果?
- li与li之间不可见空白间隔引起原因?解决办法?
- width: auto 和 width: 100% 的区别
- 有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度
- png、jpg、gif 这些图片格式解释一下,分别什么时候用。有没有了解过webp?
- style标签写在body后与body前有什么区别?
- 使用 base64 编码的优缺点
- 超链接访问过后hover样式就不出现的问题时什么?如何解决?
- rgba()和opacity的透明效果有什么区别?
- px和em的区别
- 描述一个“reset”的css文件并如何使用它。知道normalize.css吗?你了解他们的不同之处吗?
vue react
- vue的生命周期有哪些。
- 子组件和父组件如何传值的。
- v-if 和 v-show之间的区别。
- 介绍以下watch和computed vue中watch的用法和讲解
- vue2是如何监听数据的
- 为啥不使用全局对象来管理数据,要用vuex
- 自定义指令哪些参数 自定义指令的生命周期
- vue2x监听方面有什么缺点?所以才有了vue3.0
- 使用路由懒加载的时候,如何让点击加载A页面的时候,B页面也能加载?
- .react跟vue的区别?
- 不用v-model是怎样实现双向数据绑定的?比如我用的不是input输入框,而是下拉选择,是怎样实现的?
- react diff大致原理
- react setState什么时候同步什么时候异步为什么会这样
- 你们当前react版本多少,此版本做了哪些优化
- 跳转页面时如何去监听路由的变化?
- hook中setState原理
- 什么是vue生命周期?
- 详细说明生命周期
- vue生命周期的作用是什么?
- vue生命周期总共有几个阶段?
- 第一次页面加载会触发哪几个钩子?
- DOM 渲染在 哪个周期中就已经完成?
- Vue内置指令
- vue-cli如何新增自定义指令?
- v-if 和 v-show 区别
- Vue模板语法-插值
- vue几种常用的指令
- 事件修饰符
- 键值修饰符
- 计算属性computed
- 计算属性与methods的区别
- 计算属性与watch的区别
- 什么是vue的计算属性?
- 插槽slot
- Vue的双向绑定数据的原理
- 单向数据流和双向数据绑定
- 单向数据流
- 双向数据绑定
- Vue 如何去除url中的 #
- 组件通信
- 父组件向子组件通信
- 子组件向父组件通信
- vue-router相关
- vue-router是什么 它有哪些组件?
- vue-router 路由实现
- $route和$router的区别
- 怎么定义vue-router的动态路由?
- 怎么获取传过来的动态参数?
- Vue的路由实现:
- 前端怎么控制管理路由
- vue-router提供两种模式的原因?
- Hash基本介绍
- vue-router原理
- active-class是哪个组件的属性?嵌套路由怎么定义?
- 谈谈你对MVVM开发模式的理解
- 为什么会出现MVVM
- 虚拟dom的原理
- 说一下virtual Dom中key的作用
- 为什么要使用虚拟DOM?
- Vuex是什么?怎么使用?哪种功能场景使用它?
- Vue 3.0
- Vue 组件 data 为什么必须是函数
- Vue 中怎么自定义过滤器
- Vue 中 key 的作用
- 简述Vue的响应式原理
- Vue中如何监控某个属性值的变化?
- Vue组件间的参数传递
- css只在当前组件起作用
- vue.js的两个核心是什么?
- vue常用的修饰符?
- vue等单页面应用及其优缺点
- MVC
- vue.nextTick实现原理
- Emit事件怎么发,需要引入什么
- 使用import时,webpack对node_modules里的依赖会做什么
- vue怎么监听数组
- Proxy 相比于 defineProperty 的优势
- RESTful
- 架构优点
- 什么是RESTful API?怎么使用?
- RESTful架构设计原则(不同公司具体细节可能不同):
- vue 组件的优点,以及注册使用的过程
- Vue.js中ajax请求代码应该写在组件的methods中还是vuex的actions中?
js
- this指向问题
- promise 说一下promise的原生实现 实现promise并指出为何能够实现.then连续调用
- 箭头函数 使用箭头函数应注意什么
- 解构赋值
- Ajax以及axios使用和二次封装 通过axios 请求拦截器
- 闭包
- 原型 原型链
- 作用域
- 钩子函数是什么
- 设计模式 设计模式用过吗?最熟悉的模式是什么?
- 事件冒泡 事件捕获
- 优雅降级和渐进增强
- 闭包
- 事件委托
- js延迟加载
- 深拷贝和浅拷贝
- 重排和重绘
- 跨域
- 写一个冒泡排序
- 构造函数,实例,原型之间的关系
- cookie sessionStorage localStorage区别及相关安全等
- Webpack打包性能优化 webpack大致运行流程
- 单例模式的实现原理是什么 手写一个
- 说一下输入URL到页面显示的过程,越详细越好
- 手写JS的继承
- 说一下宏任务和微任务有什么区别 那么promise和setTimeout会谁先执行
- 说一下vue双向绑定实现的原理
- es6了解过吗?模块化是怎么实现的?怎么做到变量名之间互不干扰就是模块之间如何保证互不影响,模块化是怎么做到的?
- ES5和ES6的区别?说一下你所知道的ES6
- class es6变为es5是怎么写的
- 防抖怎么写
- 做过什么插件
- 大文件上传
- 断点续传怎么分包
- 数据一开始没定义,后面新增,不会变化,怎么修改
- import和require的区别
- 表单提交的时候的报文头
- 图片在线预览 new blob
- 事件循环(出了好几道)
- 深拷贝
- 静态资源缓存是怎样实现的?cdn加速又是怎样实现的
- 使用axios请求时 ,如何中断请求
- 存储数据在浏览器有哪些方法?如何设置一个时间让存储在浏览器里面的数据消失?
- 浏览器的缓存策略是怎样的?如何给强缓存设置过期时间?协商缓存发送了什么请求?
- 原型链相关
- 实现class中的extends
- Proxy为什么不能被babel polyfill
- 如何压缩图片?
- 当git上传之后,发现代码有bug,该如何去做?
- object.definedproperty参数有哪些?分别是哪些?
- 了解过处理兼容性的问题吗?
- video如何实现自动播放?
- 发送请求要不要加密?是如何加密的?全部都能请求到后台数据吗?
- 怎样实现路由懒加载?不用懒加载有什么后果?
- 为什么不直接用mutaction去发送请求,请求之后直接修改数据。而要在action里面发送异步请求?
- ES6 怎么写class ,为何会出现 class?
- 实现compose函数
- 扩展运算符与rest运算符的区别?
- 解决异步的方式有哪些
- event loop简述原理
- ajax原理
- ajax到async的发展过程
- 什么是同源策略?
- 跨域的方式及原理?
- Axios的特点
- es5与es6继承方式?
- 处理数组用过哪些方法?
- 数组对象,变异和非变异方法?
- js判断是不是数组的方法?
- 数组去重有哪些方法?
- 利用set的唯一性来达到去重效果(es6中最常用)
- 利用双重for循环,然后splice去重(es5中最常用)
- 利用indexOf去重
- 利用sort()排序方法来实现
- 利用es7中新增的includes方法
- 利用hasOwnProperty()方法和filter
- 处理字符串用过哪些方法?
- 处理对象用过哪些方法?
- Math对象常用的方法?
- js的数据类型有哪些?
- substr与substring的区别?
- 数组的map,filter,forEach的区别?
- 闭包?
- 闭包的适用场景?
- 什么是内存泄漏?
- 如何解决内存泄漏?
- 什么是垃圾回收机制?
- 说下原型链?
- js事件流?
- 深拷贝和浅拷贝?
- DOM操纵 增删改查?
- 如何做防止重复提交?
- 防抖和节流
网络
- http常见状态码
- 跨域
- 表单请求的header
- http与https区别 https大致实现原理
- 服务端渲染与客户端渲染相比好处,减少多少首屏渲染时间
- 怎样解决跨域跨域时的请求头option请求什么时候发
- http1.1跟http2.0有什么区别?
算法
- 排序数组去重 要求不新建情况下返回去重后的新数组元素个数
- 二叉树镜象
- 数组输出翻转后的数组 要求空间复杂度为0(1)
- 根据最小位进行排序相同则根据进位排序例in: [1,20,33,31,50] out: [20,50,1,31,33]14.实现相同数字消除例如[1,3,2,2,2,3,5] => [1,3,3,5] => [1,5]
- 爬楼梯只能爬1梯或2梯求爬第n梯有几种跳法
- ast语法树都能干哪些事
- 实现柯里化函数
- 了解过diff算法吗?是如何计算的?
小程序
- 小程序中是否能实现后端可配置动态页面,是否能过微信审核
- 小程序渲染出页面整个流程
- 微信小程序生命周期?
- 微信小程序用哪种响应式方案?
优化
- 怎样减少http请求?
- 项目部署时候,前端还有什么优化性能方案
安全
- 对web性能安全有什么了解吗?(主要说了xss和csrf)
- xss一般会过滤什么?(尖括号、斜杠)
- 为什么要过滤尖括号?(可以插入脚本,如)
- 了解过哪些web安全及防护原理?
手写部分:
1. 以下代码会不会报错,如何不报错输出什么,为什么?(备注,es6介绍下)
var y = 10;
if (!(x in window)) {
var x = 10;
} else {
++y;
}
2. 以下代码会不会报错,如何不报错输出什么,为什么?(备注,数据类型介绍)
var a = {n: 1};
var b = a;
a = {n: 2}
a.x = a;
console.log(a.x);
console.log(b.x);
3. 以下代码输出什么。(备注,闭包介绍)
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}