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

一. 什么是Ajax???

术语Ajax用来描述一组技术,它使浏览器能够为用户提供更为天然的浏览体验。
Ajax它是“Asynchronous JavaScript + XML的简写”

定义Ajax:javascript

Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:
    * 基于XHTML和CSS标准的表示;
    * 使用Document Object Model进行动态显示和交互;
    * 使用XMLHttpRequest与服务器进行异步通讯;
    * 使用JavaScript绑定一切。

二. 什么是JSON

JSON来自于javascript,可是应用上面远远不止是javascript的json,它至关于xml,是一种比较流行的标准格式,是数据的载体
javascript json 是用于javascript程序的,它能够支持对象引用以及函数;ajax json只是最简单的字符串和数字,它不可能彻底支持javascript里面的数据类型。
相对于XML,JSON更加易读、更便于肉眼检查。在语法的层面上,JSON与其余格式的区别是在于分隔数据的字符

三.浅谈一下如何避免用户屡次点击形成的屡次请求

咱们在访问有的网站,输入表单完成之后,单击提交按钮进行提交之后,提交按钮就会变为灰色,用户不能再单击第二次,直到从新加载页面或者跳转。这样,能够必定程度上防止用户重复提交致使应用程序上逻辑错误。
   还有不少其余的方式进行防止重复点击提交,如
1> 定义标志位:
 点击触发请求后,标志位为false量;请求(或者包括请求后具体的业务流程处理)后,标志位为true量。经过标志位来判断用户点击是否具有应有的响应。
2> 卸载及重载绑定事件:
   点击触发请求后,卸载点击事件;请求(或者包括请求后具体的业务流程处理)后,从新载入绑定事件。
3> 替换(移除)按钮DOM
   点击触发请求后,将按钮DOM对象替换掉(或者将之移除),天然而然此时不在具有点击事件;请求(或者包括请求后具体的业务流程处理)后,给新的按钮DOM定义点击事件。

更多讲解参考:http://www.cnblogs.com/jinguangguo/archive/2013/05/20/3086925.html

四.同步和异步的区别?

同步的概念应该是来自于操做系统中关于同步的概念:
不一样进程为协同完成某项工做而在前后次序上调整(经过阻塞,唤醒等方式)。同步强调的是顺序性,谁先谁后;异步则不存在这种顺序性。
//
同步:浏览器访问服务器请求,用户看获得页面刷新,从新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操做。
//
异步:浏览器访问服务器请求,用户正常操做,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

五.异步加载的方式有哪些?

(1)defer,只支持 IE
(2)async:
(3)建立 script,插入到 DOM 中,加载完毕后 callBack

六.27. CORS是什么?对于跨域请求,如何将附带凭证(HTTP Cookie及HTTP认证信息)的请求发送至服务器?(提示:后续真实工做中可能会用到)

跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题。不过如今,咱们能够考虑一下W3C中一项新的特性——CORS(Cross-Origin Resource Sharing)了。CORS是现代浏览器支持跨域资源请求的一种方式。    

解决方法:        
当你使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台(php或者其它接收数据方)进行一系列处理,若是肯定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin;浏览器判断该相应头中是否包含Origin的值,若是有则浏览器会处理响应,咱们就能够拿到响应数据,若是不包含浏览器直接驳回,这时咱们没法拿到响应数据。

更多参考地址:www.cnblogs.com/dojo-lzz/p/4265637.html
        http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

七. 一次完整的HTTP事务是怎样一个过程?

a.域名解析
b.发起TCP的三次握手
c.创建TCP链接后发起http请求
d.服务器端响应http请求,浏览器获得html码
e.浏览器解析html代码,并请求html代码中的资源
f.浏览器对页面进行渲染并呈现给客户

更多详细参考地址:http://www.360doc.com/content/14/0725/20/1073512_397054861.shtml

八. get与post两种方式的优缺点。

get:
    get是从服务器上获取数据,post是向服务器传送数据;
    get传送的数据量较小,不能大于2KB。post传送的数据量较大,通常被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB;
    get安全性很是低,post安全性较高。可是执行效率却比Post方法好;
    get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中能够看到;
    在作数据查询时,建议用Get方式;

post:
    post是经过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一块儿传送到ACTION属性所指的URL地址,用户看不到这个过程;
    因此:包含机密信息的话,建议用Post数据提交方式;而在作数据添加、修改或删除时,建议用Post方式。

九.对于request.status的http状态码 用于表示网页服务器HTTP响应状态的3位数字代码。1,2,3,4,5开头的状态码分别表明什么(提示:404页面表示禁止访问等)

1xx(临时响应)表示临时响应并须要请求者继续执行操做的状态代码。
2xx (成功)表示成功处理了请求的状态代码。
3xx (重定向) 表示要完成请求,须要进一步操做。 一般,这些状态代码用来重定向。
4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理。
5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误多是服务器自己的错误,而不是请求出错。

十.jQuery与jQuery UI有啥区别?

`jQuery`是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。
`jQuery UI`则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。提供了一些经常使用的界面元素,诸如对话框、拖动行为、改变大小行为等等

十一.$(document).ready与window.onload有何区别?

$(document).ready 对于支持DOMContentLoaded事件的浏览器,会使用该事件,全部的节点渲染完毕,就执行,能够调用屡次,不支持的就使用 onload事件
window.onload事件要等到全部的资源加载完毕,如图片,视频,js脚本等,只能绑定一次,后面绑定的覆盖前面所绑定的事件

十二.jQuery中,如何阻止事件冒泡和浏览器默认行为?

e.preventDefault();
e.stopPropagation();

十三. Node.js的适用场景?

高并发、聊天、实时消息推送、服务器作前端资源压缩

十四. 那些操做会形成内存泄漏?

内存泄漏是指任何对象在您再也不拥有或须要它以后任然存在。
垃圾回收器按期扫描对象,并计算引用了每一个对象的其余对象的数量,若是一个对象的引用数量为0(没有其余对象引用过该对象),或对该对象的唯一引用是循环的,那么该对象的内存便可回收。
//
setTimeout 的第一个参数使用字符串而非函数的话,会引起内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

十五.call() 和 .apply() 的区别?

call方法: 
    语法:call(thisObj,Object)
    定义:调用一个对象的一个方法,以另外一个对象替换当前对象。
    说明:
    call 方法能够用来代替另外一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
    若是没有提供 thisObj 参数,那么 Global 对象被用做 thisObj。 

apply方法: 
    语法:apply(thisObj,[argArray])
    定义:应用某一对象的一个方法,用另外一个对象替换当前对象。 
    说明: 
    若是 argArray 不是一个有效的数组或者不是 arguments 对象,那么将致使一个 TypeError。 
    若是没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用做 thisObj, 而且没法被传递任何参数。
相关文章
相关标签/搜索