[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
Web开发
> 详细
web前端面试01
时间:
2015-07-28 10:44:24
阅读:
293
评论:
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
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!