欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端面试题整理1-2018.7.3

程序员文章站 2022-06-09 09:40:13
...

前端开发面试题整理——摘自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)离线的情况下,浏览器就直接使用离线存储的资源。