前端面试题汇总(一)(持续更新ing)

本文探讨了HTML和CSS的Doctype声明、div+css布局的优势、多域名资源存储策略,以及cookies、sessionStorage和localStorage的区别。深入讲解了前端的DOM操作、选择器优先级、display和visibility的区别,以及BFC概念。同时,介绍了JavaScript的split()和join()、事件绑定、闭包、内存泄露等内容,涵盖了前端开发和基础JS核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:HTML&&CSS

1.Doctype:此标签可告知浏览器文档使用哪种HTML或XHTML规范(告诉浏览器按何种规范解析页面)

2.div+css的布局较table布局有何优势

(1)改版的时候更方便,只需要改css文件

(2)页面加载速度更快,结构化清晰,页面显示简洁

(3)表现与结构相分离

(4)易于优化(seo)搜索引擎更友好,排名更容易靠前

3.为什么利用多个域名来存储网站资源会更有效

(1)CDN缓存更方便

(2)突破浏览器并发限制

(3)节约cookie带宽

(4)节约主域名的连接数,优化页面响应速度

(5)防止不必要的安全问题

4.cookies,sessionStorage,localStorage的区别

cookies,sessionStorage,localStorage的区别

5.网页制作会用到的图片格式

png-8,png-24,jpeg,gif,svg,Webp(新鲜事物)

6.有哪些方式可以对一个DOM设置它的CSS样式

(1)内联样式,将css样式直接定义在html元素内部

(2)内联样式表,将css样式放在head标签内部

(3)外联样式表,引入一个外部css文件

7.选择器优先级基本原则

一般而言,选择器越特殊,它的优先级越高;也就是选择器的指向越精确,它的优先级就越高。

内联>id>类>标签

8.display:none和visibility:hidden的区别

display:隐藏对应的元素但不挤占该元素原来的空间

visibility:隐藏对应的元素并且挤占该元素原来的空间

9.BFC:

浏览器中创建了一个独立的渲染区域,该区域内所有元素的布局不会影响到区域外元素的布局,这个渲染区域只对块级元素起作用。

10.HTTP协议中,get和post有什么区别,分别适用于什么场景?

get传送的数据长度有限制,post没有

get通过URL传递,在浏览器地址栏可见,post是在报文中传递

适用场景:

post一般用于表单提交

get一般用于简单的数据查询

11.css中的content属性

content属性专门应用在before/after伪元素上,用来插入生成内容。

最常见的应用是利用伪类消除浮动

二:JS

1.split():切割成数组的形式

join():将数组转换成字符串

2.数组方法

push:尾部添加  pop:尾部删除

unshift:头部添加  shift:头部删除

reverse:颠倒数组中元素的位置,并返回该数组的引用

3.call和apply的作用与区别

call和apply的作用与区别

4.事件绑定与普通事件有什么区别

传统事件绑定和符合W3C标准的事件绑定有什么区别:

div.onclick=function(){}

(1)如果说给同一个元素绑定了两次或多次相同类型的事件,那么后面绑定的会覆盖前面绑定的

(2)不支持DOM事件流 事件捕获阶段=>目标元素阶段=>事件冒泡阶段

addEventListener

(1)如果说给同一个元素绑定了两次或多次相同类型的事件,所有的绑定将会依次触发

(2)支持DOM事件流

(3)进行事件绑定传参不需要前缀on

事件绑定:把事件注册到具体的元素上

普通事件:可以用来注册的事件

5.闭包:能够读取其他函数内部变量的函数

闭包的缺点:滥用闭包会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都永远不会被释放,所以应该在必要的时候释放这个闭包函数

6.本地对象,内置对象和宿主对象

本地对象:array,obj等可以new实例化

内置对象:math等不可以被实例化

宿主:浏览器自带的window,document等

7.document.write和innerHTML的区别

document.write:只能重绘整个页面

innerHTML:可以重绘页面得一部分

8.哪些操作会造成内存泄露

内存泄漏:指任何对象在你不在需要或拥有之后依然存在

(1)setTimeout的第一个参数使用字符串而非函数时,会引发内存泄漏

(2)闭包

(3)控制台日志

(4)循环(在两个对象彼此引用且彼此保留时就会产生一个循环)

9.BOM有哪些对象

(1)window:JS的最顶层对象,其他的BOM对象都是window的属性

(2)document:文档对象

(3)location:浏览器当前URL信息

(4)history:浏览器访问历史信息

(5)screen:客户端屏幕信息

(6)navigator:浏览器本身信息 

10.数组常用方法

方法描述
concat()连接两个或更多的数组,并返回结果
join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔
pop()删除并返回数组的最后一个元素
push()向数组的末尾添加一个或更多元素,并返回新的长度
reverse()颠倒数组中元素的顺序
shift()删除并返回数组的第一个元素
slice()从某个已有的数组返回选定的元素
sort()对数组的元素进行排序
toSource()返回该对象的源代码
toString()把数组转换为字符串,并返回结果
toLocaleString()把数组转换为本地数组,并返回结果
unshift()向数组的开头添加一个或更多元素,并返回新的长度
valueOf()

返回数组对象的原始值

splice()删除元素,并向数组添加新元素

11.this:

在JS中,this通常指向的是我们正在执行的函数本身或者指向该函数所指的对象

全局的this:window

对象的this:指向其本身

事件的this:指向事件对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值