Front-End
前端开发工程师面试宝典! (本文部分有转载,不定期更新!)
前言(README.md)
本仓库是我整理的前端常见面试题,大部分由我整理,其中个别部分参考网上其他资料,感谢!
本资料仅供大家学习参考使用!欢迎大家Star和提交issues。
NO.1 README
NO.2 简历经验分享
NO.3 angular常见问题
NO.4 前端面试宝典第一版
NO.5 前端笔记版本第二版
NO.6 前端笔记版本第三版
NO.7 前端笔记版本第四版
NO.8 vue常见问题
欢迎大家一起交流提高
HTML
-
HTML5 ,以及与html的差别
1. 语义化标签
2. 支持视频和音频
3. Doctype类型-简单,它能在每一个浏览器中正常工作即使是名声狼藉的IE6。
4. 离线存储 - localStorage和sessionStorage
5. 互动效果
a. canvas
b. 更多API支持更好的用户体验- 拖拽、地图、利用Native
6. 丰富的表单控件 如 calendar、date、time、email、url、search
7. 移动端-摆脱对平台依赖 -
doctype(文档类型) 的作用是什么
现代浏览器包括不同的呈现模式,目的是既支持遵循标准的网页,也支持为老式浏览器而设计的网页。其中, Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而 Quirks (包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。另外,注意Mozilla/Netscape 6新增了一种 Almost Standards (近似标准)模式,用于支持为标准的某个老版本而设计的网页。 doctype声明指出阅读程序应该用什么规则集来解释文档中的标记。在Web文档的情况下,“阅读程序”通常是浏览器或者校验器这样的一个程序,“规则”则是W3C所发布的一个文档类型定义(DTD)中包含的规则。
-
localStorage和sessionStorage
localStorage有效期为永久,sessionStorage有效期为顶层窗口关闭前同源文档可以读取并修改localStorage数据,sessionStorage只允许同一个窗口下的文档访问,如通过iframe引入的同源文档。 Storage对象通常被当做普通javascript对象使用:通过设置属性来存取字符串值,也可以通过setItem(key, value)设置,getItem(key)读取,removeItem(key)删除,clear()删除所有数据,length表示已存储的数据项数目,key(index)返回对应索引的key
-
应用程序存储和离线web应用
HTML5新增应用程序缓存,允许web应用将应用程序自身保存到用户浏览器中,用户离线状态也能访问。 1.为html元素设置manifest属性:,其中后缀名只是一个约定,真正识别方式是通过text/cache-manifest作为MIME类型。所以需要配置服务器保证设置正确 2.manifest文件首行为CACHE MANIFEST,其余就是要缓存的URL列表,每个一行,相对路径都相对于manifest文件的url。注释以#开头 3.url分为三种类型:CACHE:为默认类型。NETWORK:表示资源从不缓存。 FALLBACK:每行包含两个url,第二个URL是指需要加载和存储在缓存中的资源, 第一个URL是一个前缀。任何匹配该前缀的URL都不会缓存,如果从网络中载入这样的URL失败的话,就会用第二个URL指定的缓存资源来替代。以下是一个文件例子: -
简述一下你对HTML语义化的理解
用正确的标签做正确的事情。 html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析; 及时在没有样式CCS情况下也以一种文档格式显示,并且是容易阅读的; 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO; 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
CSS
-
盒子模型
标准盒子模型:盒子模型范围包括了marginorderpaddingcontent.但content(width)不包括其他部分。IE的盒子模型的content(width)包括了border和padding 目前css3中属性box-sizing可以解决IE7以上的问题。 重新定义盒子大小,解决盒模型在不同的浏览器中表现不一致的问题。 box-sizing: content-box | border-box; content-box : 定义的width和height就直接是内容的宽度 border-box: 内容的宽度是 width -边框的宽度-padding
-
CSS定位
-
定位机制
CSS 有三种基本的定位机制:普通流、浮动和绝对定位。 普通流:元素的位置由它在HTML中的位置决定的。 块级框:从上到下,一个接一个,垂直距离由框的垂直空白边决定的 行内框:水平布置。可使用水平填充,边框可调节水平间距。
-
position属性
- 相对定位的盒子仍在标准流中,相对于它原本的位置,通过偏移(left、right)指定的距离,到达新的位置。它对父块没有任何影响。
- 使用绝对定位的盒子以它的“最近”的一个“已经定位”的“祖先元素”为基准进行偏移。如果没有已经定位的祖先元素,那么会以浏览器窗口为基准进行定位。
-
-
元素选择器,优先级及匹配原理
css匹配原理
从最右边的选择符开始向左进行匹配规则。只要当前选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和规则匹配的元素,或者因为不匹配而退出。所以在使用less的时候要防止层叠过多。
css权重 通配选择符的权值 0,0,0,0 标签的权值为 0,0,0,1 类的权值为 0,0,1,0 属性选择的权值为 0,0,1,1(0,0,1,0) 伪类选择的权值为 0,0,1,0 伪对象选择的权值为 0,0,0,1 ID的权值为 0,1,0,0 important的权值为最高 1,0,0,0 使用的规则也很简单,就是 选择器的权值加到一起,大的优先;如果权值相同,后定义的优先 从上面我们可以得出两个关键的因素: 1.权值的大小跟选择器的类型和数量有关 2.样式的优先级跟样式的定义顺序有关 总结:比较同一级别的个数,数量多的优先级高,如果相同即比较下一级别的个数 ,至于各级别的优先级,大家应该已经很清楚了,就是: !important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符 通配符 > 继承 ID选择器的效率是最高,而伪类选择器的效率则是最低
-
Css水平居中
基础布局对以后的开发很有作用。1. 自动空白边居中 缺点:IE5/6不支持,需要hack,并需要对两个元素添加样式 <body> <div id="wrapper"> </div></body> body{ text-align: center; /*text-align:center让IE中的元素居中*/ min- 760px; } .wrapper{ margin: 0 auto; 720px; text-align: left; /* 防止继承父类 */ } 2. 使用定位和负值空白边 .wrapper{ position: relative; 720px; left: 50%; margin-left: -360px; //对应的垂直居中也好处理了 top: 50%; } 3. 神奇的弹性盒子 flex IE10+,Android2.1+ ,IOS safire3.2(添加-webkit-)兼容,所以目前移动端可以大量使用。 body{ display: flex; justify-content: center; //水平居中 //垂直居中 align-items: center; //当然需要设置容器的高度值 }
-
BFC
BFC(box , formatting context),块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个 BFC 中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的 margin 会发生折叠。它决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用。 BFC布局规则 1.内部的Box会在垂直方向,一个接一个地放置。 2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠 3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。 4.BFC的区域不会与float box重叠。(所以有左边宽度自适应) 5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。 6.计算BFC的高度时,浮动元素也参与计算 <b>哪些元素会触发BFC</b> 根元素 float属性不为none position为absolute或fixed display为 inline-block, table-cell, table-caption, flex, inline-flex overflow不为visible <b>IE如何解决?Layout </b> position:absolute; float: left|right; display: inline-block; value; height: value; zoom:value(非normal); //通常zoom:1; 具有以上优点,BFC实际中的作用 自适应布局、清除浮动、防止margin重叠。
-
布局问题
响应式布局原理
检测设备,根据不同的设备采用不同的css,而且css都是采用的百分比的,而不是固定的宽度。
因为大屏幕的移动设备越来越普及。而自适应布局已经无法胜任各种浏览需求。响应式设计的目的是尽可能以最好的布局显示您的数据,以实现用户友好的 Web 页面。
现在CSS3有了个更为实用的 media query。而移动终端的浏览器(都是基于webkit内核的浏览器)基本已经完全支持了css3.他可以为你获取各种终端的数据。
栅栏系统(响应式)
响应式图片
浏览器获取用户终端的屏幕尺寸、分辨率逻辑处理后输出适应的图片,如屏幕分辨率320*480,那么我们匹配给它的是宽度应小于320px的图片。如果终端屏幕的DPI(device pixels)DPI详解值很高,也就是高清屏,那么我们就得输出2倍分辨率的图形(宽:640px);以保证在高清屏下图形的清晰度。各种移动终端的屏幕参数可通过 http://screensiz.es/phone查询。
解决方案:响应式图形的草案:新定义标签 -
CSS3新特性
选择器,文本、多列布局、渐变效果、css盒子、边框、背景、动画、转换
-
CSSHack
1.什么是CSS hack
由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!2.方式 1).一般是针对IE浏览器处理 只在IE下生效 <!--[if IE]> 这段文字只在IE浏览器显示 <![endif]--> 只在IE6下生效 <!--[if IE 6]> 这段文字只在IE6浏览器显示 <![endif]--> 只在IE6以上版本生效 <!--[if gte IE 6]> 这段文字只在IE6以上(包括)版本IE浏览器显示 <![endif]--> 只在IE8上不生效 <!--[if ! IE 8]> 这段文字在非IE8浏览器显示 <![endif]--> 非IE浏览器生效 <!--[if !IE]> 这段文字只在非IE浏览器显示 <![endif]-->
2).类内属性前缀法
hack | 写法 |
---|---|
* | *color |
+ | +color |
- | -color |
_ | _color |
# | #color |