js面试经典题目

462246401

贡献于2017-05-22

字数:3103 关键词: 面试题目 CSS HTTP HTML Java

前端面试经典题目合集 1,请你谈谈Cookie的弊端 cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的。 IE 提供了一种存储可以持久化用户数据,叫做uerData,从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.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。 2, CSS中 link 和@import 的区别是? (1) link属于HTML标签,而@import是CSS提供的;  (2) 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载; (3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题;  (4) link方式的样式的权重 高于@import的权重. 3, position的absolute与fixed共同点与不同点 A:共同点: 1.改变行内元素的呈现方式,display被置为block; 2.让元素脱离普通流,不占据空间; 3.默认会覆盖到非定位元素上 B不同点: absolute的”根元素“是可以设置的,而fixed的”根元素“固定为浏览器窗口。 当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。   4, DOM操作——怎样添加、移除、移动、复制、创建和查找节点。 1. 创建新节点 createDocumentFragment() // 创建一个DOM片段 createElement() // 创建一个具体的元素 createTextNode() // 创建一个文本节点 2. 添加、移除、替换、插入 appendChild() removeChild() replaceChild() insertBefore() // 在已有的子节点前插入一个新的子节点 3. 查找 getElementsByTagName() // 通过标签名称 getElementsByName() // 通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的) getElementById() // 通过元素Id,唯一性 5, null和undefined的区别? null是一个表示"无"的对象,转为数值时为0 undefined是一个表示"无"的原始值,转为数值时为NaN 6, 对JSON 的了解? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。 {"age":"12", "name":"back"} 7 如何解决跨域问题? 1. jsonp(jsonp 的原理是动态插入 script 标签) 2. 服务器上设置 8 documen.write和 innerHTML 的区别 document.write 只能重绘整个页面 innerHTML 可以重绘页面的一部分 9, ajax 的过程是怎样的 1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象 2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息 3. 设置响应HTTP请求状态变化的函数 4. 发送HTTP请求 5. 获取异步调用返回的数据 6. 使用JavaScript和DOM实现局部刷新 10, .call() , .apply() 和bind() 的作用分别在什么情况下使用? Call()和apply()都是对象冒充(或借用构造函数), 可以实现继承, call()要传入的参数可以有2个以上,apply()传入的第二个参数是数组, Bind()可以绑定一个对象, 让函数中的this指向该对象 call()和apply()可以传入除this外的其他参数(可以有不止一个参数) 11 javascript里面的继承, ES5,和ES6的分别怎么实现? ES5中可以使用原型链继承, call(), apply()继承 ES6中可以使用class 中的extends 继承 12, ES6中的Array.from() 有什么作用, 如何转换类似数组的对象? Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map) Array.from()还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理. var obj = { "0":"张三", "1":"李四", "2":"王五", "length":3 } var arr = Array.from(obj); 13, 什么是 "use strict"; ? ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 14, js中的设计模式有哪些? 工厂模式 , 单例模式, 代理模式等 //工厂模式 : 参考课件 //单例模式 : 单个实例 只有一个对象(不管new多少次都只会返回同一个对象) function fn(){ if( !fn.instance ) { fn.instance = { name : "yt" }; } return fn.instance; } 15 GET和POST的区别,何时使用POST? GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 POST:一般用于修改服务器上的资源,对所发送的信息没有限制 GET方式需要使用 Request.QueryString 来取得变量的值 POST方式通过 Request.Form 来获取变量的值 也就是说 Get 是通过地址栏来传值,而 Post 是通过提交表单来传值。 在以下情况中,请使用 POST 请求: 1. 无法使用缓存文件(更新服务器上的文件或数据库) 2. 向服务器发送大量数据(POST 没有数据量限制) 3. 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠 16, JavaScript 原型,原型链 ? 有什么特点? 1. 原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链 2. 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链 17, 事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡? 1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为 2. 事件处理机制:IE是事件冒泡、firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件 3. ev.stopPropagation(); 注意旧ie的方法:ev.cancelBubble = true;

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档