상위 50개 JSON 인터뷰 질문 및 답변(2026)

JSON 인터뷰 질문과 답변

JSON 면접을 준비하고 계신가요? 모든 JSON 면접에서 가장 중요한 것이 무엇인지 예측하는 것이 중요합니다. 모든 지원자에게 깊이 있고 명확하며 문제 해결에 대한 통찰력을 제공하는 질문이 제시되기 때문입니다.

구조화된 데이터에 대한 수요가 증가함에 따라 기술적 전문 지식과 도메인 전문 지식이 필요한 직무에서 다양한 기회가 창출되고 있으며, 이는 기술 경험과 ​​분석으로 뒷받침됩니다. 이러한 경험과 분석은 신입, 경력자, 고위 전문가가 오늘날 어디에서나 관리자와 팀 리더와 함께 현장에서 일하면서 일반적인 질문과 답을 해결하는 데 도움이 됩니다.

당사의 지침은 72명 이상의 기술 리더로부터 수집한 통찰력을 반영하고, 58명의 관리자의 피드백과 94명의 전문가가 공유한 관점을 보완하여 다양한 인터뷰 패턴과 실무에 대한 적용 범위를 보장합니다.
자세히보기 ...

👉 무료 PDF 다운로드: JSON 인터뷰 질문 및 답변

JSON 면접 질문과 답변

1) JSON이 무엇인지 설명하고, 예를 들어 주요 특징을 설명하세요.

JSON은 사람이 읽을 수 있고 기계가 사용하기 편리하도록 설계된 가벼운 데이터 교환 형식입니다. JSON의 구조는 다음에서 파생되었습니다. JavaJSON은 스크립트 객체 리터럴을 사용하지만 언어에 독립적이므로 최신 API, 설정 파일 및 웹 애플리케이션 데이터 교환에 적합합니다. JSON의 가장 큰 장점은 예측 가능한 구조, 즉 키-값 쌍, 배열, 중첩 및 엄격한 데이터 유형에 있습니다.ping.

주요 특성 :

  • 사람이 읽을 수 있는 구조
  • 이름/값 쌍으로 구성된 데이터
  • 문자열, 숫자, 객체, 배열, 부울 및 null을 지원합니다.
  • 언어 간 쉬운 구문 분석
  • RESTful 서비스, NoSQL 데이터베이스 및 마이크로 서비스에 적합

예:

{
  "id": 101,
  "name": "Alice",
  "roles": ["admin", "editor"],
  "active": true
}

2) JSON에서 지원되는 다양한 데이터 유형을 어떻게 설명하시겠습니까? 그리고 이러한 데이터 유형은 일반적으로 어디에 사용됩니까?

JSON은 구문 분석 및 상호 운용성을 간소화하기 위해 제한적이지만 강력한 데이터 유형 집합을 지원합니다. 각 데이터 유형은 구조화된 정보를 표현하는 데 특정 역할을 하며, 이는 API 응답, 구성 파일, 원격 측정 및 스키마 정의에 필수적입니다.

유형 및 사용 표

JSON 유형 기술설명 일반적인 사용 예
따옴표로 묶인 텍스트 데이터 이름, 이메일
번호 정수 또는 부동 소수점 가격, 지표
목적 키/값 쌍의 컬렉션 API 페이로드
배열 값의 정렬된 목록 컬렉션, 목록
부울 참 또는 거짓 플래그, 기능 토글
null로 누락된 값을 나타냅니다 선택 필드

사용 사례 예시: 전자상거래 API에서 제품 세부 정보는 종종 이러한 모든 유형을 결합하여 완전한 리소스 표현을 구축합니다.


3) JSON과 XML의 차이점은 무엇이고, 각각을 언제 사용해야 합니까?

JSON과 XML은 모두 데이터 교환 형식이지만 구문, 가독성, 유효성 검사 기능 및 지원되는 데이터 구조가 다릅니다. JSON은 단순성과 간결성을 중시하는 반면, XML은 엄격한 구조와 문서 중심의 워크플로를 강조합니다.

비교표

요인 JSON XML
통사론 경량, Java대본과 같은 자세한 태그
데이터 구조 객체와 배열을 자연스럽게 지원합니다 트리 기반 계층적
가독성 더 읽기 쉬움 더 복잡한
검증 JSON 스키마 XSD
적용 사례 API, 구성 문서, SOAP 서비스

사용시기 : 최신 RESTful API와 가벼운 통신에는 JSON을 사용하세요. 문서 마크업, 속성 및 엄격한 검증이 필수적인 경우(예: 은행 시스템이나 SOAP 서비스)에는 XML을 선택하세요.


4) JSON의 유효성을 검사할 수 있는 도구나 방법은 무엇이며, 유효성 검사가 중요한 이유는 무엇입니까?

유효성 검사를 통해 JSON이 스키마 또는 제약 조건에 정의된 예상 구조, 데이터 유형 및 제약 조건을 준수하는지 확인합니다.tract. 유효성 검사가 없으면 애플리케이션이 아무런 오류 메시지 없이 실패하거나 데이터 흐름이 손상될 수 있습니다.

일반적인 검증 방법:

  • JSON 스키마 유효성 검사기(AJV, jsonschema, Python의 jsonschema)
  • 온라인 검증기(JSONLint)
  • IDE 플러그인(VS Code JSON 검증기)
  • API 게이트웨이를 통한 런타임 검증

시나리오 예 : JSON 페이로드를 검증하는 결제 게이트웨이는 거래에 영향을 줄 수 있는 잘못 구성되거나 누락된 필드를 방지합니다.


5) JSON 스키마는 어떻게 작동하며, 기업 환경에서의 수명 주기는 어떻게 됩니까?

JSON 스키마는 JSON 문서의 구조, 데이터 유형 및 유효성 검사 규칙을 정의하는 데 사용되는 어휘입니다. JSON 스키마의 수명 주기는 일반적으로 API 버전 관리와 유사합니다. 즉, 생성, 개선, 테스트, 게시, 적용 및 지원 중단의 라이프사이클을 따릅니다.

수명 주기 단계:

  1. 요구 사항 수집
  2. 기초 계획 작성
  3. 버전 관리 및 테스트
  4. API 통합tracts
  5. 게이트웨이 또는 미들웨어를 통한 시행
  6. 모니터링 및 업데이트
  7. 사용 중단 및 교체

예: 사용자 온보딩 API에는 일관된 데이터 품질을 보장하기 위해 이메일 형식, 연령대, 허용된 역할을 검증하는 스키마가 필요할 수 있습니다.


6) 분산 시스템에서 JSON을 사용하는 데에는 어떤 장점과 단점이 있습니까?

JSON은 이식성과 작은 크기 덕분에 분산 시스템에서 탁월하지만, 바이너리 지원과 스키마 적용 측면에서는 한계가 있습니다.

장단점

장점 단점
가볍고 빠름 네이티브 바이너리 지원 없음
범용 언어 지원 제한된 데이터 유형
사람이 읽을 수 있음 깊이 중첩되면 커질 수 있습니다.
REST와 잘 작동합니다 내장된 주석이 없습니다

예: 고객 메타데이터를 교환하는 마이크로서비스 아키텍처는 JSON의 단순성으로부터 이점을 얻지만, 대용량 이미지 페이로드에는 Base64 인코딩이 필요하므로 크기가 커집니다.


7) 다양한 프로그래밍 언어에서 JSON을 어떻게 파싱하나요? 예를 들어 설명해 주세요.

JSON 파싱에는 일반적으로 문자열을 객체 또는 구조화된 유형으로 변환하는 내장 라이브러리가 사용됩니다. 이 과정은 일반적으로 간단하며 언어 간에 개념적으로 거의 동일합니다.

예 :

Java스크립트:

const obj = JSON.parse(jsonString);

Python:

import json
data = json.loads(json_string)

Java:

JSONObject obj = new JSONObject(jsonString);

분산 애플리케이션에서 API를 사용하거나, 로그를 처리하거나, 구성 파일을 읽을 때 구문 분석은 필수적입니다.


8) API 페이로드에 JSON이 적합한 선택인지 여부를 결정하는 요소는 무엇입니까?

API에 JSON을 선택하는 것은 성능 요구 사항, 페이로드 크기, 클라이언트 호환성 및 데이터 모델의 복잡성에 따라 달라집니다. 팀은 지연 시간, 스키마 엄격성 및 바이너리 전송 요구 사항을 기반으로 Protobuf, YAML 또는 XML과 같은 대체 형식을 평가합니다.

핵심 요인:

  • 클라이언트와의 상호 운용성
  • 엄격한 스키마 적용 필요성
  • 성능 제약
  • 데이터 크기 및 직렬화 오버헤드
  • 툴링 생태계

예: 네트워크가 제한된 IoT 기기는 Protobuf를 선호할 수 있지만, REST API를 호출하는 웹 대시보드는 JSON을 사용하는 것이 가장 좋습니다.


9) JSON에서 주석이 허용되나요? 그 이유를 설명하고 대안을 제시해 주세요.

표준 JSON은 주석이 데이터 파싱을 방해하고 사양에 정의된 엄격한 형식 규칙을 위반할 수 있기 때문에 주석을 허용하지 않습니다. 하지만 개발자는 종종 메타데이터나 구성 관련 메모를 필요로 합니다.

대안 :

  • JSONC(주석이 있는 JSON)를 사용합니다. VS Code 설정
  • 추가 할 _comment JSON 내의 키(구성에서 널리 사용됨)
  • 주석이 필요한 경우 YAML을 사용하세요

예:

{
  "_comment": "Max retries for API calls",
  "retryLimit": 5
}

10) 성능 최적화를 위해 JSON 크기를 줄이는 다양한 방법은 무엇입니까?

JSON 사용량을 줄이면 네트워크 지연 시간, API 처리량, 저장 효율성이 향상됩니다. 직렬화, 전송, 저장 과정에서 다양한 기법을 적용할 수 있습니다.

최적화 방법

  • 최소화(공백 제거)
  • 더 짧은 키 ("fn" 대신 "firstName")
  • 압축(GZIP, Brotli)
  • 중복 중첩을 피하세요
  • 순서가 중요한 경우 객체 대신 배열을 사용하세요
  • 가능한 경우 Base64로 인코딩된 객체를 바이너리 전송으로 교체합니다.

예: Brotli 압축을 통해 최소화된 JSON을 사용하는 모바일 애플리케이션은 대역폭 사용량을 40% 이상 줄일 수 있습니다.


11) JSON은 중첩된 데이터 구조를 어떻게 처리하며, 깊은 중첩의 이점과 단점은 무엇입니까?

JSON은 중첩된 객체와 배열을 통해 복잡한 계층적 데이터를 표현할 수 있습니다. 이는 사용자 프로필, 대시보드, 전자상거래 카탈로그와 같은 엔티티를 모델링하는 데 특히 유용합니다. trac데이터를 생성할 수 있습니다. 하지만 과도한 중첩은 구문 분석 오버헤드를 발생시키고, 가독성을 떨어뜨리며, API 구성을 복잡하게 만들 수 있습니다.tracTS.

딥 네스팅의 장점과 단점

장점 단점
관련 데이터를 논리적으로 구성합니다 읽고 유지하기가 더 어렵습니다
중복된 키를 줄입니다 더 긴 구문 분석 시간
실제 계층적 모델을 지원합니다 증가된 탑재량 크기
복잡한 관계에도 유연함 일부 NoSQL 저장소에서는 쿼리하기 어려움

예:

{
  "order": {
    "customer": {
      "name": "David",
      "address": {
        "street": "45 West Ave",
        "city": "Boston"
      }
    },
    "items": [
      { "id": 1, "qty": 2 },
      { "id": 9, "qty": 1 }
    ]
  }
}

12) JSONP란 무엇이며, 표준 JSON과 어떻게 다른가요? 예를 들어 설명해 보세요.

JSONP(JSON with Padding)는 CORS가 널리 퍼지기 전 브라우저에서 동일 출처 정책(Same-Origin Policy)을 극복하기 위해 역사적으로 사용되었던 기술입니다. 서버는 원시 JSON을 반환하는 대신, 응답을 콜백 함수로 래핑하여 스크립트로 실행할 수 있도록 합니다.

차:

  • JSON은 원시 데이터입니다.
  • JSONP는 다음과 같이 실행됩니다. Java스크립트.

예:

callbackFunction({
  "user": "alex",
  "role": "viewer"
});

JSONP는 대부분의 최신 시스템에서 더 이상 사용되지 않지만 일부 레거시 통합에서는 여전히 JSONP를 사용합니다. <script> 태그 주입이 허용됩니다.


13) JSON을 사용할 때 개발자가 자주 저지르는 실수는 무엇인가요?

일반적인 함정은 일반적으로 구문 오류, 유형에 대한 잘못된 가정, 스키마 위반과 관련이 있습니다. 이러한 실수는 분산 시스템이나 이벤트 기반 파이프라인을 서비스할 때 큰 비용을 초래합니다.

일반적인 오류:

  • 쉼표나 따옴표가 누락되었습니다.
  • 후행 쉼표
  • 지원되지 않는 유형(날짜, 정의되지 않음, 함수) 사용
  • 특수 문자의 잘못된 인코딩
  • JSON 스키마에 대한 유효성 검사를 잊어버림
  • 목적 없는 깊은 중첩

예: 내장하려고 시도 JavaJSON 내부의 스크립트 함수는 JSON이 실행 가능한 코드를 표현할 수 없기 때문에 구문 분석을 중단합니다.


14) 다음과 같은 강력한 형식의 언어에서 JSON을 직렬화하고 역직렬화하는 방법은 무엇입니까? Java 아니면 C#?

강력한 타입 언어는 맵이 필요합니다.ping JSON 구조를 직렬화 및 역직렬화 중에 클래스 또는 모델에 매핑합니다. 이러한 언어는 JSON 키를 이름이 일치하는 속성이나 어노테이션 기반 맵에 바인딩하는 라이브러리에 의존합니다.pings.

Java 예시(잭슨):

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonString, User.class);

C# 예제(System.Text.Json):

User user = JsonSerializer.Deserialize<User>(jsonString);

API에서 응답 객체를 보내거나 구성 모델을 지속할 때 직렬화가 매우 중요합니다.


15) JSON에서 객체 대신 배열을 사용해야 하는 경우는 언제이며, 이 결정에 영향을 미치는 요소는 무엇입니까?

배열은 요소의 순서가 중요하거나 유사한 항목의 집합을 나타낼 때 이상적입니다. 객체는 키 기반 조회가 필요할 때 가장 적합합니다. 올바른 구조를 선택하면 효율성, 가독성, 스키마 명확성이 향상됩니다.

결정 요인

  • 컬렉션에 고유 식별자가 있는지 여부
  • 순서가 중요한가
  • 요소들이 동일한 구조를 공유하는지 여부
  • 키로 빠른 조회가 필요한지 여부

예: 제품 ID 목록에는 배열을 사용하고, 이름으로 키가 지정된 구성 설정에는 객체를 사용합니다.


16) JSON.stringify()와 JSON.parse()의 차이점은 무엇입니까? Java스크립트?

JSON.stringify() 변환 Java스크립트 객체를 JSON 형식의 문자열로 변환하는 동안 JSON.parse() JSON 문자열을 다시 변환합니다. Java스크립트 객체입니다. 이 객체들은 localStorage, API 사용 및 캐싱에 사용되는 표준 직렬화-역직렬화 라이프사이클을 형성합니다.

예:

const json = JSON.stringify({ id: 5 });
const obj = JSON.parse(json);

stringify() 또한 replacer 함수와 간격 매개변수를 지원하므로 디버깅이나 사용자 정의 필터링에 유용합니다.


17) JSON으로 이진 데이터를 표현할 수 있나요? 만약 그렇지 않다면, 개발자들은 어떤 방법으로 이 한계를 극복하나요?

JSON은 기본적으로 이진 데이터를 표현할 수 없습니다. 이를 해결하려면 개발자는 텍스트 안전 인코딩을 사용하여 이진 정보를 직렬화해야 합니다. 이러한 제한은 이미지 처리, 원격 측정 또는 미디어 업로드에서 두드러집니다.

일반적인 접근 방식

  • Base64 인코딩
  • 16진수 인코딩
  • 혼합 페이로드에 multipart/form-data 사용
  • Protobuf와 같은 바이너리 친화적 포맷 사용

예: JSON REST API를 통해 전송된 이미지는 일반적으로 Base64 문자열로 나타나 크기가 약 33% 증가합니다.


18) JSON에서 공백은 어떤 역할을 하나요? 파싱이나 데이터 해석에 영향을 미치나요?

JSON의 공백은 파싱 과정에서 무시되며 의미론에 영향을 미치지 않습니다. 공백은 순전히 가독성을 위해 존재합니다. 최소화를 통해 공백을 제거하면 대역폭이 줄어들고 성능이 향상됩니다. 그러나 과도한 공백은 대용량 JSON 파일을 수동으로 관리하기 어렵게 만들 수 있습니다.

예: 아래 두 버전은 모두 동일한 객체를 생성합니다.

Readable:

{ "id": 1, "name": "Sam" }

축소됨:

{"id":1,"name":"Sam"}

19) JSON 웹 토큰(JWT)은 JSON을 어떻게 사용하며, 그 특징은 무엇입니까?

JWT는 Base64로 인코딩된 JSON 객체를 사용합니다.URL 안전하게 고정하기 위한 끈 transmit 당사자 간의 정보 교환을 위한 것입니다. 일반적인 JWT는 헤더, 페이로드 및 서명으로 구성됩니다. 이러한 구성 요소를 통해 분산 시스템 및 마이크로서비스 전반에 걸쳐 상태 비저장 인증이 가능합니다.

JWT의 특징

  • 컴팩트하고 URL-안전한
  • 클레임이 있는 자체 포함
  • 정직성을 보장하기 위해 서명됨
  • 무상태 아키텍처에서 잘 작동합니다.

예: 페이로드는 다음과 같은 클레임을 포함하는 간단한 JSON 객체입니다. sub, iat예산 및 exp.


20) API나 저장 시스템에서 대용량 JSON 파일을 효율적으로 관리하는 데 도움이 되는 전략은 무엇입니까?

대용량 JSON 파일은 I/O 속도를 저하시키고, 메모리 사용량을 증가시키며, 지연 시간을 단축시킬 수 있습니다. 효율적인 전략에는 스트리밍, 페이지네이션, 선택적 직렬화, 스키마 설계, 압축 등이 포함됩니다.

효과적인 전략

  • 스트림 파싱(SAX 유사)
  • 서버 측에서의 페이지 매김 및 필터링
  • 모놀리식 문서를 더 작은 청크로 분할
  • GZIP 또는 Brotli를 사용한 JSON 압축
  • 큰 섹션을 별도로 저장(예: S3 + 메타데이터 JSON)

예: 보고 API는 300MB JSON 파일을 메모리에 로드하는 대신 결과를 스트리밍할 수 있습니다.


21) JSON과 YAML의 차이점은 무엇이고, 각각을 언제 사용해야 합니까?

JSON과 YAML은 모두 구조화된 데이터를 표현하지만, 설계 철학은 서로 다릅니다. JSON은 엄격하고 가벼우며 기계에 최적화된 반면, YAML은 표현력이 뛰어나고 인간 중심적이며 들여쓰기를 사용합니다. 가독성 요구 사항, 도구, 환경 제약 조건, 구성 또는 데이터 교환의 수명 주기에 따라 적합한 방식을 선택합니다.

주요 차이점

요인 JSON
통사론 엄격한 중괄호와 쉼표 들여쓰기 기반
가독성 더 단단한 매우 읽기 쉽다
데이터 타입 한정 세트 더 풍부한 유형
코멘트 허용되지 않음 지원
용법 API, 스토리지 구성, 파이프라인

사용 사례 예: 가독성 측면에서 YAML은 Kubernetes 매니페스트에 더 선호되는 반면, JSON은 REST API의 기반으로 남아 있습니다.


22) 웹 개발에서 JSON을 사용할 수 있는 다양한 방법은 무엇입니까?

JSON은 프런트엔드와 백엔드 서비스 간의 원활한 통신을 가능하게 하여 최신 웹 애플리케이션에서 핵심적인 역할을 합니다. API, 구성 관리, 앱 설정 저장, 캐싱 및 클라이언트 측 데이터 지속성에 사용됩니다. 또한 JSON은 React와 같은 프레임워크에서 컴포넌트 렌더링과 AJAX 호출 시 데이터 전송을 지원합니다.

일반적인 용도 :

  • REST API 응답
  • AJAX 페치 호출
  • 클라이언트 측 상태 관리(localStorage/sessionStorage)
  • 구성 파일
  • GraphQL 및 NoSQL 저장소
  • 웹후크 및 이벤트 알림

예: React 앱은 종종 Node.js 백엔드에서 JSON을 가져와서 UI 구성 요소를 수분 공급합니다.


23) JSON을 구문 분석할 때 오류를 어떻게 처리하시나요? 그리고 가장 좋은 오류 처리 방식을 결정하는 요소는 무엇인가요?

JSON 파싱 오류를 처리하려면 예외를 포착하고, 입력 형식을 검증하고, 대체 로직을 제공해야 합니다. 이러한 전략에 영향을 미치는 요소에는 API 호환성 등이 있습니다.trac엄격성, 고객 기대치 및 시스템 복원력 요구 사항.

구혼:

  • 구문 분석 작업 주변의 Try-catch 블록
  • 구문 분석 전 입력 검증
  • 스키마 기반 검증
  • 사용자 친화적인 오류 메시지 반환
  • 디버깅을 위한 로깅 문제

예:

Node.js에서:

try {
  const data = JSON.parse(body);
} catch (err) {
  console.error("Malformed JSON");
}

24) JSON.stringify()에서 replacer와 space 매개변수의 목적은 무엇입니까?

replacer 함수는 객체 속성의 선택적 직렬화를 허용하고, space 매개변수는 들여쓰기를 제어하여 가독성을 향상시킵니다. 이러한 옵션은 디버그 출력을 향상시키고, 민감한 데이터를 보호하며, 로그 또는 문서에 대한 사용자 지정 서식을 생성합니다.

예:

JSON.stringify(obj, ["id", "name"], 2);

이점:

  • 출력에 대한 세밀한 제어
  • 기밀 또는 불필요한 필드 생략
  • 개발 환경에서 가독성 향상

25) API는 일반적으로 어떻게 JSON을 사용하고 생성하며, 일관성을 보장하기 위한 모범 사례는 무엇입니까?

API는 표준화된 콘텐츠 유형을 준수하여 JSON을 사용하고 생성합니다.application/json스키마 정의, 버전 관리 규칙 및 오류 처리 등trac일관성은 클라이언트와 마이크로서비스 간의 원활한 통합을 보장합니다.

모범 사례

  • 포함 Content-Type: application/json
  • 예측 가능한 필드 이름(snake_case 또는 camelCase)을 사용하세요.
  • JSON 스키마를 사용하여 요청 검증
  • 구조화된 오류 객체 제공
  • 버전이 지정된 엔드포인트 유지 관리

예: 결제 API 버전은 다음과 같습니다. /v2/transactions 요금, 환불, 오류에 대한 표준화된 JSON 객체를 출력할 수 있습니다.


26) JSON 스트리밍이란 무엇이며, 일반적으로 어디에 구현됩니까?

JSON 스트리밍은 하나의 큰 페이로드가 아닌 점진적으로 데이터를 전달하여 대규모 데이터 세트의 성능을 향상시킵니다. JSON 스트리밍은 일반적으로 실시간 시스템, 로그 처리기, 분석 엔진 및 데이터 파이프라인에 구현됩니다.

장점

  • 메모리 풋 프린트 감소
  • 첫 번째 바이트까지의 시간 단축
  • 대규모 데이터 세트를 처리하는 능력

예: 서버에서 분석 대시보드로 스트리밍 로그를 전송하면 기가바이트 단위의 데이터를 한 번에 로드하지 않아도 됩니다.


27) JSON은 특수 문자를 어떻게 처리하며, 어떤 규칙이 적용되나요?ping?

JSON은 다음에서 파생된 이스케이프 시퀀스를 사용합니다. Java안전한 전송 및 구문 분석을 위한 스크립트입니다. 따옴표, 백슬래시, 제어 코드와 같은 특수 문자는 올바르게 인코딩되어야 합니다.

일반적인 이스케이프 시퀀스

캐릭터 이스케이프드 폼
견적 \"
백 슬래시 \\
뉴 라인 \n
\t
유니 코드 \uXXXX

예:

{ "message": "Hello\nWorld" }

부적절한 탈출ping 파서 오류 및 API 페이로드 손상으로 이어집니다.


28) JSON API에서 이전 버전과의 호환성을 보장하는 다양한 방법은 무엇입니까?

여러 버전의 클라이언트가 동시에 상호 작용하는 엔터프라이즈 시스템에서는 하위 호환성이 필수적입니다. JSON API는 일반적으로 버전 관리 전략, 선택적 필드, 신중한 지원 중단, 그리고 스키마 진화 방법을 통해 이를 달성합니다.

호환성 기술

  • 이름 변경이나 삭제 대신 필드 추가
  • 누락된 필드에 기본값 사용
  • 버전이 지정된 엔드포인트(/v1/, /v2/)
  • 우아한 사용 중단 주기
  • 검증을 위한 엄격한 JSON 스키마 유지

예: 새로운 middleName 선택 사항인 경우 기존 클라이언트에 영향을 주지 않고 필드를 추가할 수 있습니다.


29) 전송 중과 저장 중에 JSON 데이터를 어떻게 보호합니까?

보안에는 암호화, 인증, 권한 부여 및 제어된 접근 패턴이 포함됩니다. JSON 자체에는 내장된 보안 기능이 없으므로 시스템은 프로토콜과 인프라를 통해 데이터를 보호합니다.

보안 조치

  • 전송 암호화를 위한 HTTPS/TLS
  • 인증을 위한 JWT
  • 인증을 위한 OAuth2
  • 휴면 암호화(KMS, Vault)
  • 입력 검증 및 정리
  • 로그에 민감한 데이터 포함 방지

예: API는 다운스트림 시스템에서 주입 스타일 공격을 방지하기 위해 검증되지 않은 JSON 페이로드를 거부해야 합니다.


30) 설정 파일에 JSON을 사용하는 데에는 어떤 단점이 있나요?

JSON 구성 파일은 주석이 부족하고, 구문이 엄격하며, 복잡한 유형이나 여러 줄 문자열을 우아하게 표현할 수 없다는 제약이 있습니다. 이러한 제약으로 인해 많은 플랫폼에서 수명 주기가 긴 구성에는 YAML이나 TOML을 선호합니다.

단점

  • 댓글 지원 없음
  • 장황한 에스카ping 문자열의 경우
  • 쉼표 누락으로 인한 오류
  • 제한된 유형 옵션
  • 대규모 DevOps 시스템에서는 관리하기 어려움

예: Kubernetes는 일상적인 구성에서 JSON을 폐기했습니다. YAML은 운영자가 직접 편집하기가 더 쉽기 때문입니다.


31) JSON 병합 패치란 무엇이고, JSON 패치와 어떻게 다릅니까?

JSON 병합 패치(RFC 7396)는 원본 문서에 패치 객체를 적용하여 JSON 문서에 부분 업데이트를 수행하는 간소화된 방법을 제공합니다. 반면, JSON 패치(RFC 6902)는 작업 목록(add, remove, replace등)을 사용하여 세부적인 작업 기반 수정을 수행할 수 있습니다. Merge Patch는 간단한 업데이트에 편리하고, JSON Patch는 구조화된 변환에 대한 정밀한 제어를 제공합니다.

JSON 병합 패치와 JSON 패치의 차이점

제품 특장점 JSON 병합 패치 JSON 패치
옵션 간단한 객체 연산 배열
삭제 필드를 설정하세요 null 명시적으로 사용하세요 remove op
복잡성 읽기 쉬운 더 자세하고 정확하게
가장 좋은 얕은 업데이트 복잡한 문서 편집

예:

패치 병합:

{ "name": "John" }

패치 :

[{ "op": "replace", "path": "/name", "value": "John" }]

32) JSON에서 날짜와 시간을 표현하는 다양한 방법은 무엇이며, 그 선택에 영향을 미치는 요소는 무엇입니까?

JSON은 기본 날짜 유형을 정의하지 않으므로 개발자는 날짜를 문자열, 숫자 또는 사용자 지정 형식으로 인코딩해야 합니다. 올바른 접근 방식은 시간대 처리, 가독성, 상호 운용성 및 사용 시스템의 기대치에 따라 달라집니다.

일반적인 표현

  • ISO 8601 문자열("2024-03-15T10:00:00Z")
  • 유닉스 타임스탬프(1710496800)
  • 사용자 정의 형식(권장하지 않음)

선택에 영향을 미치는 요소:

  • 클라이언트 플랫폼 구문 분석 기능
  • 서비스 간 일관성
  • 현지화 및 시간대 요구 사항
  • 스키마 및 contract 요구사항

예: API는 일반적으로 시간대 모호성을 피하기 위해 ISO 8601을 사용합니다.


33) JQ와 같은 도구를 사용하여 JSON을 어떻게 변환하나요? 그리고 이것이 널리 사용되는 이유는 무엇인가요?

jq JSON 구조의 필터링, 변환, 쿼리 및 재구성을 지원하는 JSON용 명령줄 프로세서입니다. 표현력이 뛰어난 쿼리 구문과 성능 덕분에 DevOps, 데이터 파이프라인, CI/CD 워크플로 및 로그 처리 분야에서 널리 사용됩니다.

예:

jq '.users[].name' data.json

인기 있는 이유:

  • 빠르고 가벼운
  • 자동화에 이상적
  • 복잡한 변환을 지원합니다
  • 스트림 처리에 적합

Kubernetes, AWS CLI, Linux 파이프라인과 함께 자주 사용됩니다.


34) JSON 기반 통신에서 MIME 유형의 역할은 무엇입니까?

MIME 유형(미디어 유형)은 데이터의 형식을 지정합니다. transmitJSON은 표준 유형을 사용하여 클라이언트와 서버에 본문 내용을 해석하는 방법을 알려주므로 상호 운용성과 유효성 검사가 향상됩니다.

일반적인 JSON MIME 유형

  • application/json
  • application/merge-patch+json
  • application/geo+json
  • application/vnd.api+json (JSON:API 사양)

예:

HTTP 헤더:

Content-Type: application/json

올바른 MIME 유형을 사용하면 클라이언트가 데이터를 올바르게 구문 분석하고 페이로드를 잘못 해석하는 것을 방지할 수 있습니다.


35) JSON Lines(JSONL)란 무엇이고, 어디에 유용합니까?

JSON Lines(또는 NDJSON)는 파일의 각 줄에 JSON 객체가 포함된 형식입니다. 이를 통해 스트리밍, 증분 읽기 및 대용량 데이터의 효율적인 처리가 가능합니다.

이상적인 경우 :

  • 로그 집계
  • 빅데이터 처리
  • 기계 학습 파이프라인
  • 실시간 분석
  • ETL 워크플로

예:

{"id":1,"event":"login"}
{"id":2,"event":"view"}

줄 단위의 특성으로 인해 메모리 효율성이 향상되고 병렬 소비가 가능합니다.


36) 잘 설계된 JSON API 응답의 특징은 무엇입니까?

잘 설계된 JSON 응답은 예측 가능하고, 일관성 있고, 검증되었으며, 자명합니다. 적절한 메타데이터, 명확하게 명명된 필드, 그리고 표준화된 오류 구조를 포함해야 합니다.

형질

  • 일관된 명명 규칙
  • 명확한 리소스 표현
  • 관련 있는 경우 메타데이터 포함
  • 구조화된 오류 대응 모델
  • 강력한 스키마 적용
  • 깊은 중첩 방지

예: 좋은 오류 객체에는 다음이 포함됩니다. code, message, details, 및 선택 사항 trace 식별자.


37) JSON은 NoSQL 데이터베이스와 어떻게 통합되며, 어떤 이점을 제공합니까?

JSON은 다음과 같은 문서 기반 NoSQL 데이터베이스와 완벽하게 통합됩니다. MongoDB, CouchDB예산 및 DynamoDB이러한 시스템은 JSON과 유사한 문서를 기본적으로 저장하므로 유연한 스키마와 빠른 반복이 가능합니다.

장점

  • 스키마 유연성
  • 계층적 데이터의 자연스러운 표현
  • 중첩된 필드의 쉬운 인덱싱
  • 빠른 개발 주기
  • JSON 기반 쿼리 언어

예: MongoDB JSON의 바이너리 슈퍼셋인 BSON을 사용하여 효율적인 저장과 형식화된 데이터 필드를 구현합니다.


38) JSON과 BSON의 차이점은 무엇인가요?

BSON(바이너리 JSON)은 JSON을 확장하여 데이터 유형을 추가하고 더 빠른 탐색을 가능하게 하는 바이너리 표현 방식입니다. JSON은 텍스트 기반이며 이식성에 최적화된 반면, BSON은 효율성과 더욱 풍부한 구조에 최적화되어 있습니다.

주요 차이점

제품 특장점 JSON BSON
옵션 본문 이진
지원되는 유형 제한된 Rich (날짜, int32, int64, 이진)
속도 분석이 더 느림 빠른 순회
중량 간단한 문서의 경우 더 작음 메타데이터로 인해 더 커짐
적용 사례 API, 구성 MongoDB 스토리지

예: BSON은 형식화된 정수에 대한 효율적인 인덱스 조회를 제공하는데, 이는 JSON에서는 기본적으로 수행할 수 없는 기능입니다.


39) JSON을 CSV, XML, YAML 등의 다른 형식으로 어떻게 변환하나요? 그리고 이것이 왜 필요할 수 있나요?

이기종 시스템 통합, 데이터 마이그레이션 또는 분석 수행 시에는 변환이 필요합니다. 다음과 같은 도구가 있습니다. Python 스크립트, jQuery, Node.js 유틸리티, 온라인 변환기를 사용하면 스키마를 기반으로 구조화된 변환이 가능합니다.

전환 이유

  • BI 도구에는 CSV가 필요합니다.
  • 레거시 시스템에는 XML이 필요합니다.
  • DevOps 파이프라인은 YAML을 선호합니다.
  • 머신 러닝 시스템에는 표 형식의 데이터가 필요합니다.

예: JSON 로그를 CSV로 변환하면 BigQuery나 Pandas와 같은 분석 플랫폼으로 쉽게 가져올 수 있습니다.


40) JSON에서 열거형을 표현하는 다양한 방법은 무엇이며, 각각의 장단점은 무엇입니까?

JSON의 열거형은 명확성과 스키마 제약 조건에 따라 문자열, 숫자 또는 객체를 사용하여 표현할 수 있습니다. 최적의 선택은 가독성, 유효성 검사, 그리고 개발자 경험의 균형을 고려하는 것입니다.

열거형 표현 비교

대표 장점 단점
문자열 Readable 그리고 자명하다 오타가 발생하기 쉽다
Numbers 컴팩트하고 효율적 해석하기 어렵다
사물 메타데이터로 확장 가능 말 수가 많은

예:

{ "status": "APPROVED" }

문자열 열거형은 표현력이 풍부하고 검증하기 쉽기 때문에 대부분의 API에서 선호됩니다.


41) JSON 기반 API에 대한 버전 관리 전략을 어떻게 설계하시나요? 그리고 버전 관리 수명 주기에 영향을 미치는 요소는 무엇인가요?

버전 관리는 API가 진화하더라도 기존 클라이언트가 손상되지 않도록 보장합니다. 좋은 전략은 이전 버전과의 호환성, 수명 주기 관리, 통신 프로토콜 및 장기적인 거버넌스를 고려하는 것입니다. JSON 기반 API는 일반적으로 의미론적 버전 관리를 사용하여 예측 가능한 방식으로 변경 사항을 적용합니다.

버전 관리 접근 방식

  • URI 버전 관리(/v1/users)
  • 헤더 기반 버전 관리(Accept: application/vnd.company.v2+json)
  • 매개변수 기반 버전 관리(?version=3)
  • MIME 유형을 사용한 콘텐츠 협상

영향을 미치는 요인:

  • 변경 속도
  • 소비자 다양성
  • 사용 중단 정책
  • 거버넌스 및 API 라이프사이클 관리

예: 엔터프라이즈 API는 기존 모바일 앱을 지원하기 위해 종종 두 개의 병렬 주요 버전을 유지 관리합니다.


42) JSON을 압축하는 다양한 방법은 무엇이며, 성능 면에서는 어떻게 비교됩니까?

압축은 페이로드 크기를 줄이고, 데이터 전송 속도를 높이며, 네트워크 비용을 절감합니다. 압축 방식 선택은 지연 시간 요구 사항, CPU 가용성 및 클라이언트 호환성에 따라 달라집니다.

압축 방법 비교

방법 장점 단점
GZIP 폭넓게 지원, 압축력 좋음 적당한 CPU 비용
브로 틀리 우수한 압축률 높은 레벨에서는 더 느립니다
꺾다 빠르고 가벼운 낮은 압축
ZSTD 매우 빠르고 효율적입니다 이전 클라이언트에서는 널리 지원되지 않음

예: 웹 서버는 일반적으로 정적 JSON 파일에 Brotli를 사용하여 GZIP보다 압축 효율성을 최대 20% 높입니다.


43) JSON을 직렬화할 때 순환 참조를 어떻게 감지하고 방지합니까?

순환 참조는 객체가 서로를 참조하거나 자기 자신을 참조할 때 발생하며, 직렬화 과정에서 무한 재귀를 유발합니다. 순환 참조를 방지하려면 신중한 설계나 직렬화 제어 메커니즘이 필요합니다.

예방 기술

  • 객체 관계 재설계
  • 사용자 정의 직렬화 논리를 사용합니다(replacer in JSON.stringify())
  • 참조를 ID로 변환
  • 원형 구조를 감지하는 라이브러리 활용(예: flatted, circular-json)

예:

const seen = new WeakSet();
JSON.stringify(obj, (key, value) => {
  if (typeof value === "object" && value !== null) {
    if (seen.has(value)) return;
    seen.add(value);
  }
  return value;
});

44) HAL(하이퍼텍스트 애플리케이션 언어)이란 무엇이고 JSON API를 어떻게 향상시키나요?

HAL은 응답에 링크를 직접 삽입하여 JSON API를 강화하는 경량 하이퍼미디어 형식입니다. 이를 통해 검색 기능을 제공하여 클라이언트가 문서에만 의존하지 않고도 API를 탐색할 수 있습니다.

형질

  • 사용 _links _embedded 사물
  • 하이퍼미디어 중심 디자인을 장려합니다
  • REST 및 HATEOAS와 함께 작동합니다.
  • API 자체 검색을 개선합니다.

예:

{
  "_links": {
    "self": { "href": "/users/5" },
    "orders": { "href": "/users/5/orders" }
  }
}

45) JSON 기반 API에서 페이지 매김을 어떻게 구현하나요? 그리고 페이지 매김 유형에는 어떤 것들이 있나요?

페이지네이션은 클라이언트에게 반환되는 데이터의 양을 제어하여 성능과 사용성을 향상시킵니다. JSON API에는 일반적으로 페이지 번호, 제한, 다음/이전 링크를 설명하는 메타데이터가 포함됩니다.

페이지 번호 유형

타입 형질 이상적인 시나리오
오프셋 기반 사용 limit offset 안정적인 주문이 있는 데이터베이스
커서 기반 인코딩된 커서 ID를 사용합니다. 대규모 동적 데이터
페이지 기반 간단한 페이지 번호를 사용합니다 간단한 응용 프로그램
키셋 페이지 매김 인덱싱된 키를 사용합니다 대용량 데이터 세트, 저지연 요구 사항

예:

{
  "data": [...],
  "paging": { "next": "/items?cursor=xyz", "limit": 20 }
}

46) 다음과 같은 도구를 사용하여 JSON API를 어떻게 테스트합니까? Postman뉴먼, 또는 cURL?

JSON API를 테스트하려면 응답 형식, 상태 코드, 페이로드 스키마 및 동적 동작의 유효성을 검사해야 합니다. 도구는 자동화, 어설션 및 스크립팅 기능을 제공합니다.

테스트 접근 방식

  • 사용 Postman API 호출을 위한 컬렉션
  • Newman CI 파이프라인을 통한 자동 실행
  • cURL 간편한 명령줄 테스트를 위해
  • 스키마 검증 테스트
  • 모의 서버tract 테스트

예:

-X GET https://api.example.com/users -H "Accept: application/json"

47) JSON 객체의 키 이름을 지정하는 가장 좋은 방법은 무엇입니까?

키 명명은 가독성, 일관성 및 사용 편의성에 영향을 미칩니다. 잘못된 명명은 구문 분석 문제를 야기할 수 있습니다.trac혼란과 하위 호환성 문제가 발생합니다.

모범 사례

  • camelCase 또는 snake_case를 일관되게 사용하세요
  • 설명적이지만 간결한 이름을 사용하세요
  • 전 세계적으로 알려지지 않은 약어는 사용하지 마십시오.
  • 공백이나 특수문자는 사용하지 마세요
  • 숫자로 키를 시작하지 마십시오

예:

좋은 : "createdAt"

나쁜: "crt_dt" or "1timestamp"


48) JSON 응답에서 메타데이터의 역할은 무엇이며, 일반적으로 어떤 유형의 메타데이터가 포함됩니까?

메타데이터는 클라이언트가 페이로드를 처리하고 해석하는 데 도움이 되는 보조 정보를 JSON 응답에 추가하여 사용성, 검색 가능성, 명확성을 향상시킵니다.

일반적인 메타데이터 유형

  • 페이지 매김 세부 정보
  • 요청 식별자
  • 타임 스탬프
  • 버전 정보
  • 하이퍼미디어 링크
  • 성능 지표

예:

{
  "data": {...},
  "meta": { "requestId": "abc-123", "timestamp": "2025-11-14T10:00:00Z" }
}

49) 명확성과 디버깅 용이성을 보장하기 위해 JSON API에서 오류 객체를 어떻게 디자인합니까?

잘 설계된 오류 객체는 기계가 읽을 수 있는 필드와 사람이 읽을 수 있는 설명을 제공합니다. 구조적이고, 일관성 있으며, 정보를 제공해야 합니다.

좋은 오류 모델의 특성

  • 표준화된 필드 포함(code, message, details)
  • 실행 가능한 설명을 제공하세요
  • 상관관계 ID를 포함하세요 tracING
  • API 전반에 걸쳐 예측 가능한 구조를 따르세요

예:

{
  "error": {
    "code": "INVALID_INPUT",
    "message": "Email format is not valid",
    "traceId": "xyz-99"
  }
}

50) 서버에서 동적으로 JSON을 생성하는 다양한 방법은 무엇이며, 최적의 선택을 결정하는 요인은 무엇입니까?

서버는 수동 객체 생성, 직렬화, 템플릿 또는 ORM 통합을 통해 JSON을 생성합니다. 최적의 방법은 성능 요구 사항, 코드 유지 관리 용이성 및 프레임워크 기능에 따라 달라집니다.

분석기법

  • 수동 객체 구축
  • Serializer 라이브러리(Jackson, Gson, Newtonsoft)
  • ORM-to-JSON 맵ping (하이버네이트, 시퀄라이즈)
  • 템플릿(콧수염, 핸들바)
  • 스트리밍 JSON 생성기

선택에 영향을 미치는 요소:

  • 성능 요건
  • 유형 안전 요구 사항
  • 데이터 모델의 복잡성
  • 출력 형식 제어

예: 고성능 시스템은 과도한 메모리 사용을 피하기 위해 스트리밍 직렬화를 사용하는 경우가 많습니다.

🔍 실제 시나리오와 전략적 대응을 포함한 최고의 JSON 인터뷰 질문

아래에는 JSON과 관련된 지식, 행동, 상황적 측면을 다루는 10개의 타겟형 면접 질문과 강력한 예시 답변이 나와 있습니다.

1) JSON이란 무엇이고 현대 애플리케이션에서 널리 사용되는 이유는 무엇입니까?

후보자에게 기대하는 것: JSON 기본 사항과 팀이 JSON을 사용하는 이유에 대한 이해.

예시 답변: JSON은 사람이 읽고 쓰기 쉽고 기계가 파싱하기 쉬운 가벼운 텍스트 기반 데이터 교환 형식입니다. 웹 기술과 원활하게 통합되고, 구조화된 데이터를 지원하며, 서버와 클라이언트 간의 효율적인 통신을 가능하게 하기 때문에 널리 사용됩니다.


2) 기술적인 지식이 없는 이해 관계자에게 JSON과 XML의 차이점을 어떻게 설명하시겠습니까?

후보자에게 기대하는 것: 기술적 개념을 명확하게 전달하는 능력.

예시 답변: JSON은 간단한 키-값 쌍과 배열을 사용하여 데이터를 표현하는 반면, XML은 중첩된 태그를 사용합니다. JSON은 간결하고, 구문 분석이 쉬우며, 최신 API와 더 잘 호환되는 경향이 있습니다. 기술 지식이 부족한 사람에게 JSON은 애플리케이션 간에 더 빠르게 교환할 수 있는 더 가볍고 깔끔한 구조화된 정보의 형태로 설명될 수 있습니다.


3) 구조가 제대로 구성되지 않은 JSON 파일을 다루었던 경험을 설명해 주세요. 어떻게 해결하셨나요?

후보자에게 기대하는 것: 문제 해결과 회복력.

예시 답변: 이전 직장에서는 일관성 없는 JSON을 제공하는 타사 서비스를 담당했습니다. 스키마 검사를 포함한 유효성 검사 계층을 구축하고, 명확한 오류 처리를 구현하고, 제공업체에 필요한 형식을 문서화하여 문제를 해결했습니다. 그 결과, 실패율이 낮은 안정적인 통합 파이프라인을 구축할 수 있었습니다.


4) 애플리케이션에서 JSON을 사용하기 전에 어떻게 검증하나요?

후보자에게 기대하는 것: 모범 사례와 안전 조치에 대한 이해.

예시 답변: 저는 일반적으로 JSON 스키마와 같은 스키마 검증 도구를 사용하여 JSON의 유효성을 검사합니다. 또한 구조 검사, 유형 검증, 누락된 필드에 대한 대체 처리도 수행합니다. 이를 통해 애플리케이션이 신뢰할 수 있고 예측 가능한 데이터만 처리하도록 보장합니다.


5) 프로덕션 사고 중에 API가 잘못된 JSON을 반환하는 경우, 첫 번째 단계는 무엇입니까?

후보자에게 기대하는 것: 압박 속에서도 명확한 의사결정을 내립니다.

예시 답변: 첫 번째 단계는 잘못된 JSON이 외부 API에서 발생한 것인지, 아니면 내부 처리 과정에서 발생한 것인지 확인하여 문제를 격리하는 것입니다. 문제가 확인되면 불완전한 페이로드를 삭제하고 담당자에게 알리는 등의 임시 안전 조치를 시행합니다. 이러한 접근 방식은 다운스트림 시스템을 보호하는 동시에 조사가 진행될 수 있도록 합니다.


6) JSON 데이터 처리를 최적화한 프로젝트에 대해 말씀해 주세요. 어떤 점이 개선되었나요?

후보자에게 기대하는 것: 실제 최적화 경험.

예시 답변: 이전 직장에서는 중복 필드를 제거하고 더욱 컴팩트한 구조로 전환하여 모바일 애플리케이션의 페이로드 크기를 줄였습니다. 이를 통해 네트워크 오버헤드가 감소하고 최종 사용자의 응답 시간이 눈에 띄게 향상되었습니다.


7) 깊이 중첩된 JSON 객체를 다룰 때 어떤 전략을 사용하시나요?

후보자에게 기대하는 것: 복잡성에 대한 접근 방식.

예시 답변: 중첩된 객체를 더 작은 논리적 구성 요소로 나누고, 안전한 접근을 위한 도우미 함수를 만들고, 필요한 경우 데이터 구조를 평면화합니다. 이를 통해 데이터 관리가 더 쉬워지고, 오류가 줄어들며, 코드 가독성이 향상됩니다.


8) JSON 스키마의 목적은 무엇이며, 언제 사용합니까?

후보자에게 기대하는 것: 관련 표준에 대한 지식.

예시 답변: JSON 스키마는 JSON 데이터의 구조, 필수 필드, 유형 및 제약 조건을 정의합니다. API 구축, 외부 서비스와의 통합, 사용자 생성 입력의 유효성 검사 등을 통해 예측 가능하고 안전한 데이터 처리를 보장합니다.


9) 대용량 JSON 페이로드로 인해 발생하는 성능 문제를 어떻게 진단할지 설명하세요.

후보자에게 기대하는 것: 성능 문제 해결 전략.

예시 답변: 먼저 페이로드 크기, 파싱 시간, 메모리 사용량을 측정합니다. 그런 다음 불필요한 필드를 파악하고, 반복적인 구조를 압축하고, 페이지네이션이나 증분 로딩의 가능성을 평가합니다. 필요한 경우, 다른 직렬화 형식을 벤치마킹합니다.


10) 서로 다른 형식을 사용하는 시스템 간에 JSON을 변환할 때 데이터 정확도를 어떻게 유지하나요?

후보자에게 기대하는 것: 정확도, 정밀도 및 지도ping 인식.

예시 답변: 이전 직장에서는 견고한 지도를 구축하여 정확성을 확보했습니다.ping 단위 테스트, 필드 수준 변환 및 예상 구조와 출력을 비교하는 자동 유효성 검사를 포함하는 계층을 만들었습니다. 이를 통해 데이터 손실을 방지하고 통합 프로세스 전반에 걸쳐 일관된 형식을 보장했습니다.

이 게시물을 요약하면 다음과 같습니다.