이번에는 Node.js 프론트엔드 면접 질문을 가져왔습니다. Node.js 포지션 프론트엔드 면접에서 주의해야 할 점은 무엇인가요?
[관련 추천: 프론트엔드 면접 질문(2020)]
Node.js 관련 일자리를 찾고 싶지만 Node.js 숙달도를 평가하려면 어디서부터 시작해야 할지 모르겠다면. 이 기사에는 일반적인 Node.js 인터뷰 질문 10가지가 나열되어 있으며 Node.js 프로그래밍과 관련된 몇 가지 주요 측면을 검토합니다.
텍스트를 입력하기 전에 두 가지 사항을 미리 명시해야 합니다.
이 질문은 Node.js 지식 시스템의 일부일 뿐이며 인터뷰 대상자의 실제 개발 능력을 완전히 검사할 수는 없습니다.
실제 개발에서 직면하는 문제에는 적응성과 팀워크가 필요하므로 페어 프로그래밍을 시도해 볼 수 있습니다.
Node.js 면접 질문 목록
오류 우선 콜백 함수란 무엇인가요?
콜백 지옥을 피하는 방법은 무엇인가요?
노드를 사용하여 포트 80을 모니터링하는 방법은 무엇입니까?
이벤트 루프란 무엇인가요?
일관적인 프로그래밍 스타일을 보장하기 위해 어떤 도구를 사용할 수 있나요?
작동 오류와 프로그래머 오류의 차이점은 무엇인가요?
NPM을 사용하면 어떤 이점이 있나요?
스텁이란 무엇인가요? 사용 시나리오를 알려주세요.
테스트 피라미드란 무엇인가요? HTTP API에 대한 테스트 피라미드를 활용하는 방법은 무엇입니까?
가장 좋아하는 HTTP 프레임워크는 무엇이며 그 이유는 무엇입니까?
이제 이 질문에 하나씩 답해 보겠습니다.
오류 우선 콜백 함수란 무엇인가요?
오류 우선 콜백 함수는 오류와 데이터를 전달하는 데 사용됩니다. 첫 번째 매개변수는 항상 오류 객체여야 하며, 프로그램에서 오류가 발생했는지 확인하는 데 사용됩니다. 나머지 매개변수는 데이터를 전달하는 데 사용됩니다. 예:
fs.readFile(filePath, function(err, data) { if (err) { //handle the error } // use the data object});
분석: 이 질문의 주요 기능은 인터뷰 대상자가 Node.js의 비동기 작업에 대한 기본 지식을 얼마나 숙달했는지 확인하는 것입니다.
콜백 지옥을 피하는 방법
다음 방법을 사용할 수 있습니다.
모듈화: 콜백 함수를 독립적인 함수로 분할합니다.
Promises 사용
yield
를 사용하여 생성기 또는 Promise
를 계산합니다.분석 : ES6, ES7 또는 일부 제어 흐름 라이브러리와 같이 사용하는 시나리오에 따라 이 질문에 대한 답변이 많이 있습니다.
Node를 사용하여 포트 80을 모니터링하는 방법
이 질문에는 함정이 있습니다! Unix 계열 시스템에서는 수퍼유저 권한이 필요하므로 포트 80에서 수신 대기를 시도하면 안 됩니다. 따라서 애플리케이션이 이 포트를 직접 수신하도록 하는 것은 권장되지 않습니다.
현재 애플리케이션이 포트 80을 수신하도록 해야 하는 경우 아래 그림과 같이 Node 애플리케이션 앞에 또 다른 역방향 프록시 계층(예: nginx)을 추가하면 됩니다. 그렇지 않으면 1024보다 큰 포트를 직접 수신하는 것이 좋습니다.
방향 프록시는 프록시 서버를 사용하여 인터넷에서 연결 요청을 받은 다음 내부 네트워크의 서버로 요청을 전달하고 서버에서 반환된 결과를 클라이언트로 보내는 것을 의미합니다.
역방향 프록시에 대한 자세한 내용은 이 문서를 읽어 보시기 바랍니다. nginx를 사용하여 노드의 방향 프록시를 구성하는 방법을 연습하려면 이 블로그 게시물을 참조하세요.
설명: 이 질문은 인터뷰 대상자가 실제로 Node 애플리케이션을 실행한 경험이 있는지 확인하는 데 사용됩니다.
이벤트 루프란 무엇인가요?
Node는 적어도 Node.js 개발자의 관점에서 볼 때 단일 스레드 처리 메커니즘(모든 I/O 요청은 비차단 작업 방법을 사용함)을 사용합니다. 최하위 수준에서 Node.js는 libuv를 추상 캡슐화 계층으로 사용하여 다양한 운영 체제 간의 차이점을 보호합니다. Node는 livuv를 사용하여 멀티스레딩을 구현할 수 있습니다. 다음 그림은 Node와 libuv의 관계를 보여줍니다.
Libuv 라이브러리는 Node API 실행을 담당합니다. 서로 다른 스레드에 서로 다른 작업을 할당하여 이벤트 루프를 형성하고 작업의 실행 결과를 비동기 방식으로 V8 엔진에 반환합니다. 아래 그림으로 간단하게 표현할 수 있습니다.
모든 I/O에는 콜백 함수가 필요합니다. 일단 실행되면 실행을 위해 이벤트 루프로 푸시됩니다. 좀 더 자세한 설명이 필요하시면 이 영상을 참고하시면 됩니다. 이 글을 참고하셔도 됩니다.
설명: libuv가 무엇인지, 무엇을 하는지 등 Node.js에 대한 낮은 수준의 지식을 확인하는 데 사용됩니다.
일관적인 코딩 스타일을 보장하는 데 사용할 수 있는 도구
다음 도구를 선택할 수 있습니다.
JSLint
JSHint
ESLint
JSCS - 권장
팀 개발에서 이러한 도구는 코드 작성에 유용합니다. 팀 개발자가 규정된 스타일 가이드를 적용하고 정적 분석을 통해 일반적인 오류를 파악하는 데 매우 유용합니다.
분석: 인터뷰 대상자가 대규모 프로젝트 개발 경험이 있는지 확인하는 데 사용됩니다.
작동 오류와 프로그래머 오류의 차이점
运算错误并不是bug,这是和系统相关的问题,例如请求超时或者硬件故障。而程序员错误就是所谓的bug。
解析:这个题目和Node关系并不大,用于考察面试者的基础知识。
使用NPM有哪些好处?
通过NPM,你可以安装和管理项目的依赖,并且能够指明依赖项的具体版本号。 对于Node应用开发而言,你可以通过package.json文件来管理项目信息,配置脚本, 以及指明项目依赖的具体版本。
关于NPM的更多信息,你可以参考官方文档。
解析:它能考察面试者使用npm命令的基础知识和Node.js开发的实际经验。
什么是Stub?举个使用场景
Stub是用于模拟一个组件或模块的函数或程序。在测试用例中, 简单的说,你可以用Stub去模拟一个方法,从而避免调用真实的方法, 使用Stub你还可以返回虚构的结果。你可以配合断言使用Stub。
举个例子,在一个读取文件的场景中,当你不想读取一个真正的文件时:
var fs = require('fs');var readFileStub = sinon.stub(fs, 'readFile', function (path, cb) { return cb(null, 'filecontent'); }); expect(readFileStub).to.be.called; readFileStub.restore();
在单元测试中:Stub是完全模拟一个外部依赖,而Mock常用来判断测试通过还是失败。
有关Node.js的单元测试小结,你可以参考这个链接。
解析:用于测试被面试者是否有测试的经验。如果被面试者知道什么是Stub, 那么可以继续问他是如何做单元测试的。
什么是测试金字塔?
测试金字塔指的是: 当我们在编写测试用例时,底层的单元测试应该远比上层的端到端测试要多。
当我们谈到HTTP API时,我们可能会涉及到:
有很多针对模型的底层单元测试
但你需要测试模型间如何交互时,需要减少集成测试
解析:本文主要考察被面试者的在测试方面的经验。
你最喜欢的HTTP框架以及原因
这题没有唯一的答案。本题主要考察被面试者对于他所使用的Node框架的理解程度, 考察他是否能够给出选择该框架的理由,优缺点等。常用的HTTP框架你可以参考这个网站。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
相关阅读:
一个用Vue.js 2.0+做出的石墨文档样式的富文本编辑器
위 내용은 Node.js에 대한 프론트엔드 인터뷰 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!