刁难人的面试题

2020-09-14

上午 @Innei 发了一个段子,Vue 作者尤雨溪来做大公司的 Vue 面试题竟然都有不对的,你说刁不刁钻?还记得以前有人吐槽高考阅读题连作家本人都不懂,说白了就劲个瞎扯嘛。

这也反映了一个很现实的问题,就是面试造航母,工作拧螺丝啊。他还给我来了几套 JS 面试题,我也几乎错了一半,全是套路,大多都是平常很难写到的东西,面试题就真是坑爹玩意儿!

他:Array(3).map(() => console.log(2)) 会输出什么
我:三次 2?
答案:不输出

他:Array(3).fill(null).map(()=>console.log(2)) 会输出什么
我:这个肯定会输出
答案:确实会输出三次,但前面那个是 empty,不会遍历,和 null 不一样,不会输出

他:typeof new String("123") 会输出什么
我:这个肯定不是 Number 吧,难道不是 String?
答案:Object
他:JS 老恶心了
我:不带 new 就是返回 String,new Number() 也是 Object

他:array.push 方法返回什么
我:这个是往最后插东西的,要么返回插入后的数组,要么返回插入了什么
答案:返回的是插入后的数组 length
我:真的比较在乎函数本身的作用,就很少留意他返回什么
我:真要 length 估计我会另外 数组.length 获取一次
我:目前还没遇到过插入数组之后需要获取 length 的情形

他:如何手动写一个迭代器,const a ={} 变成可迭代
我:迭代器是什么?
他:就是能被 for 的
我:Object.keys,然后遍历 keys
他:那不行,得能直接 for
我:ES5 还是 ES6 的
他:Symbol.iterator
我:CaO,ES6
他:所有能遍历的都实现了这个属性
我:我看 Object.keys 好像也是 ES6(看了下兼容性)其实只有 IE9+ 才支持,但不是 ES6

他:如何判断两个值都为 NaN
我:这种情况我肯定 if 大法了,我只知道 isNaN 方法可以
他:还有呢
我:不知道了
他:Object.is(a, b) 另一种办法,a === b 就傻逼了
我:NaN === NaN 返回 false,确实不行

他:a = "123" b = 1 a - b是多少
我:NaN 么
答案:"123" 被转成数字,返回 122
他:a + b = "1231"

他:有没有可能出现 a + b === a,是不是快怀疑人生了,白学了
我:怎么做到的
他:valueOf

他说这本书叫做《你不知道的 JavaScript》,看完这本书都可以当面试官去刁难人了,哈哈哈 😂 不过确实是这样子,大公司面试的人太多,要筛人,小公司就不会这么在意,找到人都不错了。

晚上乱试了一通,终于知道怎么用 PHP 加入 PEM 证书和密钥,来实现发送微信的商户付款接口了,在 Curl 里面带上 CURLOPT_SSLCERTCURLOPT_SSLKEY 两个参数就行。

就是感觉官方文档写的不是很好,新手很难理解一些概念。由于没有代码示例,我一开始都不知道怎么用 PHP 写,我同学还说要操作系统里面安装这个证书,可见他都没有搞清楚。本来我也不想干这些的,可团队里面除了我,压根没有其他人学过后端,真是服了!

配乐 阵雨 一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君