- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Node.js面试题及答案(实战版)
一、基础核心题(10道)
1.说说Node.js的事件循环机制,和浏览器的有什么区别?
答案:
Node.js的事件循环是基于libuv实现的,核心是“非阻塞I/O”的调度机制,流程分为6个阶段(按顺序):
timers:执行setTimeout/setInterval回调
pendingcallbacks:处理上一轮未完成的I/O回调(如TCP错误)
idle,prepare:内部准备阶段(忽略)
poll:核心阶段,等待新的I/O事件,执行I/O回调(如fs、网络请求),若没有回调会阻塞在此
check:执行setImmediate回调
closecallbacks:执行关闭回调(如socket.on(close))
和浏览器的区别:
浏览器事件循环分宏任务(script、setTimeout)和微任务(Promise.then),微任务优先级高于宏任务
Node.js在v11+后和浏览器一致(同一轮宏任务执行完立即清微任务),v11前是“某阶段所有宏任务执行完,再清该阶段的微任务”
Node.js有setImmediate,浏览器没有;浏览器有requestAnimationFrame,Node.js没有
2.什么是回调地狱?怎么解决?
答案:
回调地狱是多层异步操作嵌套(如fs.readFile里套fs.writeFile),导致代码可读性差、维护困难的问题。
解决方式(按实战优先级排序):
Promise封装:将异步操作转为Promise对象,用.then()链式调用
functionreadFilePromise(path){
returnnewPromise((resolve,reject)={
fs.readFile(path,utf8,(err,data)=err?reject(err):resolve(data));
});
}
readFilePromise(./a.txt).then(data=readFilePromise(data)).then(console.log);
async/await:语法糖,让异步代码看起来像同步,最常用
asyncfunctionreadFiles(){
constdata1=awaitreadFilePromise(./a.txt);
constdata2=awaitreadFilePromise(data1);
console.log(data2);
}
事件发布订阅(EventEmitter):适合多模块通信场景
第三方库(如async.js):老项目可能用,新项目优先async/await
3.Node.js的模块系统是什么?CommonJS和ESModule的区别?
答案:
Node.js默认用CommonJS模块系统(require/module.exports),v14.13+支持ESModule(import/export),需在package.json设type:module。
核心区别:
特性
CommonJS
ESModule
加载时机
运行时加载(动态)
编译时加载(静态)
导出方式
module.exports/exports
export/exportdefault
导入方式
require()
import
路径要求
可省略.js/.json
必须写完整后缀(如.js)
顶层this
module.exports
undefined
循环依赖处理
浅拷贝导出对象
生成只读引用
实战注意:
require缓存:第一次加载后缓存,后续require直接取缓存,修改导出对象的属性会影响所有导入处
ESModule的import是只读的,不能修改导入的变量(如import{a}from./b,a不能重新赋值)
4.说说Buffer的作用和常用方法?
答案:
Buffer是Node.js特有的二进制数据处理模块,用于处理TCP流、文件I/O等场景(因为JavaScript本身不能直接操作二进制)。
常用方法:
创建:Buffer.alloc(10)(安全分配,初始化0)、Buffer.from(abc)(从字符串/数组创建)
转换:buf.toString(utf8)(二进制转字符串)、Buffer.from(str,base64)(Base64转Buffer)
操作:buf.slice(0,2)(截取,注意是浅拷贝)、b
您可能关注的文档
- MBA管理类联考模拟试题及参考答案.docx
- MBA管理类联考模拟试题及答案解析.docx
- MBA考试模拟题及答案解析.docx
- MBA面试高频题目及真诚应答参考.docx
- MBA面试高频题目及真实应答参考.docx
- MBA面试高频真题及参考答案.docx
- MBA面试核心题库及实战答案.docx
- MBA综合能力测试题及答案解析.docx
- MBTI人格测试典型题目及解析指南.docx
- MBTI人格类型测试题(生活化版).docx
- 2025年及未来5年中国消防求助艇市场分析及数据监测研究报告.docx
- 2025年及未来5年中国干油集中润滑元件市场分析及数据监测研究报告.docx
- 2025年事业单位工勤技能-北京-北京药剂员三级(高级工)历年参考题典型考点含答案解析.docx
- 2025年及未来5年中国刨花板市场分析及数据监测研究报告.docx
- 2025年及未来5年中国RBB-1丙烯酸汽车面漆市场分析及数据监测研究报告.docx
- 2025年及未来5年中国氯磺化聚乙烯冷却塔防潮涂料市场分析及数据监测研究报告.docx
- 2025年及未来5年中国扣式结束带市场分析及数据监测研究报告.docx
- 2025年及未来5年中国套式割咀市场分析及数据监测研究报告.docx
- 2025年及未来5年中国夹板橡胶轮市场分析及数据监测研究报告.docx
- 2025年及未来5年中国承防尘盖市场分析及数据监测研究报告.docx
最近下载
- 2025年无人机驾驶员职业技能考核试卷:无人机维修保养实操试题集.docx VIP
- 医疗质量与安全提升策略.pptx VIP
- ISO 4892-3-2016 塑料 - 暴露在实验室光源下的方法 - 第3部分:荧光紫外线灯(中文版).pdf
- 卫生部手术分级目录(2025年1月份修订).doc VIP
- 风电机组高空作业事故案例警示与安全培训.pptx VIP
- GMP洁净厂房空调净化系统验证方案.docx VIP
- 学术英语(医学)知到课后答案智慧树章节测试答案2025年春天津医科大学.docx VIP
- (高清版)B-T 21296.1-2020 动态公路车辆自动衡器 第1部分:通用技术规范.pdf VIP
- 关于中学生早恋的问卷调查8.doc VIP
- 英语-山东市济南市2025年1月高二期末学习质量检测试题和答案.docx VIP
原创力文档


文档评论(0)