上次因为时间有限只分享了一部分的前端面试题,因此本篇继续分享前端经典面试试题前端
栈的插入和删除操做都是在一端进行的,而队列的操做倒是在两端进行的。 队列先进先出,栈先进后出。 栈只容许在表尾一端进行插入和删除,而队列只容许在表尾一端进行插入,在表头一端进行删除。
a. http是HTTP协议运行在TCP之上。全部传输的内容都是明文,客户端和服务器端都没法验证对方的身份。 b. https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。全部传输的内容都通过加密,加密采用对 称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端能够验证服务器端的身 份,若是配置了客户端验证,服务器方也能够验证客户端的身份
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.有些状态不可能保存在客户端。例如,为了防止重复提交表单,咱们须要在服务器端保存一个 计数器。若是
共同点:对内联元素设置`float`和`absolute`属性,可让元素脱离文档流,而且能够设置其 宽高。 不一样点:float仍会占据位置,position会覆盖文档流中的其余元素。
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 要高
(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初始化每每会 出现浏览器之间的页面显示差别。 固然,初始化样式会对SEO有必定的影响,但鱼和熊掌不可兼得,但力求影响最小的状况下初始 化。
Object 是 JavaScript 中全部对象的父对象 数据封装类对象:Object、Array、Boolean、Number 和 String 其余对象:Function、Arguments、Math、Date、RegExp、Error
全局函数没法查看局部函数的内部细节,但局部函数能够查看其上层的函数细节,直至全局细 节。当须要从局部函数查找某一属性或方法时,若是当前做用域没有找到,就会上溯到上层做 用域查找,直至全局函数,这种组织形式就是做用域链。
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中关于同步的概念:不一样进程为协同完成某项工做而在前后次序上调 整(经过阻塞,唤醒等方式).同步强调的是顺序性.谁先谁后.异步则不存在这种顺序性. 同步:浏览器访问服务器请求,用户看获得页面刷新,从新发请求,等请求完,页面刷新,新内 容出现,用户看到新内容,进行下一步操做。 异步:浏览器访问服务器请求,用户正常操做,浏览器后端进行请求。等请求完,页面不刷新, 新内容也会出现,用户看到新内容。 (待完善)
absolute :生成绝对定位的元素, 相对于最近一级的 定位不是 static 的父元素来进行定位。 fixed (老IE不支持)生成绝对定位的元素,一般相对于浏览器窗口或 frame 进行定位。 relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。 static 默认值。没有定位,元素出如今正常的流中 sticky 生成粘性定位的元素,容器的位置根据正常文档流计算得出
1. 异步加载的方案: 动态插入 script 标签 2. 经过 ajax 去获取 js 代码,而后经过 eval 执行 3. script 标签上添加 defer 或者 async 属性 4. 建立并插入 iframe,让它异步执行 js 5. 延迟加载:有些 js 代码并非页面初始化的时候就马上须要的,而稍后的某些状况才须要的