Web前端经典面试试题(二)

上次因为时间有限只分享了一部分的前端面试题,因此本篇继续分享前端经典面试试题前端

一. 栈和队列的区别?

栈的插入和删除操做都是在一端进行的,而队列的操做倒是在两端进行的。
队列先进先出,栈先进后出。
栈只容许在表尾一端进行插入和删除,而队列只容许在表尾一端进行插入,在表头一端进行删除。

二. http 和 https 有何区别?如何灵活使用?

a. http是HTTP协议运行在TCP之上。全部传输的内容都是明文,客户端和服务器端都没法验证对方的身份。
b. https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。全部传输的内容都通过加密,加密采用对
   称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端能够验证服务器端的身
   份,若是配置了客户端验证,服务器方也能够验证客户端的身份

三. 请你谈谈Cookie的弊端

cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但仍是有不少局限性的。 第一:每一个特定的域名下最多生成20个cookie

1.IE6或更低版本最多20个cookie
2.IE7和以后的版本最后能够有50个cookie。
3.Firefox最多50个cookie
4.chrome和Safari没有作硬性限制
IE和Opera 会清理近期最少使用的cookie,Firefox会随机清理cookie。

cookie的最大大约为4096字节,为了兼容性,通常不能超过4095字节。

IE 提供了一种存储能够持久化用户数据,叫作userdata,从IE5.0就开始支持。每一个数据最多
128K,每一个域名下最多1M。这个持久化数据放在缓存中,若是缓存没有清理,那么会一直存在。

优势:极高的扩展性和可用性
1.经过良好的编程,控制保存在cookie中的session对象的大小。
2.经过加密和安全传输技术(SSL),减小cookie被破解的可能性。
3.只在cookie中存放不敏感数据,即便被盗也不会有重大损失。
4.控制cookie的生命期,使之不会永远有效。偷盗者极可能拿到一个过时的cookie。
缺点:
1.`Cookie`数量和长度的限制。每一个domain最多只能有20条cookie,每一个cookie长度不能超过
4KB,不然会被截掉。
2.安全性问题。若是cookie被人拦截了,那人就能够取得全部的session信息。即便加密也与事
无补,由于拦截者并不须要知道cookie的意义,他只要原样转发cookie就能够达到目的了。
3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,咱们须要在服务器端保存一个
计数器。若是

四. position:absolute和float属性的异同

共同点:对内联元素设置`float`和`absolute`属性,可让元素脱离文档流,而且能够设置其
宽高。
不一样点:float仍会占据位置,position会覆盖文档流中的其余元素。

五. CSS 选择符有哪些?哪些属性能够继承?优先级算法如何计算?

1.id选择器( # myid)
2.类选择器(.myclassname)
3.标签选择器(div, h1, p)
4.相邻选择器(h1 + p)
5.子选择器(ul > li)
6.后代选择器(li a)
7.通配符选择器( * )
8.属性选择器(a[rel = "external"])
9.伪类选择器(a: hover, li:nth-child)

可继承的样式: font-size font-family color, text-indent;
不可继承的样式:border padding margin width height ;
优先级就近原则,同权重状况下样式定义最近者为准;
载入样式以最后载入的定位为准;

优先级为:
!important >  id > class > tag  
important 比 内联优先级高,但内联比 id 要高

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

(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS,定义rel链接属性等做用;而
@import是CSS提供的,只能用于加载CSS;
(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;

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

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

八. 为何要初始化CSS样式。

由于浏览器的兼容问题,不一样浏览器对有些标签的默认值是不一样的,若是没对CSS初始化每每会
出现浏览器之间的页面显示差别。
固然,初始化样式会对SEO有必定的影响,但鱼和熊掌不可兼得,但力求影响最小的状况下初始
化。

九. js有哪些内置对象?

Object 是 JavaScript 中全部对象的父对象

数据封装类对象:Object、Array、Boolean、Number 和 String
其余对象:Function、Arguments、Math、Date、RegExp、Error

十. Javascript做用链域?

全局函数没法查看局部函数的内部细节,但局部函数能够查看其上层的函数细节,直至全局细
节。当须要从局部函数查找某一属性或方法时,若是当前做用域没有找到,就会上溯到上层做
用域查找,直至全局函数,这种组织形式就是做用域链。

十一. JSON 的了解?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小
如:{"age":"12", "name":"back"}

JSON字符串转换为JSON对象:
var obj =eval('('+ str +')');
var obj = str.parseJSON();
var obj = JSON.parse(str);

JSON对象转换为JSON字符串:
var last=obj.toJSONString();
var last=JSON.stringify(obj);

十二.同步和异步的区别?

同步的概念应该是来自于OS中关于同步的概念:不一样进程为协同完成某项工做而在前后次序上调
整(经过阻塞,唤醒等方式).同步强调的是顺序性.谁先谁后.异步则不存在这种顺序性.

同步:浏览器访问服务器请求,用户看获得页面刷新,从新发请求,等请求完,页面刷新,新内
容出现,用户看到新内容,进行下一步操做。

异步:浏览器访问服务器请求,用户正常操做,浏览器后端进行请求。等请求完,页面不刷新,
新内容也会出现,用户看到新内容。
(待完善)

十三.position的值, relative和absolute分别是相对于谁进行定位的?

absolute :生成绝对定位的元素, 相对于最近一级的 定位不是 static 的父元素来进行定位。
fixed (老IE不支持)生成绝对定位的元素,一般相对于浏览器窗口或 frame 进行定位。
relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。
static 默认值。没有定位,元素出如今正常的流中
sticky 生成粘性定位的元素,容器的位置根据正常文档流计算得出

十四. 异步加载和延迟加载

1. 异步加载的方案: 动态插入 script 标签
2. 经过 ajax 去获取 js 代码,而后经过 eval 执行
3. script 标签上添加 defer 或者 async 属性
4. 建立并插入 iframe,让它异步执行 js
5. 延迟加载:有些 js 代码并非页面初始化的时候就马上须要的,而稍后的某些状况才须要的
相关文章
相关标签/搜索