前端面试题整理1-2018.7.3

前端开发面试题整理——摘自github

原作者:https://github.com/markyun/My-blog/tree/master/Front-end-Developer-Questions/Questions-and-Answers

HTML部分

  1. Doctype作用?标准模式与兼容模式各有什么区别?
    1)<!DOCTYPE>声明位于HTML文档中的第一行,处于<html>标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
    2)标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作
  2. HTML5 为什么只需要写 <!DOCTYPE HTML>?
    1)HTML5 不基于 SGML(标准通用标记语言),因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
    2)HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
  3. 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
    1)块级元素独占一行,可以设置宽和高。
    2)行内元素与其他元素同处一行,无法设置宽和高。a b span img input select strong。
    3)行内块元素不能独占一行,但是可以设置宽和高。img input。
    4)空元素指的是没有内容的HTML元素,他不可能有子节点,hr br input 。
  4. 页面导入样式时,使用link和@import有什么区别?
    1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS。
    2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载。
    3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题。
    4)link支持使用js控制DOM去改变样式,而@import不支持。
    5)@import 为CSS服务;link是为当前的页面服务
<link href="xx.css" rel="stylesheet" type="text/css">
@import url("http://www.taobao.com/home/css/global/v2.0.css?t=20070518.css");
<link>http://www.163.com/a.htm</link>


5. 介绍一下你对浏览器内核的理解?
1)主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。
2)渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
3)JS引擎则:解析和执行javascript来实现网页的动态效果。
4) 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

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



























内核名称 别名 浏览器
Trident MSHTML IE,MaxThon,TT,The World,360,搜狗浏览器
Gecko FF,MozillaSuite,SeaMonkey
Presto Opera7及以上(现在为Blink)
Webkit Safari,Chrome[Chrome的:Blink(WebKit的分支)]

7. html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
HTML5新特性:
1)语义化标签<header></header> <nav></nav>
2)多媒体标签<video></video> <audio></audio>
3)图像效果,用于绘画的 canvas 元素,svg元素
4)提供了sessionStorage、localStorage和indexedDB加强本地存储
5)提供了Geolocation API访问地理位置,window.navigator.geolocation实现访问
6)表单新的输入型控件,calendar、date、time、email、url、search

移除的元素:
1)纯表现的元素:basefont,big,center,font, s,strike,tt,u;
2) 对可用性产生负面影响的元素:frame,frameset,noframes;

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

如何区分HTML5:
DOCTYPE声明\新增的结构元素\功能元素

8. 简述一下你对HTML语义化的理解
用正确的标签做正确的事情。
1)html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析。
2)即使在没有样式CSS情况下也以一种文档格式显示,并且容易阅读。
3)搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO。
4)使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

9. HTML5的离线储存怎么使用,工作原理能不能解释一下?
原理:
HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

如何使用:
1、页面头部像下面一样加入一个manifest的属性;
2、在cache.manifest文件的编写离线存储的资源;
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html
3、在离线状态时,操作window.applicationCache进行需求实现。

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

猜你喜欢

转载自blog.csdn.net/qq_16403183/article/details/80896849