码迷,mamicode.com
首页 > Web开发 > 详细

web前端面试01

时间:2015-07-28 10:46:13      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

1--什么是DOM事件处理程序?
     首先要理解什么是DOM?Dom是针对HTML文档的一个API。什么是事件流?事件流分为:事件冒泡(IE的事件流)和事件捕获。事件冒泡就是由最具体的元素开始接收,然后逐级向上;事件捕获就是由不太具体的元素开始接收,逐级向下,最具体的元素最后才接收到事件。
DOM事件处理程序分为DOM0级、DOM2级。DOM0级具有简单,跨浏览器的优势,它是把函数赋值给一个事件的处理程序属性。例如:btn.onlick=function(){。。。};DOM2级事件定义了两个方法,用于处理指定和删除事件处理程序的操作。addEventListener()和removeEventListener()。它们都接收三个参数,要处理的事件名、作为事件处理程序的函数和布尔值。布尔值为true表示在捕获阶段调用事件处理程序,布尔值为false是在冒泡处调用。注意:事件名要去掉“on”。通过addEventListener()添加的事件,只能由removeEventListener()删除。IE存在兼容问题,可以用attachEvent()添加事件和detachEvent()删除事件。接收两个参数,事件处理程序的名称和函数。注意:事件名此时要加”on”。
2--如果给一个元素同时绑定两个事件,会怎么样?
    Dom 0级和Dom 2级都可以给一个元素添加多个事件,Dom 0级的每个事件只支持一个事件处理程序,如果绑定同一个事件,那么后边的那个事件,函数会覆盖掉前边的那个事件函数。Dom2级可以添加多个事件处理程序,他们会按照添加的顺序触发。
3--call、apply的区别?
首先,要明白什么call和apply存在的作用。call 和 apply 都是为了改变某个函数运行时的 上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。call和apply动态改变this,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。他们的区别仅在于,call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。
4--什么是闭包?(这玩意真的很重要!)
闭包拥有三个特性:1.函数嵌套函数;2.函数内部可以引用外部的参数和变量;3.参数和变量不会被垃圾回收机制回收。闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。使用闭包有一个优点,也是它的缺点,就是可以把局部变量驻留在内存中,可以避免使用全局变量。全局变量在每个模块都可调用,这势必将是灾难性的。(所以推荐使用私有的,封装的局部变量。)一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同!
更透彻的说法:所谓“闭包”,就是在构造函数体内定义另外的函数作为目标对象的方法函数,而这个对象的方法函数反过来引用外层函数体中的临时变量。这使得只要目标对象在生存期内始终能保持其方法,就能间接保持原构造函数体当时用到的临时变量值。尽管最开始的构造函数调用已经结束,临时变量的名称也都消失了,但在目标对象的方法内却始终能引用到该变量的值,而且该值只能通这种方法来访问。即使再次调用相同的构造函数,但只会生成新对象和方法,新的临时变量只是对应新的值,和上次那次调用的是各自独立的。
顺便在扯点立即执行函数和闭包的关系:立即执行函数能配合闭包保存状态。像普通的函数传参一样,立即执行函数也能传参数。如果在函数内部再定义一个函数,而里面的那个函数能引用外部的变量和参数(闭包),利用这一点,我们能使用立即执行函数锁住变量保存状态。
一轮面试基本上就是这些重点题,跟网上常见的面试题差不多。当时我在逛街,周围很嘈杂,勉强听清楚面试官的问题之后,磕磕绊绊的回答了,而且声音特别大,不知道那个面试官的耳朵有没有被吵聋。剩下的就是聊了下做过的项目,一些自己写的js特效,还有对HTML5 ,CSS3的掌握程度。大概一面持续了20分钟左右,感觉整个过程聊得很high。
没想到隔了一天,就接到了二轮面试的电话。因为这次我所处的环境很安静,所以整个面试过程”沉闷”。还是同样的时间,我接到了电话,这次面试题问的很基础,首先是问了我对哪方面感兴趣,我跟他说是软件开发,对硬件不了解。他又问一般用什么语言,我说基本上都是JavaScript,大一的时候学过c。于是他问我,c语言中,打开文件的函数,我说open(),正确的应该是fopen()。接着他问我说,怎么实现快速排序。我回答完了,接着又问操作系统的文件管理机制,我当时就傻了,我说我不是很清楚,于是他就说,那网络呢,我说这学校学了计算机网络的课,于是他说简单说一下http协议,我说是tcp/tp么?他说不是。好吧··我傻了,只是依稀记得三次握手。
1-http协议:
是一种通信协议,允许将HTML文档从web服务器传送到客户端的浏览器,它是一个应用层的协议,承载与TCP上,由请求和响应构成,是一个标准的客户端服务器模型。
2-get、post的区别
Get用于取数据,post用于传数据。区别:get在URL中传数据,容量小,安全性差,有缓存;post是在http content 容器里传数据,容量大,安全性好一点,无缓存。
3-什么是cookie?
Cookie就是页面用来保存信息的,它的特点有:同一个域名下共享同一套cookie;数量有限,一般50条左右,大小也有限(4-10k);而且有过期的时间,再生成的时候会被指定一个expires值,这就是他的生存周期。

版权声明:本文为博主原创文章,未经博主允许不得转载。

web前端面试01

标签:

原文地址:http://blog.csdn.net/anisweir/article/details/47101483

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!