本人情况:本科毕业,小厂工作3年,刚开始工作使用node,后续因为node生态差等问题,更多的使用生态更好的go开发。最近打算换工作,因为知道是互联网寒冬,所以 go 和 node 的岗位都有投简历。今天面了一次node,记录一些面试题以及自己的感受。
node生态真的很差,而且说实话感觉东西不多,之前也面试过node的岗位,感觉问的东西都差不多。node面试每次必问:事件循环机制,(虽然说每次必问,但是我好像都没答好,哈哈哈,有点尴尬)。基于事件循环机制,经常会给你一段代码,问输出顺序,今晚就问了类似一道题
const promise = new Promise(resolve => {
console.log(1)
resolve()
console.log(2)
})
promise.then(() => console.log(3))
console.log(4)
还有一道题是问setTimeout和setInterval什么时候执行(?好像是这样问的),我回答的是每次事件循环的第一阶段。也不知道回答对没有。
上面代码里提到了promise,回调地狱的解决办法啥的也会问,考察promise的用法,今晚问了类似的题
const promise = new Promise((resolve, reject) => {
resolve("success1")
reject("fail")
resolve("success2")
})
promise.then(console.log).catch(console.log) // 输出什么?
剩下的就是其它的,db,redis,es,kafka等问题,和node无关了。
总体感受,node部分还是不难的,但是自己实在是很久没学习node了,所以有些不了解。我觉得比较难的,v8的内存分配,内存泄露怎么排查等都没有问过。
有趣的是,面试官刚开始时问我,平时是怎么学习node的。有时候我也想深入学习一下node,但是也没啥地方学,一般就是看看感兴趣的框架的代码。
总体来说,除了node部分,别的大部分都答出来了,但是总感觉面试官不满意,哎,加油,继续面试。