LabHub

Node.js 백엔드 — 프레임워크가 감춘 것 · 요청 하나가 지나가는 길 · 퀴즈

퀴즈: 프레임워크가 감춘 것들

LabHub 에서 이어서 보기

문항 8개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 경로는 있는데 그 메서드는 안 받을 때 올바른 상태 코드는?

    1. 404 — 없는 자원과 같게 다룬다
    2. 405 — 자원은 있고 그 동작만 허용되지 않는다
    3. 400 — 요청이 잘못된 것이다
    4. 501 — 서버가 구현하지 않은 것이다
  2. 라우팅 규칙이 안 먹을 때 가장 먼저 볼 것은?

    1. 등록 순서와 패턴의 범위 — 넓은 패턴이 위에 있으면 아래는 닿지 않는다
    2. 핸들러 함수 안의 로직
    3. 응답 헤더의 Content-Type 설정
    4. 서버가 듣고 있는 포트 번호
  3. 저장한 객체를 그대로 return 하는 코드의 진짜 위험은?

    1. 응답이 커져 전송이 느려진다
    2. JSON 직렬화에서 순환 참조 오류가 난다
    3. 나중에 컬럼을 하나 더하면 그 순간 API 응답도 조용히 바뀐다
    4. 클라이언트가 필드 순서에 의존하게 된다
  4. 출력에서 민감한 필드를 거를 때 delete 대신 허용 목록을 쓰는 이유는?

    1. delete 가 성능이 느리기 때문에
    2. delete 는 원본 객체를 변형시키기 때문에
    3. 빼는 방식은 새 필드가 생길 때마다 또 새어 나가기 때문에
    4. 허용 목록이 코드가 더 짧기 때문에
  5. 의존성 주입을 쓰는 가장 근본적인 이유는?

    1. 단위 테스트를 쓰기 편해서
    2. 프레임워크가 그렇게 하라고 정해서
    3. 상위 모듈이 하위 모듈의 구현에 묶이지 않게 하려고
    4. 객체 생성 비용을 줄이려고
  6. DI 를 써 놓고도 갈아 끼울 수 없게 되는 가장 흔한 경로는?

    1. 생성자 인자가 너무 많아질 때
    2. 전역 싱글턴을 편의상 직접 import 할 때
    3. 인터페이스 대신 구체 타입을 쓸 때
    4. 주입 컨테이너 설정이 길어질 때
  7. 요청 처리 중 이벤트 루프를 막으면 무엇이 관측되나?

    1. CPU 사용률만 낮아진다
    2. 그 요청만 느려지고 나머지는 정상이다
    3. 처리하는 동안 타이머와 다른 요청이 모두 밀린다
    4. 메모리 사용량이 급증한다
  8. API 계약을 시험할 때 서버를 띄우지 않는 편이 나은 이유는?

    1. 포트 충돌과 타이밍에 흔들리지 않아 실패가 진짜 실패를 뜻하기 때문
    2. 네트워크 계층은 시험할 가치가 없기 때문
    3. 서버를 띄우면 시험이 항상 통과하기 때문
    4. 실제 HTTP 는 표준이라 검증할 것이 없기 때문