招node.js(附测试题)史上最奇特招聘
发布于 10 年前 作者 wdongxv 14604 次浏览 最后一次编辑是 8 年前 来自 招聘

公司坐标: 北京 海淀 魏公村

薪资: 你来定(创业公司,你懂的)

福利: 五险一金,双休,mac,千万级用户,10M速度翻墙

工作职责: 负责app云端服务开发。

职位要求:

  1. 至少要对js的特性了解
  2. 要求对http协议精通,了解socket原理
  3. 精通json,mysql,mongodb
  4. 具备精益求精的心态

联系: MAC用户执行: node -e "$(curl -fsSL $(echo aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dkb25neHYvanN0ZXN0L21hc3Rlci90ZXN0LmpzCg== | base64 -D))" Linux(centos测试通过)用户执行: node -e "$(curl -fsSL $(echo aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dkb25neHYvanN0ZXN0L21hc3Rlci90ZXN0LmpzCg== | base64 -d))"

连Linux都没有的就别来,没天分

53 回复

var value1 = 0, value2 = 0, value3 = 0; for ( var i = 1; i <= 3; i++) { var i2 = i; (function() { var i3 = i; setTimeout(function() { value1 += i; value2 += i2; value3 += i3; }, 1); })(); } setTimeout(function() { console.log(value1, value2, value3); }, 100); 没解出来。。 @jiangli373

setTimeout的闭包里 引用的 i i2 分别是 4 3 3个不同的闭包 3次相加 value1 = 12 value2 = 9 i3 是每次循环是i的值 分别是 123 value3 =6

@yekexuan 其实就是一个作用域的问题,堆栈中三个func执行时i i2 i3的值的问题,不过不理解出题者费这么大劲包装这道题的意图是什么

出题思路本身有点意思,实际考的问题有点扯 wdx345 <- add wechat

楼主,我最近也出了也出了一份nodejs测试题,帮我们公司面了好几个人了,要不要我给你发一份,让你测得更酸爽😁😁,嘿嘿

12 9 6瞬间懂,闭包,作用域,定时器。。。。。。。

测试很赞啊

echo aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dkb25neHYvanN0ZXN0L21hc3Rlci90ZXN0LmpzCg== | base64 -D base64: invalid option – ‘D’ Try `base64 --help’ for more information.

跑不出东西…

@fantasticsoul 重点不在测试,我们招人招的是人,不是技术

@chapgaga 可能mac下才行,其它平台没试过

@frosh 这样不好

@frosh 其实就是看一个人是否对代码有很深的理解

@fantasticsoul 可以一块交流下

@wdongxv 不能弄的通用点么?用linux的人还是不少的啊

@chapgaga 浏览器直接atob(‘aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dkb25neHYvanN0ZXN0L21hc3Rlci90ZXN0LmpzCg==’)

直接把Windows系統過濾掉了呃

@jiangzhuo 哈哈,问题是我这现在没windows的系统,帮忙写个?

base64,网上可以找很多线上解码的,这道题最有意思的是联系方式,开始还以为最后跑出的结果是呢,跑出来后发现不是,看了@frosh的答案,才发现原来如此啊!

直接把url解码, 浏览器访问,就能看到源码了。联系方式在源码有点显眼,建议加下密

@gaoyue1989 有必要嘛,嘿嘿

12 原来如此 … i = 4, i <= 3 不满足 …

@wdongxv 这是在秀代码还是真心在招聘呢。。。。 感觉都跑题了

公司氛围很不错,老大是大牛,期待加入

@frosh 真心要招聘。。。。

答案,wechat都在题目中,不给力。起码得需要服务器验证后再返回联系方式才有趣。

@yekexuan 我是这样理解的 i,i2 都是在主栈中,i3是在新函数栈中,所以,当外部的循环结束后,最后作计算的函数个函数调用的i,i2都是最后的指,i3在函数中,所以,每次都是不同的.

@xhq8888 有必要吗?要不给整个难的?

@zhangjg 回答正确,本题仅仅考的是对程序的理解

@wdongxv 这个程序在os x上运行时 有时会出问题 阻塞的process.stdin一直block在那里 等待输入 导致setIntervalI()一直不运行。windows上我测试着还没有出问题。

此段程序应该这样理解 循环语句条件下: 1.匿名自执行函数与闭包的关系 2.闭包外部匿名函数 3.闭包内部匿名函数 形成3个闭包相加的三个匿名函数的事件循环的异步输出,即个匿名函数事件驱动的经典题目。 包含面向对象封装、继承、多态的思想,大赞!好题! 参照我的分享: 浅谈从一道面试测试题谈谈对Nodejs编程的理解

@jiangli373 毛,多看出个i1的, 9 9 6, 错鸟 这种坑是否只有js中才有?

@khowarizmi 那你为什么要看呢?

@wdongxv 没为什么,点开链接就看到了

忘了i++了

额。。。晕了

题中汇集了不少anti-pattern,熟悉闭包和域,稍微细心点就能解出来了。另外如果用过jshint知道loopfunc和funcscope的话就更容易了。

看到最后一句话,默默关掉了我的PowerShell。。。

这个题目很有水平!

希望lz不要打我, 请原谅我看了你的源码 又放到这里 (function(){ function e(){ var a = 0; var b = setInterval(function(){ var c="\u001b[42m\u001b[37m"+**“wdx345 <- add wechat”.*substring(0,Math.floor(a))+"\u001b[0m",c=20.9>a?c+("\u001b[37m\u001b[40m"+"-\|/".substr(Math.floor(8a)%4,1)+"\u001b[0m"):c+"\n"; process.stdout.write("\u001b[100D\u001b[K"+c);21<(a+=0.125)&&(clearInterval(b), process.exit())},100)} var f=(new Buffer(“dmFyIHZhbHVlMSA9IDAsIHZhbHVlMiA9IDAsIHZhbHVlMyA9IDA7CmZvciAoIHZhciBpID0gMTsgaSA8PSAzOyBpKyspIHsKICAgIHZhciBpMiA9IGk7CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGkzID0gaTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YWx1ZTEgKz0gaTsKICAgICAgICAgICAgdmFsdWUyICs9IGkyOwogICAgICAgICAgICB2YWx1ZTMgKz0gaTM7CiAgICAgICAgfSwgMSk7CiAgICB9KSgpOwp9CnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICBjb25zb2xlLmxvZyh2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzKTsKfSwgMTAwKTs=”, “base64”)).toString(); process.stdout.write(f+"\n"); var g={1:12,2:9,3:6},b=1; process.stdin.setEncoding(“utf-8”); var d=function(){ process.stdout.write("\u001b[32mvalue"+b+"=\u001b[0m") }; process.stdin.on(“readable”,function(){ var a=process.stdin.read(); if(null !== a && !(3<b)){ if( g[b] == parseInt(a) ){ if(3==b)return e() }else { process.stdout.write("\u001b[31mWrong!!! bye!\u001b[0m\n"); process.exit(); } b++; d(); } }); d() })();

wdx345 <- add wechat.

我确实不牛b, 而且我也不需要证明给任何人看

12,9,6 9楼 Hi-Rube  说的很对..  定时器的使用手法个人觉得很精典,与实现promise()中用法一致.. 有多少是南京的 ?

@sleelily 哈哈……话说poweShell也是挺好的,

From Noder

精通json是什么意思? 精通俩数据库的意思是会使用和简单优化吗?

@cholerae 可能写错了,json基本不用学

回到顶部