为了账号安全,请及时绑定邮箱和手机立即绑定

web前端超全面试题整理

标签:
面试

一.html系列

Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

答案:<!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。<!DOCTYPE>声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签。严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码。如何区分:浏览器解析时到底使用严格模式还是混杂模式,与网页中的 DTD 直接相关。意义:严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响,如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。

HTML5 为什么只需要写 <!DOCTYPE HTML>?

答案:html5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照他们应该的方式来运行)而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

  • 行内元素:a、b、span、img、input、strong、select、label、em、button、textarea

  • 块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote

  • 空元素:即系没有内容的HTML元素,例如:br、meta、hr、link、input、img

页面导入样式时,使用link和@import有什么区别?

 

  1. 老祖宗的差别。link属于XHTML标签,而@import完全是CSS提供的一种方式。link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性等,@import就只能加载CSS了。  

  2. 加载顺序的差别。当一个页面被加载的时候(就是被浏览者浏览的时候),link引用的CSS会同时被加载,而@import引用的CSS 会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显(梦之都加载CSS 的方式就是使用@import,一边下载一边浏览梦之都网页时,就会出现上述问题)。   

  3. 兼容性的差别。由于@import是CSS2.1提出的所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。   

  4. 使用dom控制样式时的差别。当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。

 

介绍一下你对浏览器内核的理解?

答案:主要分成两个部分:渲染引擎(Render Engine)和JS引擎。

渲染引擎:负责取得网页的内容(html,xml和图像等),整理讯息(例如假如css),以及计算网页的显示方式,然后输出到显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不同。所有网页浏览器、电子邮件客户端以及它需要编辑、显示网络内容的应用程序都需要内核。

JS引擎:解析和执行JavaScript来实现网页的动态效果。

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向与只指渲染引擎。

常见的浏览器内核有哪些?

Trident内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称MSHTML]
Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto内核:Opera7及以上。 [Opera内核原为:Presto,现为:Blink;]
Webkit内核:Safari,Chrome等。 [ Chrome的:Blink(WebKit的分支)]

了解更多

 

html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

答案: 

 新特性

  1. HTML5 现在已经不是SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

  2. 绘画canvas 

  3. 于媒介回放的video 和audio 元素

  4. 本地离线存储localStorage 长期存储数据,浏览器关闭后数据不丢失;

  5. sessionStorage 的数据在浏览器关闭后自动删除

  6. 语意化更好的内容元素,比如article、footer、header、nav、section

  7. 表单控件,calendar、date、time、email、url、search 

  8. 新的技术webworker,websockt, Geolocation

移除的元素

  1. 纯表现的元素:basefont,big,center,font,s,strike,tt,u;

  2. 对可用性产生负面影响的元素:frame,frameset,noframes;

兼容

IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式:当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架

   <!--[if lt IE 9]>

   <script>class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>

   <![endif]--> 

简述一下你对HTML语义化的理解?

答案

  1. 为了在没有css代码时,也能呈现很好的内容结构,代码结构,以至于达到没有编程基础的非技术人员,也能看懂一二。(其实,就是为了不穿CSS外衣,裸奔依然好看)。

  2. 提高用户体验,比如:title,alt用于解释名词和图片信息。

  3. 利于SEO,语义化能和搜索引擎建立良好的联系,有利于爬虫抓取更多的有效信息。爬虫依赖于标签来确定上下文和各个关键字的权重。

  4. 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以语义的方式来渲染网页。

  5. 便于团队开发和维护,语义化更具可读性,如果遵循W3C标准的团队都遵循这个标准,可以减少差异化,利于规范化。

HTML5的离线储存怎么使用,工作原理能不能解释一下?

答案:HTML5引入了应用程序缓存,这意味着web应用可进行缓存,并可在没有网络时进行访问。

应用程序缓存为应用带来三个优势:

  • 离线浏览--用户可在离线时使用它们。

  • 速度--已经缓存的资源加载得更快。

  • 减少服务器负载--浏览器将只从服务器下载更改过的资源。

浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?

答案:在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
离线的情况下,浏览器就直接使用离线存储的资源。

请描述一下 cookies,sessionStorage 和 localStorage 的区别?

相同点:都存储在客户端

不同点:

1.存储大小
  • cookie数据大小不能超过4k。

  • sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

2.有效时间
  • localStorage    存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;

  • sessionStorage  数据在当前浏览器窗口关闭后自动删除。

  • cookie          设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

3. 数据与服务器之间的交互方式
  • cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端

  • sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

 

 

原理和环境

  如上面提到的HTML5的离线存储是基于一个新建的.appcache文件的,通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

二.css系列

三.js系列

js有哪些内置对象

  • String对象:字符串对象,提供了对字符串进行操作的属性和方法。

  • Array对象:数组对象,提供了数组操作方面的属性和方法。

  • Date对象:日期时间对象,可以获取系统的日期时间信息。

  • Boolean对象:布尔对象,一个布尔变量就是一个布尔对象。(没有可用的属性和方法)

  • Number对象:数值对象。一个数值变量就是一个数值对象。

  • Math对象:数学对象,提供了数学运算方面的属性和方法.

数组方法pop() push() unshift() shift()

  • delete 运算符:只能删除数组元素的值,而所占空间还在,总长度没变(arr.length)。

  • shift():删除数组中第一个元素,返回删除的那个值,并将长度减1。

  • pop():删除数组中最后一个元素,返回删除的那个值,并将长度减1。

  • unshift():往数组前面添加一个或多个数组元素,长度要改变。arrObj.unshift(“a” , “b” , “c”)

  • push():往数组结尾添加一个或多个数组元素,长度要改变。arrObj.push(“a” , “b” , “c”)

call()和apply()的区别

  • call()的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。

事件委托是什么

闭包是什么,有什么特性,对页面有什么影响

DOM操作——怎样添加、移除、移动、复制、创建和查找节点

谈谈你对this的理解

JS中的跨域问题

你有哪些性能优化的方法

判断字符串中出现次数最多的字符和出现次数

js中typeof用法详细介绍

原文出处:https://www.cnblogs.com/wlhappy92/p/ms.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
23
获赞与收藏
75

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消