前端面试题2

目录

1、一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。

2、简述一下src与href的区别。

3、有哪项方式可以对一个DOM设置它的CSS样式? 

4.、CSS都有哪些选择器?

5、 超链接访问过后hover样式就不出现的问题是什么?如何解决?

6、如何解决跨域问题?

7、简述同步和异步的区别

8、页面性能优化

1-1、尽量减少HTTP请求次数

1-2、延迟加载内容

1-3、使用离线缓存

1-4、CSS、JS放置正确位置

1-5、静态资源压缩

1-6、静态资源使用多个域名

1-7、静态资源使用cdn存储

1-8、预加载

1-9、DOM操作优化

1-10、优化算法


1、一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。

图片懒加载,在页面上的未可视区域可以添加一个滚动条事件,判断图片位置与浏览器顶端的距离与页面的距离,如果前者小于后者,优先加载。

如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先下载。

如果图片为css图片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技术。

如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验。

如果图片展示区域小于图片的真实大小,则因在服务器端根据业务需要先行进行图片压缩,图片压缩后大小与展示一致。

2、简述一下src与href的区别。

src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。

src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。

<script src =”js.js”></script>

当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,如果我们在文档中添加

<link href=”common.css” rel=”stylesheet”/>

那么浏览器会识别该文档为css文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用link方式来加载css,而不是使用@import方式。

3、有哪项方式可以对一个DOM设置它的CSS样式? 

外部样式表,引入一个外部css文件

内部样式表,将css代码放在 <head> 标签内部

内联样式,将css样式直接定义在 HTML 元素内部

4.、CSS都有哪些选择器?

派生选择器(用HTML标签申明)

id选择器(用DOM的ID申明)

类选择器(用一个样式类名申明)

属性选择器(用DOM的属性申明,属于CSS2,IE6不支持,不常用,不知道就算了)

除了前3种基本选择器,还有一些扩展选择器,包括

后代选择器(利用空格间隔,比如div .a{  })

群组选择器(利用逗号间隔,比如p,div,#a{  })

5、 超链接访问过后hover样式就不出现的问题是什么?如何解决?

被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序: L-V-H-A(link,visited,hover,active)

6、如何解决跨域问题?

理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域

出于安全考虑,服务器不允许ajax跨域获取数据,但是可以跨域获取文件内容,所以基于这一点,可以动态创建script标签,使用标签的src属性访问js文件的形式获取js脚本,并且这个js脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的数据,这就是解决跨域问题的主流解决方案

CORS规范化的跨域请求解决方案,安全可靠。优势:在服务端进行控制是否允许跨域,可自定义规则

支持各种请求方式缺点:会产生额外的请求我们这里会采用cors的跨域方案。

7、简述同步和异步的区别

同步代码指的是执行栈中的代码,页面运行时候,同步代码会优先运行,但下一个任务的执行必须等到上一个任务结束,处理耗时任务性能较差

异步代码指的是放在异步任务队列中的代码,一般在同步任务结束以后才会在满足条件的情况下拖入执行栈执行,处理耗时任务时候性能较好

8、页面性能优化

1-1、尽量减少HTTP请求次数

合并js

合并css

图片sprite

1-2、延迟加载内容

图片懒加载

数据懒加载(点击查看更多)

功能懒加载(曝光或者点击后加载html模块、js功能模块)

1-3、使用离线缓存

把常用的变动又少的js、css、图片存储到localstorage,第二次访问的时候直接走本地缓存。在移动端使用广泛。

1-4、CSS、JS放置正确位置

把css放在head中,保证页面看到的时候样式是对的。

把js放到body里最后位置,防止加载js阻塞页面。

1-5、静态资源压缩

图片、CSS、JS在发布前要压缩。

1-6、静态资源使用多个域名

对于图片、CSS、JS,可使用几个域名,可以并发加载。

1-7、静态资源使用cdn存储

用户与你网站服务器的接近程度会影响响应时间的长短。 可以把静态资源放到内容分发网络(Content Delivery Network,CDN)中加快访问速度。

1-8、预加载

在某个功能还没展现时,在空闲时间预先加载相关图片或者js代码

1-9、DOM操作优化

使用JavaScript访问DOM元素比较慢,因此为了获得更多的应该页面,应该做到:

缓存已经访问过的有关元素

线下更新完节点之后再将它们添加到文档树中

避免使用JavaScript来修改页面布局

1-10、优化算法

在js处理中优化查找、排序算法。尽量少使用嵌套循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值