前端开发面试知识点大纲:
HTML&CSS:
对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端适应
JavaScript:
数据类型、面向对象、继承、闭包、插件、作用域、跨域、原型链、模块化、自定义事件、内存泄漏、事件机制、异步装载回调、模板引擎、Nodejs、JSON、ajax等。
其他:
HTTP、安全、正则、优化、重构、响应式、移动端、团队协作、可维护、SEO、UED、架构、职业生涯
作为一名前端工程师,无论工作年头长短都应该必须掌握的知识点:
1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
2、DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。
3、事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别。
4、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。
5、严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。
6、盒模型 —— 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型
7、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们
8、浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
9、HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
10、JSON —— 作用、用途、设计结构。
本人总结出的题库:
一、选择题
1.下列标签可以不成对出现的是(B)
A.
B.
C.
D.
2.关于Document对象,下列叙述正确的是(AC )
A.Document对象表示浏览器中显示的HTML文档
B.Document对象的常用属性bgcolor用来设置文档的背景图片
C.Document对象的常用方法getElementById()用于访问唯一的一个元素
D.Document对象的常用方法getElementByNames()
3.下面哪一个是html5新增的类型()
A.
B.
C.
D.
解析:【HTML5 新的 Input 输入类型type 值有
email
url
number
range
Date pickers (date, month, week, time, datetime, datetime-local)
search
color
】
4.与html4比较,html5废弃了哪些元素?(ABD)
A. frame
B. applet
C. i
D.big
5.CSS样式表根据所在网页的位置,可分为(B)
A.行内样式表、内嵌样式表、混合样式表
B.行内样式表、内嵌样式表、外部样式表
C.外部样式表、内嵌样式表、导入样式表
D.外部样式表、混合样式表、导入样式表
【外部样式表分为两种:导入样式表和链接样式表】
6.在CSS中下面哪种方法表示超链接文字在鼠标经过时,超链接文字无下划线?( B )
A. A:link{TEXT-DECORATION: underline }
B. A:hover {TEXT-DECORATION: none}
C. A:active {TEXT-DECORATION: blink }
D. A:visited {TEXT-DECORATION: overline }
7 .下面代码片段,说法正确的是:(B )
.DIV1 { position:absolute;
line-height:22px;
height:58px;
background-color: #FF0000; }
A. Line-height:22px;修饰文本字体大小
B. position:absolute;表示绝对定位,被定位的元素位置固定
C. height:58px; 表示被修饰的元素距离别的元素的距离
D. background-color: #FF0000; 表示被修饰的元素的背景图像
8.用css设置div的左边为红色实现,下面设置正确的是(C)
A.style=”border-top: #ff0000 1 solid”
B.style=”border-left:1,#ff0000,solid”
C.style=”border-left:1 #ff0000 solid”
D.style=”border-right:1,#ff0000,solid”
9.在css的三种选择符中,哪个优先级最高?(C)
A.标签选择符
B.类选择符
C.ID选择符
Id>class>标签选择
10.在jQuery中,下面(D)写法是错误的.
A、$(“div p”)
B、$(“div.containner”)
C、$(“table a”,content)
D、$(#divID)
因为divID没有被”“包含, 于是变成了一个变量名,正确的写法是 $(“#divID”).
11.点击页面的按钮,使之打开一个新窗口,加载一个网页,以下javascrip代码中可行的是(A)
A.
B.
C.
D.
12.在javascript中,以下哪个变量名是非法的(B )
A.Name
B.9name
C.Name_a
D.Name9
13. 在javascript中,( B )变量在函数外声明,并可从脚本的任意位置访问
A.局部
B.全局
C.typeOf
D.New
14. 关于javascript说法正确的是(B )。
a)它是面向对象的
b)它是基于对象的
c)它是面向过程的
d)以上说法都不正确
15. 以下哪条语句会产生运行错误(A,D )
A、varobj = ()
B、varobj = []
C、varobj = {}
D、varobj = //
16.在javascript中,String 对象的方法不包括(D )。
A.charAt()
B.substring()
C.toUpperCase()
D.Length //这个是属性不是方法
17.下拉菜单中,用户更改表单元素Select中的值时,就会调用(A )事件处理程序。
a)onChange
b)onFocus
c)onMouseOver
d)onClick
18.目前支持HTML5和css3的主流浏览器有(BCDE)
A.ie8-10
B.chrome
C.firefox
D.360浏览器
E.Opera
答案:http://www.360doc.com/content/16/0315/11/16915_542344782.shtml
19.在Ajax技术中,关于HTTP 协议向服务器传送数据的方式描述正确的是(A)。
A、包括Post、Get方式
B、如果传输数据包含机密信息,建议采用MD5数据提交方式
C、GET执行效率和POST方法一样
D、Post传送的数据量较小,不能大于1B
20.有关会话跟踪技术描述正确的是(ABC)
A.Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端
B.关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期
C.在禁用Cookie时可以使用URL重写技术跟踪会话
D.隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示
【会话跟踪常用的4种方法:
URL重写:URL重写技术就是在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务端进行识别不同的用户。
隐藏表单域:将会话ID添加到HTML表单元素中提交到服务器,此表单不再客户端显示。
Cookie:Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。
session: 在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户 , Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效 】
二.简答题
1.简单介绍javascript的同源策略。
一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合。
所谓同源是指:域名,协议,端口相同。
在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。同源策略是客户端脚本(尤其是JavaScript)的重要安全度量标准。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。
其目的是防止某个文档或脚本从多个不同源装载。同源策略是一种安全协议。
具体表现在JS中:一段脚本自能读取来自同一来源的窗口的文档和属性。(iframe.contentDocument 等访问错误)
2.引入样式表的方式。
在HTML中引入CSS的方法主要有四种,它们分别是行内式、内嵌式、链接式和导入式。
1.行内式
行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。
<div style="color:red">div>
2.嵌入式
嵌入式是将CSS样式集中写在网页的标签对的
标签对中。格式如下:
缺点是对于一个包含很多网页的网站,在每个网页中使用嵌入式,进行修改样式时非常麻烦。单一网页可以考虑使用嵌入式。
3.导入式
将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,标记也是写在
标记中,使用的语法如下:
<style type="text/css">
@import"mystyle.css"; 此处要注意.css文件的路径
style>
导入式会在整个网页装载完后再装载CSS文件,因此这就导致了一个问题,如果网页比较大则会儿出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷。
4.链接式
也是将一个.css文件引入到HTML文件中,但它与导入式不同的是链接式使用HTML规则引入外部CSS文件,它在网页的标签对中使用
标记来引入外部样式表文件,使用语法如下:
"mystyle.css" rel="stylesheet" type="text/css"/>
使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会象导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。
总结:一般来说,做网站时把样式多写在多个样式表文件中,因此我们先用链接式引入一个总的CSS文件,然后在这个CSS文件中在使用导入式来引入其他的CSS文件。但如果通过JavaScrip来动态引入CSS文件则只能使用链接式。
3.闭包是什么,有什么特性,对页面有什么影响?
闭包就是能够读取其他函数内部变量的函数。
闭包的实质是一个函数,是一个用于返回局部变量值的函数,因为在全局中,受JavaScript链式作用域结构的影响,父级变量中无法访问到子级的变量值,为了解决这个问题,才使用闭包这个概念。
它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
由于闭包时,变量的值都保存到内存中,会导致页面加载时内存消耗很大,IE会导致内在泄露,因此尽量少用或用时要及时删除变量。
例子:
function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); }
num++;
return sayAlert;
}
var sayAlert = say667();
sayAlert()//执行结果应该弹出的667
执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,因为say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述。
http://blog.csdn.net/gaoshanwudi/article/details/7355794
http://www.cnblogs.com/dolphinX/archive/2012/09/29/2708763.html
4.ajax请求时,get和post方式的区别?怎么实现跨域请求?
Q1:
一个在url后面 一个放在请求体里面
有大小限制
安全问题
应用不同
GET:一般用于信息获取。
使用url传递参数
对所发送信息的数量也有限制,一般在2000个字符左右。
该方法发送的信息对任何人都是可见的。所有的变量名和值都显示在url中。也就是说get请求是用url来传递参数的。
GET请求是幂等的。get请求一次和请求一万次的效果是一样的。不会因为查询次数的多少而改变数据信息。
POST:一般用于修改服务器上的资源。
对所发送信息的数量无限制。
一般用来从表单进行发送数据。数据不再url中显示。所有的变量和值对别人不可见,而是嵌入到请求体中。
Q2:
处理跨域方法一:代理
通过同域名的web服务器端创建一个代理:
处理跨域方法二——JSONP
JSONP可用于解决主流浏览器的跨域数据get请求访问的问题。
jQuery中的ajax方法是支持jsonp的处理方式。
前端只需要修改dataType:”jsonp”
同时在其下一行添加jsonp:”callback”
5.请简单说明怎么样实现与后台交互?
6.什么是HTTP协议?
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
http://www.runoob.com/http/http-tutorial.html
JS是面向对象还是面向过程?
JS如何面向对象?
http://www.cnblogs.com/dolphinX/p/4385862.html
10.ajax请求时,如何解析json数据?json格式如何在js中解析?
在js中解析json有两种方式:eval和JSON.parse。 鉴于安全性考虑,使用parse更靠谱。
eval不仅解析了json字符串,还执行了json字符串中的js方法。eval不会判断json字符串是否合法,JSON.parse则会判断。所以使用eval方式是非常危险的,一般使用JSON.parse方式。
Angular 与react 有什么区别?
小红唇app
瀑布流布局怎么写?
banner 怎么写?
js 树 查找子节点
分辨率 h5 适配屏幕
如何在不同分辨率的屏幕上画出1px像素直线 320\240
http://blog.csdn.net/yisuowushinian/article/details/52744508
1 . Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
(1)、 声明位于文档中的最前面,处于 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。
(2)、严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。
(3)、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
(4)、DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。
http://www.web92.net/868.html
2 . HTML5 为什么只需要写 ?
3 . 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
(1)CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,比如div默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
(2)行内元素有:a b span img input select strong i
块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p ul form
(3)知名的空元素:
鲜为人知的是:
4 . 页面导入样式时,使用link和@import有什么区别?
(1)link属于XHTML标签,而@import是CSS提供的;
(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3)import只在IE5以上才能识别,CSS2.1以下浏览器不支持,而link是XHTML标签,无兼容问题;
(4)link方式的样式的权重 高于@import的权重.
(5) Link 支持使用javascript改变样式,后者不可
5 . 介绍一下你对浏览器内核的理解?常见的浏览器内核有哪些?
IE浏览器的内核Trident、Mozilla的Gecko、Chrome的Blink(WebKit的分支)、Opera内核原为Presto,现为Blink;
6 . 常见兼容性问题?
* png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.
* 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
* IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}
这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;
将其转化为行内属性。(_这个符号只有ie6会识别)
渐进识别的方式,从总体中逐渐排除局部。
首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
css
.bb{
background-color:#f1ee18;/*所有识别*/
.background-color:#00deff\9; /*IE6、7、8识别*/
+background-color:#a200ff;/*IE6、7识别*/
_background-color:#1e0bd1;/*IE6识别*/
}
6.写出几种IE6 BUG的解决方法
1.双边距BUG float引起的 使用display
2.3像素问题 使用float引起的 使用dislpay:inline -3px
3.超链接hover 点击后失效 使用正确的书写顺序 link visited hover
active
4.Ie z-index问题 给父级添加position:relative
5.Png 透明 使用js代码 改
6.Min-height 最小高度 !Important 解决’
7.select 在ie6下遮盖 使用iframe嵌套
8.为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用
over:hidden,zoom:0.08 line-height:1px)
7 . html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题? 如何区分 HTML 和 HTML5?
8 . 支持HTML5新标签:
--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"script>
--
9 . 简述一下你对HTML语义化的理解?如何区分: DOCTYPE声明\新增的结构元素\功能元素,语义化的理解?
用正确的标签做正确的事情。
1. html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;
2. 即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的; 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;
3. 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
(写)描述一段语义的html代码吧。
(HTML5中新增加的很多标签(如:
和等)就是基于语义化设计原则)
< div id="header">
< h1>标题< /h1>
< h2>专注Web前端技术< /h2>
< /div>
10 . HTML5的离线储存怎么使用,工作原理能不能解释一下?
localStorage 长期存储数据,浏览器关闭后数据不丢失;
sessionStorage 数据在浏览器关闭后自动删除。
11 . 浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
12 . 请描述一下 cookies,sessionStorage 和 localStorage 的区别?
cookie在浏览器和服务器间来回传递。
sessionStorage和localStorage不会。
sessionStorage和localStorage的存储空间更大;
sessionStorage和localStorage有更多丰富易用的接口;
sessionStorage和localStorage各自独立的存储空间;
13 . iframe有那些缺点?
*iframe会阻塞主页面的Onload事件;
*iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以可以绕开以上两个问题。
14 . Label的作用是什么?是怎么用的?(加 for 或 包裹)
15 . HTML5的form如何关闭自动完成功能?
16 . 如何实现浏览器内多个标签页之间的通信? (阿里)
调用localstorge、cookies等本地存储方式。
17 . webSocket如何兼容低浏览器?(阿里)
Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、 基于 multipart 编码发送 XHR 、 基于长轮询的 XHR
18 . 页面可见性(Page Visibility)API 可以有哪些用途?
19 . 如何在页面上实现一个圆形的可点击区域?
20 . 实现不使用 border 画出1px高的线,在不同浏览器的Quirksmode和CSSCompat模式下都能保持同一效果。
21 . 网页验证码是干嘛的,是为了解决什么安全问题?
22 . tite与h1的区别、b与strong的区别、i与em的区别?
CSS
1 . 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?
(1)有两种:IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 padding;
(2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border).
2 . CSS选择符有哪些?哪些属性可以继承?
3 . CSS优先级算法如何计算?
4 . CSS3新增伪类有那些?
p:first-of-type 选择属于其父元素的首个元素的每个
元素。
p:last-of-type 选择属于其父元素的最后元素的每个
元素。
p:only-of-type 选择属于其父元素唯一的 元素的每个
元素。
p:only-child 选择属于其父元素的唯一子元素的每个 元素。
p:nth-child(2) 选择属于其父元素的第二个子元素的每个 元素。
:enabled :disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中。
5 . 如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
Q1:
给div设置一个宽度,然后添加margin:0 auto属性
div{width:200px; margin:0 auto; }
Q2:
确定容器的宽高 宽500 高 300 的层
设置层的外边距
.div { Width:500px ; height:300px;//高度可以不设
margin-top:-150px
margin-left:-250px
position:absolute;//相对定位
left:50%;
top:50%;}
Q3:
.wrapper{position:relative;} //父元素
.content{ background-color:#6699FF; //子元素
width:200px;
height:200px;
position: absolute; //父元素需要相对定位
top: 50%;
left: 50%;
margin-top:-100px ; //二分之一的height,width
margin-left: -100px; }
6 . display有哪些值?说明他们的作用。
block 像块类型元素一样显示。
none 缺省值。像行内元素类型一样显示。
inline-block 像行内元素一样显示,但其内容像块类型元素一样显示。
list-item 像块类型元素一样显示,并添加样式列表标记。
7 . position的值relative和absolute定位原点是?
*absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
*fixed (老IE不支持)生成绝对定位的元素,相对于浏览器窗口进行定位。
*relative生成相对定位的元素,相对于其正常位置进行定位。
* static 默认值。没有定位,元素出现在正常的流中
*(忽略 top, bottom, left, right z-index 声明)
* inherit 规定从父元素继承 position 属性的值。
8 . CSS3有哪些新特性?
CSS3实现圆角(border-radius:8px),阴影(box-shadow:10px),对文字加特效(text-shadow),线性渐变(gradient),旋转(transform)
transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜
增加了更多的CSS选择器 多背景 rgba 等。动画animation
9 . 请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10 . 用纯CSS创建一个三角形的原理是什么?
.div{width: 0;
height: 0;
border-bottom: 100px solid red;
border-right: 100px solid transparent;}
我瞎写的代码 ,代码确实是个直角三角形。。。
11 . 一个满屏 品 字布局 如何设计?
13 . li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
14 . 经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
15 . 为什么要初始化CSS样式。
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
*最简单的初始化方法就是:* {padding: 0; margin: 0;}
(不建议)
淘宝的样式初始化:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
h1, h2, h3, h4, h5, h6{ font-size:100%; }
address, cite, dfn, em, var { font-style:normal; }
code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
small{ font-size:12px; }
ul, ol { list-style:none; }
a { text-decoration:none; }
a:hover { text-decoration:underline; }
sup { vertical-align:text-top; }
sub{ vertical-align:text-bottom; }
legend { color:#000; }
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; }
table { border-collapse:collapse; border-spacing:0; }
16 . absolute的containing block计算方式跟正常流有什么不同?
17 . CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
18 . position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
19 . 对BFC规范(块级格式化上下文:block formatting context)的理解?
W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关 系和相互作用。
20 . CSS权重优先级是如何计算的?
以下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,以下例子是演示各种定义的权重值:
/*权重为1*/
div{}
/*权重为10*/
.class1{}
/*权重为100*/
#id1{}
/*权重为100+1=101*/
#id1 div{}
/*权重为10+1=11*/
.class1 div{}
/*权重为10+10+1=21*/
.class1 .class2 div{}
如果权重相同,则最后定义的样式会起作用,但是应该避免这种情况出现。
21 . 请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?
Q1:
Q2:
Q3:
1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,增加无意义的标签)
2.使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)
3.是用afert伪元素清除浮动(用于非IE浏览器)
22 . 移动端的布局用过媒体查询吗?
23 . 使用 CSS 预处理器吗?喜欢那个?
SASS
24 . CSS优化、提高性能的方法有哪些?
25 . 浏览器是怎样解析CSS选择器的?
26 . 在网页中的应该使用奇数还是偶数的字体?为什么呢?
27 . margin和padding分别适合什么场景使用?
28 . 抽离样式模块怎么写,说出思路,有无实践经验?[阿里航旅的面试题]
29 . 元素竖向的百分比设定是相对于容器的高度吗?
30 . 全屏滚动的原理是什么?用到了CSS的那些属性?
31 . 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
32 . 视差滚动效果,如何给每页做不同的动画?(回到顶部,向下滑动要再次出现,和只出现一次分别怎么做?)
33 . ::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
34 . 如何修改chrome记住密码后自动填充表单的黄色背景 ?
35 . 你对line-height是如何理解的?
36 . 设置元素浮动后,该元素的display值是多少?(自动变成display:block)
37 . 怎么让Chrome支持小于12px 的文字?
38 . 让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing: antialiased;)
39 . font-style属性可以让它赋值为“oblique” oblique是什么意思?
40 . position:fixed;在android下无效怎么处理?
41 . 如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7ms
42 . display:inline-block 什么时候会显示间隙?(携程)
移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacing.
43 . overflow: scroll时不能平滑滚动的问题怎么处理?
44 . 有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度。
45 . png、jpg、gif 这些图片格式解释一下,分别什么时候用。有没有了解过webp?
46 . 什么是Cookie 隔离?(或者说:请求资源的时候不要让它带cookie怎么做)
47 . style标签写在body后与body前有什么区别?
JavaScript
1 . 介绍JavaScript的基本数据类型。
number,string,boolean,object,undefined
2 . 说说写JavaScript的基本规范?
3 . JavaScript原型,原型链 ? 有什么特点?
4 . JavaScript有几种类型的值?(堆:原始数据类型和 栈:引用数据类型),你能画一下他们的内存图吗?
5 . Javascript如何实现继承?
通过原型和构造器
6 . Javascript创建对象的几种方式?如何创建一个对象?
Q1:
Q2:创建一个对象:
function Person(name, age) {
this.name = name;
this.age = age;
this.sing = function() { alert(this.name) }
}
7 . Javascript作用链域?
8 . 谈谈This对象的理解。
this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是有一个总原则,那就是this指的是调用函数的那个对象。this一般情况下:是全局对象Global。 作为方法调用,那么this就是指这个对象
9 . eval是做什么的?
它的功能是把对应的字符串解析成JS代码并运行;应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
10 . 什么是window对象? 什么是document对象?
11 . null,undefined的区别?
12 . 写一个通用的事件侦听器函数(机试题)。
// event(事件)工具集,来源:github.com/markyun
markyun.Event = {
// 页面加载完成后
readyEvent : function(fn) {
if (fn==null) {
fn=document;
}
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = fn;
} else {
window.onload = function() {
oldonload();
fn();
};
}
},
// 视能力分别使用dom0||dom2||IE方式 来绑定事件
// 参数: 操作的元素,事件名称 ,事件处理程序
addEvent : function(element, type, handler) {
if (element.addEventListener) {
//事件类型、需要执行的函数、是否捕捉
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, function() {
handler.call(element);
});
} else {
element['on' + type] = handler;
}
},
// 移除事件
removeEvent : function(element, type, handler) {
if (element.removeEnentListener) {
element.removeEnentListener(type, handler, false);
} else if (element.datachEvent) {
element.detachEvent('on' + type, handler);
} else {
element['on' + type] = null;
}
},
// 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
stopPropagation : function(ev) {
if (ev.stopPropagation) {
ev.stopPropagation();
} else {
ev.cancelBubble = true;
}
},
// 取消事件的默认行为
preventDefault : function(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
// 获取事件目标
getTarget : function(event) {
return event.target || event.srcElement;
},
// 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
getEvent : function(e) {
var ev = e || window.event;
if (!ev) {
var c = this.getEvent.caller;
while (c) {
ev = c.arguments[0];
if (ev && Event == ev.constructor) {
break;
}
c = c.caller;
}
}
return ev;
}
};
13 . [“1”, “2”, “3”].map(parseInt) 答案是多少?
[1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix),其中 radix 表示解析时用的基数。map 传了 3 个 (element, index, array),对应的 radix 不合法导致解析失败。
14 . 关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡?
Q1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。
Q2. 事件处理机制:IE是事件冒泡、火狐是 事件捕获;
Q3. ev.stopPropagation();
16 . javascript 代码中的”use strict”;是什么意思 ? 使用它区别是什么?
17 . 如何判断一个对象是否属于某个类?
使用instanceof (待完善)
if(a instanceof Person){
alert('yes');
}
18 . new操作符具体干了什么呢?
1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到 this 引用的对象中。
3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
19 . 用原生JavaScript的实现过什么功能吗?
20 . Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
hasOwnProperty
21 . 对JSON的了解?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小
{'age':'12', 'name':'back'}
22 . [].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) })
能解释一下这段代码的意思吗?
23 . js延迟加载的方式有哪些?
defer和async、动态创建DOM方式(用得最多)、按需异步载入js
24 . Ajax 是什么? 如何创建一个Ajax?
25 . 同步和异步的区别?
26 . 如何解决跨域问题?
jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面
27 . 页面编码和被请求的资源编码如果不一致如何处理?
28 . 模块化开发怎么做?
var module1 = (function(){
var _count = 0;
var m1 = function(){
//...
};
var m2 = function(){
//...
};
return {
m1 : m1,
m2 : m2
};
})();
29 . AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
30 . requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何 缓存的?)
31 . 让你自己设计实现一个requireJS,你会怎么做?
32 . 谈一谈你对ECMAScript6的了解?
33 . ECMAScript6 怎么写class么,为什么会出现class这种东西?
34 . 异步加载的方式有哪些?
(1) defer,只支持IE
(2) async:
(3) 创建script,插入到DOM中,加载完毕后callBack
35 . documen.write和 innerHTML的区别?
document.write只能重绘整个页面
innerHTML可以重绘页面的一部分
36 . DOM操作——怎样添加、移除、移动、复制、创建和查找节点?
(1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
(2)添加、移除、替换、插入、复制
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //在已有的子节点前插入一个新的子节点
cloneNode() //复制
(3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值(IE容错能力
较强,会得到一个数组,其中包括id等于name值的)
getElementById() //通过元素Id,唯一性
37 . .call() 和 .apply() 的含义和区别?
call() 和 apply() 是预定义的函数方法。
两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。
call 方法是调用一个对象的一个方法,以另一个对象替换当前对象。
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。
后面的参数都是传递给当前对象的参数。
两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。
在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。
38 . 数组和对象有哪些原生方法,列举一下?
39 . JS 怎么实现一个类。怎么实例化这个类
40 . JavaScript中的作用域与变量声明提升?
41 . 如何编写高性能的Javascript?
43 . JQuery的源码看过吗?能不能简单概况一下它的实现原理?
44 . jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
45 . jquery中如何将数组转化为json字符串,然后再转化回来?
jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩展:
$.fn.stringifyArray = function(array) {
return JSON.stringify(array)
}
$.fn.parseArray = function(array) {
return JSON.parse(array)
}
然后调用:
$("").stringifyArray(array)
46 . jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
47 . jquery.extend 与 jquery.fn.extend的区别?
48 . jQuery 的队列是如何实现的?队列可以用在哪些地方?
49 . 谈一下Jquery中的bind(),live(),delegate(),on()的区别?
50 . JQuery一个对象可以同时绑定多个事件,这是如何实现的?
51 . 是否知道自定义事件。jQuery里的fire函数是什么意思,什么时候用?
52 . jQuery 是通过哪个方法和 Sizzle 选择器结合的?(jQuery.fn.find()进入Sizzle)
53 . 针对 jQuery性能的优化方法?
*基于Class的选择性的性能相对于Id选择器开销很大,因为需遍历所有DOM元素。
*频繁操作的DOM,先缓存起来再操作。用Jquery的链式调用更好。
比如:var str=$(“a”).attr(“href”);
*for (var i = size; i < arr.length; i++) {}
for 循环每一次循环都查找了数组 (arr) 的.length 属性,在开始循环的时候设置一个变量来存储这个数字,可以让循环跑得更快:
for (var i = size, length = arr.length; i < length; i++) {}
54 . Jquery与jQuery UI有啥区别?
*jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。
*jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。
提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等
55 . JQuery的源码看过吗?能不能简单说一下它的实现原理?
56 . jquery 中如何将数组转化为json字符串,然后再转化回来?
57 . jQuery和Zepto的区别?各自的使用场景?
58 . 针对 jQuery 的优化方法?
59 . Zepto的点透问题如何解决?
60 . jQueryUI如何自定义组件?
61 . 需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案?
63 . 移动端最小触控区域是多大?
64 . jQuery 的 slideUp动画 ,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
65 . 把 Script 标签 放在页面的最底部的body封闭之前 和封闭之后有什么区别?浏览器会如何解析它们?
移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有 300ms 延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
66 . 知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能讲出他们各自的优点和缺点么?
67 . Underscore 对哪些 JS 原生对象进行了扩展以及提供了哪些好用的函数方法?
68 . 解释JavaScript中的作用域与变量声明提升?
69 . 那些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
70 . JQuery一个对象可以同时绑定多个事件,这是如何实现的?
71 . Node.js的适用场景?
高并发、聊天、实时消息推送
72 . (如果会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
解释一下 Backbone 的 MVC 实现方式?
73 . 什么是“前端路由”?什么时候适合使用“前端路由”? “前端路由”有哪些优点和缺点?
74 . 知道什么是webkit么? 知道怎么用浏览器的各种工具来调试和debug代码么?
75 . 如何测试前端代码么? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
76 . 前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?
77 . 简述一下 Handlebars 的基本用法?
78 . 简述一下 Handlerbars 的对模板的基本处理流程, 如何编译的?如何缓存的?
79 . 用js实现千位分隔符?(来源:前端农民工,提示:正则+replace)
80 . 检测浏览器版本版本有哪些方式?
81 . 我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获?
82 . 如何判断当前脚本运行在浏览器还是node环境中?(阿里)
通过判断Global对象是否为window,如果不为window,当前脚本没有运行在浏览器中。
其他问题
1 . 原来公司工作流程是怎么样的,如何与其他人协作的?如何夸部门合作的?
2 . 你遇到过比较难的技术问题是?你是如何解决的?
3 . 设计模式 知道什么是singleton, factory, strategy, decrator么?
4 . 常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
5 . 页面重构怎么操作?
6 . 列举IE与其他浏览器不一样的特性?
7 . 99%的网站都需要被重构是那本书上写的?
8 . 什么叫优雅降级和渐进增强?
9 . 是否了解公钥加密和私钥加密。
10 . WEB应用从服务器主动推送Data到客户端有那些方式?
11 . 对Node的优点和缺点提出了自己的看法?
*(优点)因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求,因此构建在Node上的代理服务器相比其他技术实现(如Ruby)的服务器表现要好得多。
此外,与Node代理服务器交互的客户端代码是由javascript语言编写的,因此客户端和服务器端都用同一种语言编写,这是非常美妙的事情。
*(缺点)Node是一个相对新的开源项目,所以不太稳定,它总是一直在变,而且缺少足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子。
12 . 你有用过哪些前端性能优化的方法?
(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
(2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
(3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
(4) 当需要设置的样式很多时设置className而不是直接操作style。
(5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
(6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。
(7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。
(8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢。
13 . http状态码有那些?分别代表是什么意思?
100-199 用于指定客户端应相应的某些动作。
200-299 用于表示请求成功。
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
400-499 用于指出客户端的错误。
400 语义有误,当前请求无法被服务器理解。
401 当前请求需要用户验证
403 服务器已经理解请求,但是拒绝执行它。
500-599 用于支持服务器错误。
503 – 服务不可用
14 . 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)
查找浏览器缓存
DNS解析、查找该域名对应的IP地址、重定向(301)、发出第二个GET请求
进行HTTP协议会话
客户端发送报头(请求报头)
服务器回馈报头(响应报头)
html文档开始下载
文档树建立,根据标记请求所需指定MIME类型的文件
文件显示
[
浏览器这边做的工作大致分为以下几步:
加载:根据请求的URL进行域名解析,向服务器发起请求,接收文件(HTML、JS、CSS、图象等)。
解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,建议相应的内部数据结构(比如HTML的DOM树,JS的(对象)属性表,CSS的样式规则等等)
}
https://segmentfault.com/q/1010000000489803
http://www.cnblogs.com/yuezk/archive/2013/01/11/2855698.html
15 . 部分地区用户反应网站很卡,请问有哪些可能性的原因,以及解决方法?
16 . 从打开app到刷新出内容,整个过程中都发生了什么,如果感觉慢,怎么定位问题,怎么解决?
17 . 除了前端以外还了解什么其它技术么?你最最厉害的技能是什么?
18 . 你用的得心应手用的熟练地编辑器&开发环境是什么样子?
19 . 对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
20 . 你怎么看待Web App 、hybrid App、Native App?
21 . 你移动端前端开发的理解?(和 Web 前端开发的主要区别是什么?)
22 . 你对加班的看法?
23 . 平时如何管理你的项目?
先期团队必须确定好全局样式(globe.css),编码模式(utf-8) 等;
编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);
标注样式编写人,各模块都及时标注(标注关键样式调用的地方);
页面进行标注(例如 页面 模块 开始和结束);
CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);
JS 分文件夹存放 命名以该JS功能为准的英文翻译。
图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理
24 . 说说最近最流行的一些东西吧?常去哪些网站?
Node.js、Mongodb、npm、MVVM、MEAN、three.js
25 . 如何设计突发大规模并发架构?
26 . 说说最近最流行的一些东西吧?常去哪些网站?
27 . 是否了解开源的工具 bower、npm、yeoman、grunt、gulp,一个 npm 的包里的 package.json 具备的必要的字段都有哪些?(名称、版本号,依赖)
28 . 每个模块的代码结构都应该比较简单,且每个模块之间的关系也应该非常清晰,随着功能和迭代次数越来越多,你会如何去保持这个状态的?
29 . Git知道branch, diff, merge么?
30 . 如何设计突发大规模并发架构?
31 . 当团队人手不足,把功能代码写完已经需要加班的情况下,你会做前端代码的测试吗?
33 . 知道什么是SEO并且怎么优化么? 知道各种meta data的含义么?
34 . 移动端(Android IOS)怎么做好用户体验?
35 . 简单描述一下你做过的移动APP项目研发流程?
36 . 你在现在的团队处于什么样的角色,起到了什么明显的作用?
37 . 你认为怎样才是全端工程师(Full Stack developer)?
38 . 介绍一个你最得意的作品吧?
39 . 你有自己的技术博客吗,用了哪些技术?
40 . 对前端安全有什么看法?
41 . 是否了解Web注入攻击,说下原理,最常见的两种攻击(XSS 和 CSRF)了解到什么程度?
42 . 项目中遇到国哪些印象深刻的技术难题,具体是什么问题,怎么解决?。
43 . 最近在学什么东西?
44 . 你的优点是什么?缺点是什么?
45 . 如何管理前端团队?
46 . 最近在学什么?能谈谈你未来3,5年给自己的规划吗?
47 .移动端(Android IOS)怎么做好用户体验?
清晰的视觉纵线、信息的分组、极致的减法、
利用选择代替输入、标签及文字的排布方式、
依靠明文确认密码、合理的键盘利用
48.想问公司的问题?
目前关注哪些最新的Web前端技术(未来的发展方向)?
前端团队如何工作的(实现一个产品的流程)?
公司的薪资结构是什么样子的?
49.优质网站推荐
极客标签: http://www.gbtags.com/
码农周刊: http://weekly.manong.io/issues/
前端周刊: http://www.feweekly.com/issues
极客头条: http://geek.csdn.net/
Startup News:http://news.dbanotes.net/
Hacker News: https://news.ycombinator.com/news
InfoQ: http://www.infoq.com/
w3cplus: http://www.w3cplus.com/
Stack Overflow: http://stackoverflow.com/
Atp: http://atp-posts.b0.upaiyun.com/posts/
-END-