• Node.js란?
    Node.js는 JavaScript를 기본 기계 코드로 직접 컴파일하는 Chrome의 V8 JavaScript 엔진에서 개발된 강력한 프레임워크입니다.
    서버 측 웹 응용 프로그램을 만드는 데 사용되는 경량 프레임워크이며 JavaScript API를 확장하여 일반적인 서버 측 기능을 제공합니다.
    일반적으로 대규모 응용 프로그램 개발, 특히 비디오 스트리밍 사이트, 단일 페이지 응용 프로그램 및 기타 웹 응용 프로그램에 사용됩니다.
  • Node.js를 사용하는 이유는 무엇입니까?
    Node.js를 사용하면 확장 가능한 네트워크 프로그램을 쉽게 구축할 수 있습니다.
    장점 중 일부는 다음과 같습니다.
    -, 빠릅니다
    -, 거의 차단하지 않습니다
    -, 통합 프로그래밍 언어 및 데이터 유형을 제공합니다.
    -, 모든 것이 비동기적입니다.
    -, 뛰어난 동시성을 제공합니다.
  • Node.js는 어떻게 작동합니까?
    Node.js는 JavaScript를 스크립팅 언어로 사용하고 v8 환경에서 실행되는 가상 머신입니다.
    단일 스레드 이벤트 루프와 더 많은 동시 요청을 처리할 수 있으므로 높은 속도를 제공하는 비차단 I/O에서 작동합니다.
    또한 Node.js는 'HTTP' 모듈을 사용하여 모든 독립형 웹 서버에서 실행할 수 있습니다.
  • Node.js가 단일 스레드인 이유는 무엇입니까?
    Node.js는 비동기 처리를 지원하기 위해 단일 스레드 모델을 사용합니다.
    비동기 처리를 사용하면 응용 프로그램의 성능이 향상되고 웹 로드에서 확장 가능합니다.
    따라서 Node.js는 일반적인 스레드 기반 구현이 아닌 단일 스레드 모델 접근 방식을 사용합니다.
  • Node.js에는 몇 가지 유형의 API 함수가 있습니까?
    Node.js에는 두 가지 유형의 API 함수가 있습니다.
    -, 비동기, 비차단 함수
    -, 동기, 차단 함수
  • Node.js에서 콜백을 설명하세요.
    콜백 함수는 주어진 작업 후에 호출됩니다. 그 동안 다른 코드를 실행할 수 있고 차단을 방지합니다.
    비동기 플랫폼이기 때문에 Node.js는 콜백에 크게 의존합니다.
    Node의 모든 API는 콜백을 지원하도록 작성되었습니다.
  • I/O라는 용어를 어떻게 정의하시겠습니까?
    I/O라는 용어는 매체와 데이터를 주고받는 모든 프로그램, 작업 또는 장치를 설명하는 데 사용됩니다.
    모든 전송은 한 매체의 출력과 다른 매체의 입력입니다. 매체는 물리적 장치, 네트워크 또는 시스템 내의 파일일 수 있습니다.
  • Node.js는 어떻게 가장 자주 사용됩니까?
    Node.js는 다음 애플리케이션에서 널리 사용됩니다.
    -, 실시간 채팅
    -, 사물 인터넷
    -, 복잡한 SPA(단일 페이지 애플리케이션)
    -, 실시간 협업 도구
    -, 스트리밍 애플리케이션
    -, 마이크로서비스 아키텍처
  • NPM이란 무엇입니까?
    NPM은 Node.js의 모든 패키지와 모듈을 관리하는 Node Package Manager의 약자입니다.
    노드 패키지 관리자는 두 가지 주요 기능을 제공합니다.
    -, search.nodejs.org에서 검색 가능한 node.js 패키지/모듈에 대한 온라인 리포지토리 제공
    -, Node.js 패키지를 설치하기 위한 명령줄 유틸리티를 제공하고 Node.js 버전 및 종속성을 관리합니다.
  • 외부 라이브러리를 가져오는 데 사용되는 명령은 무엇입니까?
    "require" 명령은 외부 라이브러리를 가져오는 데 사용됩니다.
    예: "var http=require("http")". 이렇게 하면 http 라이브러리와 http 변수를 통해 내보낸 단일 개체가 로드됩니다.
  • 이벤트 기반 프로그래밍은 무엇을 의미합니까?
    이벤트 기반 프로그래밍 접근 방식은 이벤트를 사용하여 다양한 기능을 트리거합니다.
    이벤트는 키 입력이나 마우스 버튼 클릭과 같은 모든 것이 될 수 있습니다.
    요소에 이미 등록된 콜백 함수는 이벤트가 트리거될 때마다 실행됩니다.
  • Node.js에서 오류 우선 콜백이란 무엇입니까?
    Node.js의 오류 우선 콜백은 오류와 데이터를 전달하는 데 사용됩니다.
    이러한 함수에 전달해야 하는 첫 번째 매개변수는 오류 객체여야 하고 다른 매개변수는 관련 데이터를 나타내야 합니다.
    따라서 오류 개체를 전달하여 잘못된 것이 있는지 확인하고 처리할 수 있습니다. 문제가 없는 경우 다음 인수를 계속 진행할 수 있습니다.
    var myPost = new Post({title: '웹학교'});
    myPost.save(function(err,myInstance){
      if(err){
        //handle error and return
      } //go ahead with `myInstance`
    });
              
  • Node.js가 Java 및 PHP와 같은 다른 백엔드 기술보다 선호되는 이유는 무엇입니까?
    Node.js가 선호되는 이유는 다음과 같습니다.
    -, Node.js는 매우 빠릅니다.
    -, Node Package Manager에는 개발자가 마음대로 사용할 수 있는 50,000개 이상의 번들이 있습니다.
    -, Node.js는 API가 데이터를 반환할 때까지 기다리지 않으므로 데이터 집약적인 실시간 웹 애플리케이션에 적합합니다.
    -, 동일한 코드 기반으로 인해 서버와 클라이언트 간의 코드 동기화 향상
    -, JavaScript 라이브러리이므로 웹 개발자가 프로젝트에서 Node.js 사용을 쉽게 시작할 수 있습니다.
  • Node.js에서 더 많이 사용되는 데이터베이스는 무엇입니까?
    MongoDB는 Node.js와 함께 사용되는 가장 일반적인 데이터베이스입니다.
    고성능, 고가용성, 손쉬운 확장성을 제공하는 NoSQL, 크로스 플랫폼, 문서 지향 데이터베이스입니다.
  • Node.js에서 가장 일반적으로 사용되는 라이브러리는 무엇입니까?
    Node.js에는 두 가지 일반적으로 사용되는 라이브러리가 있습니다.
    -, ExpressJS - Express는 웹 및 모바일 애플리케이션을 모두 개발할 수 있는 다양한 기능을 제공하는 유연한 Node.js 웹 애플리케이션 프레임워크입니다.
    -, Mongoose - Mongoose는 애플리케이션을 데이터베이스에 쉽게 연결할 수 있게 해주는 Node.js 웹 애플리케이션 프레임워크이기도 합니다.
  • Node.js는 다중 프로세서 플랫폼을 어떻게 지원하며 모든 프로세서 리소스를 완전히 활용합니까?
    Node.js는 기본적으로 단일 스레드 응용 프로그램이므로 단일 프로세서 코어에서 실행되며 여러 코어 리소스를 최대한 활용하지 않습니다.
    그러나 Node.js는 하드웨어를 더 많이 활용하기 위해 다중 코어 시스템 배포를 지원합니다.
    클러스터 모듈은 핵심 Node.js 모듈 중 하나이며 동일한 포트를 공유하는 여러 Node.js 작업자 프로세스를 실행할 수 있습니다.
  • REPL이란? 어떤 목적으로 사용됩니까?
    REPL은 (READ, EVAL, PRINT, LOOP)를 나타냅니다.
    Node js는 번들 REPL 환경과 함께 제공됩니다. 이를 통해 CLI(명령줄 인터페이스) 응용 프로그램을 쉽게 만들 수 있습니다.
  • Node.js 작업의 이벤트 루프는 무엇입니까? 어떻게 작동합니까?
    이벤트 루프는 모든 비동기 콜백을 처리합니다. Node.js(또는 JavaScript)는 단일 스레드, 이벤트 기반 언어입니다. 즉, 이벤트에 리스너를 연결할 수 있으며 해당 이벤트가 발생하면 리스너는 우리가 제공한 콜백을 실행합니다.
    setTimeout, http.get 및 fs.readFile을 호출할 때마다 Node.js는 이 작업을 실행하고 출력을 기다리지 않고 계속해서 다른 코드를 실행합니다. 작업이 완료되면 출력을 수신하고 콜백 함수를 실행합니다.
    따라서 모든 콜백 함수는 루프에 대기하고 응답이 수신되면 하나씩 실행됩니다.
  • 비동기식과 논블로킹의 차이점은 무엇입니까?
    비동기는 말 그대로 동기가 아님을 의미합니다. 우리는 비동기식으로 HTTP 요청을 하고 있습니다.
    즉, 서버 응답을 기다리지 않는다는 의미입니다. 다른 블록을 계속 진행하고 서버 응답을 받았을 때 응답합니다.
    Non-Blocking이라는 용어는 IO와 함께 널리 사용됩니다. 예를 들어 비차단 읽기/쓰기 호출은 할 수 있는 모든 것을 반환하고 호출자가 호출을 다시 실행할 것으로 예상합니다.
    Read는 데이터가 있을 때까지 기다렸다가 호출 스레드를 절전 모드로 전환합니다.
  • Node.js의 스트림은 무엇입니까?
    스트림은 데이터를 읽거나 계속해서 쓸 수 있도록 하는 개체입니다.
    스트림에는 네 가지 유형이 있습니다.
    -, 읽기 가능: 읽기 작업에 사용
    -, 쓰기 가능: 쓰기 작업에 사용
    -, 이중: 읽기 및 쓰기 작업 모두에 사용할 수 있습니다.
    -, 변환: 입력을 기반으로 출력이 계산되는 이중 스트림 유형
  • Node.js의 비동기 및 비차단 API를 설명합니다.
    모든 Node.js 라이브러리 API는 비동기식이므로 비차단적이기도 합니다.
    Node.js 기반 서버는 API가 데이터를 반환할 때까지 기다리지 않습니다. 대신 호출 후 다음 API로 이동하고 Node.js 이벤트의 알림 메커니즘이 이전 API 호출에 대해 서버에 응답합니다.
  • 제어 흐름 함수란 무엇입니까?
    제어 흐름 함수는 여러 비동기 함수 호출 사이에서 실행되는 코드 조각입니다.
  • Node.js의 버퍼 클래스는 무엇입니까?
    버퍼 클래스는 정수 배열과 유사한 원시 데이터를 저장하지만 V8 힙 외부의 원시 메모리 할당에 해당합니다.
    순수 JavaScript는 바이너리 데이터와 호환되지 않기 때문에 버퍼 클래스가 사용됩니다.
  • Node.js에서 파이핑이란 무엇입니까?
    배관은 한 스트림의 출력을 다른 스트림에 연결하는 데 사용되는 메커니즘입니다.
    일반적으로 한 스트림에서 데이터를 검색하고 다른 스트림으로 출력을 전달하는 데 사용됩니다.
  • Node.js의 리액터 패턴은 무엇입니까?
    리액터 패턴은 비차단 I/O 작업의 개념입니다. 이 패턴은 각 I/O 작업과 연결된 핸들러를 제공합니다.
    I/O 요청이 생성되는 즉시 디멀티플렉서에 제출됩니다.
  • Node.js에서 미들웨어의 개념을 설명합니다.
    미들웨어는 요청 및 응답 객체를 수신하는 기능입니다. 미들웨어 기능이 수행하는 대부분의 작업은 다음과 같습니다.
    -, 모든 유형의 코드 실행
    -, 요청 및 응답 개체 업데이트 또는 수정
    -, 요청-응답 주기 완료
    -, 스택의 다음 미들웨어 호출
  • setImmediate() 대 setTimeout()의 차이점
    setImmediate() 및 setTimeout()은 유사하지만 호출되는 시기에 따라 다른 방식으로 동작합니다.
    -, setImmediate()는 현재 폴링(이벤트 루프) 단계가 완료되면 스크립트를 실행하도록 설계되었습니다.
    -, setTimeout()은 최소 임계값(ms)이 경과한 후 스크립트가 실행되도록 예약합니다.
    타이머가 실행되는 순서는 호출되는 컨텍스트에 따라 다릅니다. 둘 다 메인 모듈 내에서 호출되면 타이밍은 프로세스의 성능에 의해 제한됩니다.
  • Node.js의 테스트 피라미드는 무엇입니까?
    Node.js에서 테스트 피라미드는 프로젝트의 성공적인 개발을 위해 필요한 단위 테스트, 통합 테스트 및 종단 간 테스트의 비율을 설명하는 그림입니다. 테스트 피라미드의 구성 요소는 다음과 같습니다.
    -, 단위 테스트 : 개별 코드 단위를 격리하여 테스트합니다. 빠르며 이러한 테스트를 많이 수행할 수 있습니다.
    -, 통합 테스트 : 서로 다른 단위 간의 통합을 테스트합니다.
    -, E2E(End-to-End) 테스트: 사용자 인터페이스에서 데이터 저장소에 이르기까지 시스템 전체를 테스트합니다.
  • libuv는 무엇입니까?
    비동기 입출력은 Node.js의 지원 라이브러리인 Libuv를 사용합니다.
    처음에는 Node.js용으로만 개발되었지만 이제 Luvit, Julia, Pyuv 등과 같은 다른 시스템과의 실습을 목격합니다. Libuv의 일부 기능은 다음과 같습니다.
    -, 파일 시스템 이벤트
    -, 자식 프로세스
    -, 모든 기능을 갖춘 이벤트 루프 지원
    -, 비동기 TCP 및 UDP 소켓
  • Node.js가 CPU를 많이 사용하는 애플리케이션에 가장 적합한 플랫폼입니까?
    Node.js가 서버 측 애플리케이션을 만드는 데 도움이 될 수 있지만 CPU 인센티브 애플리케이션은 Node.js의 강력한 슈트가 아닙니다.
    CPU를 많이 사용하는 작업은 들어오는 요청을 차단하고 스레드를 중요한 상황으로 밀어넣습니다.