一次前端开发电话面试总结(3月7日添加更新)
3月7日增加更新,以下是QQ上简单面试问的问题:
-
你有github账号或者是个人博客么?面试官对我说,面试的时候,对有博客有github的人印象会比没有的好些。有这些东西,说明平时爱总结、爱学习。知乎上有个答案:为什么 2014 年程序员薪资那么高?
- 你对我们公司了解么?为什么想来我们公司工作?
- 你的职业规划是什么?
- 你做前端遇到过的最难的问题是什么?具体在实现什么功能或者效果上遇到了这个问题。如何解决的?简单得写个demo。
- 前端工作里你遇到过什么很有挑战性的事情么?
--------------------------分割线-------------------------------------------------------------------------------------------------
上午参加了一个前端开发技术的电话面试,整理一下问的问题。
HTML部分
- 如何理解HTML语义化?
- HTML5有哪些标签?标签作用和区别?
CSS部分
- display:none和visible:hidden的区别是什么?
- position有哪些值,有哪些作用?
JavaScript部分
- 你对闭包的理解是什么?平时开发中的应用?
- 你对事件委托机制的理解是什么?
- 你对回调函数的理解是什么?平时开发中的应用?
其他问题
- jQuery(),可以传入什么参数?
- 有什么网上可以看到的作品?
- 这个作品的这个功能是如何实现的?
- 这个作品开发用了多长时间?
面试之后,搜了一下答案:
display:none与visible:hidden的区别
display:none和visible:hidden都能把网页上某个元素隐藏起来,但两者有区别:
display:none ---不为被隐藏的对象保留其物理空间,即该对象在页面上彻底消失,通俗来说就是看不见也摸不到。
visible:hidden--- 使对象在网页上不可见,但该对象在网页上所占的空间没有改变,通俗来说就是看不见但摸得到。
position有哪些属性:
可能的值 | 描述 |
absolute | 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 |
fixed | 生成绝对定位的元素,相对于浏览器窗口进行定位。 |
relative | 生成相对定位的元素,相对于其正常位置进行定位。 |
static | 没有定位,元素出现在正常的流中 |
inherit | 规定应该从父元素继承 position 属性的值 |
闭包的简单理解
关于闭包,最简单的描述就是 ECMAScript 允许使用内部函数--即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外部函数返回时的值,但也会受到内部函数的影响。
事件委托的理解
- 解释一下事件冒泡机制
- 使用事件委托技术能让你避免对特定的每个节点添加事件监听器;相反,事件监听器是被添加到它们的父元素上。事件监听器会分析从子元素冒泡上来的事件,找到是哪个子元素的事件。
回调函数的理解
在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
-
回调什么时候执行 回调函数,一般在同步情境下是最后执行的,而在异步情境下有可能不执行,因为事件没有被触发或者条件不满足。
-
回调函数的使用场合
-
资源加载:动态加载js文件后执行回调,加载iframe后执行回调,ajax操作回调,图片加载完成执行回调,AJAX等等。
-
DOM事件及Node.js事件基于回调机制(Node.js回调可能会出现多层回调嵌套的问题)。
-
setTimeout的延迟时间为0,这个hack经常被用到,settimeout调用的函数其实就是一个callback的体现
-
链式调用:链式调用的时候,在赋值器(setter)方法中(或者本身没有返回值的方法中)很容易实现链式调用,而取值器(getter)相对来说不好实现链式调用,因为你需要取值器返回你需要的数据而不是this指针,如果要实现链式方法,可以用回调函数来实现
-
setTimeout、setInterval的函数调用得到其返回值。由于两个函数都是异步的,即:他们的调用时序和程序的主流程是相对独立的,所以没有办法在主体里面等待它们的返回值,它们被打开的时候程序也不会停下来等待,否则也就失去了setTimeout及setInterval的意义了,所以用return已经没有意义,只能使用callback。callback的意义在于将timer执行的结果通知给代理函数进行及时处理。
-