接下来给大家总结一下前端面试题,大家可以眼熟一下,总结的不是很多,后续还会持续更新。
一.html、css面试题
HTML和HTML5有什么区别?
主要有三个区别:
1、文档声明区别
1.HTML:超文本标记语言,一种纯文本类型的语言。
2.HTML5.0:文档声明HTML5方便书写,精简,有利于程序员快速的阅读和开发。
2、结构语义区别
1.html:没有体现结构语义化的标签,如:<div id="nav"></div>
2.html5:添加了许多具有语义化的标签,如:<article>、<aside>、<audio>、<bdi>...
3、绘图区别
1.HTML:指可伸缩矢量图形,用于定义网络的基于矢量的图形。
2.HTML5:HTML5的canvas元素使用脚本(通常使用JavaScript)在网页上绘制图像,可以控制画布每一个像素。
4、什么是盒子模型?
一个盒子我们会分成几个部分:内容区(content)、内边距(padding)、边框(border)、外边距(margin),也就是盒模型的组成由margin,padding,boder,content组成
盒子模型分为标准盒子模型和IE盒子模型
2.如何理解HTML5语义化?
5、HTML语义化标签
header – 标题
nav – 导航
article – 文章
section – 节或段
aside – 侧边栏
footer – 页脚
6、语义化的好处?
1.在没有css代码的情况下,也能很好的呈现内容结构、代码结构(让非技术员也能看懂代码)
2.提高用户体验,比如:title,alt用于解释名词和图片信息
3.利于SEO。语义化能和搜索引擎建立更好的联系,优化搜索
4.便于团队开发与维护,语义化更具有可读性
7、CSS选择器以及优先级的理解?
1.常用的CSS选择器
ID选择器、类选择器、标签选择器、属性选择器、伪类选择器、后代选择器
2.权重划分
在同一层级下:
!important > 内联样式 > ID选择器 > 类选择器 > (标签选择器、伪类选择器、属性选择器)
不同层级下:
正常来说权重值越高的优先级越高,但是一直以来没有具体的权重值划分,所以目前大多数开发中层级越深的优先级越高
8.如何解决a标点击后hover事件失效的问题?
爱恨法则
1 a:link,定义正常链接的样式;
2 a:visited,定义已访问过链接的样式;
3 a:hover,定义鼠标悬浮在链接上时的样式;
4 a:active,定义鼠标点击链接时的样式。
9.实现水平垂直居中的几种方式
①定位
position:absolute
Top:50%
Left:50%
Transform:translate(-50%,-50%)
②flex布局
Display:flex
Justify-content:center
Align-items:center
3.js面试题
1、js数据类型
1.基本数据类型
Number、String、Boolean、Null、Undefined、Symbol、bigInt
2.引用数据类型
object、Array、Date、Function、RegExp
2、js变量和函数声明的提升
1.在js中变量和函数的声明会提升到最顶部执行
2.函数的提升高于变量的提升
3.函数内部如果用 var 声明了相同名称的外部变量,函数将不再向上寻找。
4.匿名函数不会提升。
3、闭包
1.闭包就是能够读取其他函数内部变量的函数
2.闭包基本上就是一个函数内部返回一个函数
好处
1.可以读取函数内部的变量
2.将变量始终保持在内存中
3.可以封装对象的私有属性和私有方法
坏处
比较耗费内存、使用不当会造成内存溢出的问题
4、== 和 ===的区别
1.==是非严格意义上的相等
值相等就相等
2.===是严格意义上的相等,会比较两边的数据类型和值大小
值和引用地址都相等才相等
5、this
1.this总是指向函数的直接调用者
2.如果有new关键字,this指向new出来的对象
3.在事件中,this指向触发这个事件的对象
6、js数组和对象的遍历方式
for in
for
forEach
for-of
7.回调函数和事件绑定的优缺点
1.回调函数:
优点:简单容易理解
缺点:不利于维护,代码耦合性高
2.事件监听:
优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数
缺点:事件驱动型,流程不够清晰
8.什么是作用域链?
1.作用域链可以理解为一组对象列表,包含 父级和自身的变量对象,因此我们便能通过作用域链访问到父级里声明的变量或者函数。
9.什么是原型,原型链,继承?
1.所有的函数都有prototype属性(原型)
2.所有对象都有__proto__属性
3.在js中,每个函数都有一个原型属性prototype指向自身的原型,而由这个函数创建的对象也有一个proto属性指向这个原型,而函数的原型是一个对象,所以这个对象也会有一个proto指向自己的原型,这样逐层深入直到Object对象的原型,这样就形成了原型链。
10.谈谈你对回流和重绘的理解?
1.什么是回流?
当一个元素自身的宽高,布局,显示或隐藏,或元素内部的文字结构发生变化,导致需要重新构建页面的时候,就产生了回流
2.什么是重绘?
当一个元素自身的宽高,布局,及显示或隐藏没有改变,而只是改变了元素的外观风格的时候,就产生了重绘
11.jQuery能做什么?
获取页面的元素;修改页面的外观;改变页面大的内容;响应用户的页面操作;为页面添加动
态效果;无需刷新页面,即可以从服务器获取信息;简化常见的javascript任务。
12.jQuery的作用:
1.快速获取文档元素
2.提供漂亮的页面动态效果
3.创建Ajax无刷新网页
4.提供对JavaScript语言的增强
5.增强的事件处理
6.更改网页内容
JQuery可以修改网页中的内容,比如更改网页的文本、插入或转网页图像, jQuery简化了原本使用JavaScript代码需要处理的方式。
13.jQuery的优点
1.利用css的选择器提供高速的元素查找行为。
2.提供了一个抽象层来标准化各种常见的任务,可以解决各种浏览器的兼容问题。
3.将复杂的代码简化,提供连缀编程模式,大大简化了代码的操作。
14.script 引入方式?
1.html静态引入<script>
2.js动态插入<script>
15.JS垃圾回收机制是怎样的?
1.概述
js的垃圾回收机制是为了防止内存泄漏(已经不需要的某一块内存还一直存在着),垃圾回收机制就是不停歇的寻找这些不再使用的变量,并且释放掉它所指向的内存。
在JS中,JS的执行环境会负责管理代码执行过程中使用的内存。
16. jQuery库中的$()函数的是什么?
$() 全局核心函数,可传4种参数
1.传函数,相当于$(document).ready() 入口函数
2.传选择器,获取节点放入jquery对象中
3.传dom对象 转化我jquery对象
4.传unll,undefined,'',jquery 容错机制
17.jQuery ready函数和JavaScript window.onload事件有何不同?
1.js的入口函数要等到所有资源加载完毕(包括图片,文件)加载完毕才执行
2.jquery的入口函数只会等待文档树加载完毕后就开始执行,不会等待图片,文件加载
执行时机不一样,jquery先执行,js后执行
18. Canvas和SVG的区别?
1.canvas是H5中新增的画布,是位图,用js创建画笔通过方法绘画,一般不使用css样式对宽高修改,因为将画布缩放,会使图片失真
2.svg是来源于XML中的,是矢量图,与canvas类似,是用标签和css样式进行绘画,本质上是文本,不会出现失真的问题
3.canvas的内容不能绑定事件,svg可以绑定
19. new关键字的四步
1.在构造函数中创建一个空对象
2.将this指向这个空对象
3.执行函数,给这个空对象添加属性和方法
4.返回这个对象
20. 本地存储的区别
1.浏览器本地存储:以字符串的行式存储,信息有同源规则,存储大小为4kb,不会因为关闭浏览器而清楚,除非手动清除浏览器缓存。
2.会话本地存储:也是以字符串的行式存储信息,也有同源规则,存储大小为4kb,当关闭浏览器时会清空数据,安全性更高