作者TonyQ (自立而後立人)
看板Ajax
标题Re: [讨论] 面试时碰到的一些 Javascript考题
时间Fri Jun 14 16:32:37 2013
※ 引述《WJames (星晨)》之铭言:
: ※ [本文转录自 Web_Design 看板 #1Hk5i6oO ]
: 作者: WJames (星晨) 看板: Web_Design
: 标题: [讨论] Javascript 一些问题
: 时间: Wed Jun 12 19:26:59 2013
: 这不是作业,也不是 take home exam。
: 这是小弟在应徵工作时碰到的 JS考题。
: 免试早已经结束,只是当时有用手机将考题拍下来。
: 想说有机会可以上来跟强者讨论讨论,很想知道正确解答,
: 跟我的作答差距多少,由於公司也没告诉我正确答案(笔试),试卷他们收走
: 我也不好意思问,就post在版上,让各位前辈强者有兴趣的话回答一下罗。
: 也算是分享应徵考试的经验给大家。
: 1. which is equl to the condition
: if( ua !== 'IE 6'&& ua != 'IE 7')
^^
: A) if( ua === 'IE 6' || ua === 'IE 7')
: B) if( ua === 'IE 6' && ua === 'IE 7')
: C) if( !( ua === 'IE 6'|| ua === 'IE 7') )
: D) if( !( ua === 'IE 6'&& ua === 'IE 7') )
确定 != 没有少打一个等号吗?
如果没有的话,严格来说这题没答案。
假设有的话, C 是答案。简单的集合测验而已。
这题非常基本,没拿到分数请自我检讨
: 2. Which is false ?
: A) 1 == '1'
: B) NaN == NaN
: C) 1 == [1]+[]
: D) undefind === undefined
B,不过考这题没啥营养,纯粹就是考知不知道 NaN == NaN 这个特例。
: 3. Which is true ?
: A) 1=== true
: B) Number('1px')
: C) typrof [1,2,3] == 'array'
^^^^^^ 应该是 typeof
: D) '0'
这题 A 是 false
B 是 NaN
C 是 typeof [1,2,3] 是 object (in all browser and nodejs)
D 是 string
严格来说是无解
: 4. What is b :
: var a = [ 1, 2, 3 ];
: var b = a;
: a.push(5);
: console.log(b)
[1,2,3,5] ,因为 call by pointer
这题非常基本,没拿到分数请自我检讨
: 5. Please answer below two "this"?
: $('#foo').on('click', function(e){
: console.log( this ); //What is this ?
: setTimeout( function(){
: console.log( this ); //What is this ?
: }, 1000}
^ typo
: })
假设是 jQuery 的前提下
第一个 this 是 #foo ,因为 jQuery 是这样设计的。
第二个 this 是 global (在 browser 环境下是 window )
这题非常基本,没拿到分数请自我检讨
: 6. How can get the 'hello':
: var obj = { 1: 'hello', 2: 'world'}
: A) obj.1
: B) obj[0]
: C) obj[1]
: D) obj.2
C, obj.1 不能用是因为不能用数字开头
像你不能 var 1abc = 5 是一样的。
这题非常基本,没拿到分数请自我检讨
: 7.Please answer all below typeof:
: typeof function(){}
: typeof new Date()
: typeof {}
: typeof new Array()
function
object
object
object
这题非常基本,没拿到分数请自我检讨
: 8.What do you think foo() is ?
: if(1) function foo(){ return 'a'}
: else function foo(){ return 'b'}
: console.log( foo() )
这题考得是 function scope ,这题就蛮有深度了。
答案是不管 if else 写杀小,
function 都会定义,所以一定是 'b'。
这题是很不错得题目,能答对这题的一定都对 JS 很有 sense。
跟这题对称的题目是
var foo ;
if(1) {
foo = function(){ return 'a'}
}
else {
foo = function(){ return 'b'}
}
console.log( foo() )
这时答案就会是 a
因为 function <functionName> (){} 这种 pattern 会额外的开外挂,
所以一般我会建议大家写後面这种。
: 9.What is the console.log output?
: function foo(){
: return this;
: }
: console.log( foo.call( foo ) )
function foo
call 会 change context (this)
: 10.Please explain what is the difference between "setTimeout()" and
: "setInterval()" ?
setTimeout(fn,duration) 是一次性的
setInterval(fn,duration) 是每隔 duration 会触发的
这题非常基本,没拿到分数请自我检讨
: 11.Please explain what the use of "preventDefault()" and ""stopPropagation()"
: in Event Object ?
假设页面是这样
<div id="p">
<a href="" id="a" target="_blank">link</a>
</div>
就以 a.onclick 来说明好了,点了一个超连结,
正常状况下超连结会进行并开启新页,
p 的 onclick 会被触发(因为事件向上传递)。
---------------------------------
如果在 a.onclick 里面下 preventDefault() ,
a 的超连结就不会打开页面。
如果在 a.onclick 里面下 stopPropagation(),
p.onclick 就不会触发。
这题也是个很不错的题目,很多人搞不懂这两个的差别。
: 以上 就这几题
: 至於是哪家公司的面试题目 我就不透漏了,透露出来好像不太好
--
网页上拉近距离的帮手 实现 GMail丰富应用的功臣
数也数不清的友善使用者体验 这就是javascript
欢迎同好到 AJAX 板一同讨论。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 182.235.118.79
※ 编辑: TonyQ 来自: 182.235.118.79 (06/14 16:35)
1F:→ TonyQ:注:第八题在 fx 上会有行为不同 06/14 17:05
※ 编辑: TonyQ 来自: 182.235.118.79 (06/14 17:14)
2F:推 s25g5d4:对不起 我去检讨... 06/14 20:17
3F:推 tails32100:该好好检讨一下了Orz 06/15 13:37
4F:推 catspawboy:第六题 不需要xxx['1']吗QQ? 06/17 16:58
5F:→ catspawboy:不好意思 真的不用耶... 06/17 16:59
6F:→ alpe:回去检讨... ... 06/17 17:18
7F:→ grence:字串在什情况下会有值相等但型态不相等吗 06/17 21:17
8F:→ TonyQ:"1" == 1 虽然说是纯数字才有的特例 XD 06/18 01:36
9F:→ grence:刚还想到date,感觉会隐含呼叫 toString()的东西都有可能 06/18 01:52
10F:→ grence:不过真的很难遇到XD 06/18 01:53
11F:→ mrbigmouth:{} == '[object Object]' XDD 06/18 09:04
12F:→ abgne:第三题应该是 D, 只有空字串是 false 07/05 17:04
13F:→ TonyQ:it's not true , 题目出的不好. XD 07/05 22:39
14F:推 chatnoir:非空字串转成boolean好像都是true耶.. 12/17 13:32