Spring 기술면접 예상질문 미리보기 <6>

Primary Key/Foreign Key, HTTP 메서드, CORS, 브라우저의 작동 방식 질문들. 뭐라고 답해야 할까?
Aug 02, 2024
Spring 기술면접 예상질문 미리보기 <6>
 
💡
스프링(Spring)은 네이버, 카카오, 쿠팡, 무신사 등 국내 기업에서 많이 쓰이는 Java 기반 백엔드 개발 프레임워크죠. 현재 스프링 기술 면접 준비를 하고 계시다면 이번 아티클에 주목해주세요. 많이 물어보시는 스프링 기술 면접 질문을 추렸습니다. 예상 질문부터 수강생의 답변과 멘토님의 피드백까지 한눈에 확인해보세요.
 
 

Q (1). Primary Key, Foreign Key에 대해 설명해주세요.

핵심 키워드 : 고유값, 연관 관계, 참조, Join

수강생 답변

Primary Key(기본키)는 데이터베이스 테이블에서 각 행(row)을 고유하게 식별하는 열(column) 또는 열의 조합입니다. 기본키는 해당 테이블에서 중복되지 않아야 하며, 모든 행은 기본키 값을 가져야 합니다. 주로 식별자 (identifier)로 사용되며, 예를 들어 학생 정보를 저장하는 테이블에서 "학번" 열을 기본키로 지정할 수 있습니다. 기본키는 테이블 내의 각 행을 고유하게 식별하기 때문에 검색, 수정 및 삭제 작업 등에서 매우 유용합니다.
Foreign Key(외래키)는 한 테이블의 열(column)이 다른 테이블의 기본키(primary key)를 참조하는 역할을 합니다. 외래키는 다른 테이블과의 관계(Relationships)를 형성하여 데이터 간의 일관성과 무결성(Integrity)을 유지하는 데 사용됩니다. 예를 들어, "주문" 테이블에서 "고객 ID"라는 열은 "고객" 테이블의 기본키인 "고객 ID"와 연결됩니다. 이렇게 함으로써 주문과 해당 고객 사이에 관계가 형성됩니다. 외래키 제약 조건(Foreign Key Constraint)은 데이터베이스 시스템에서 외래키 값들을 검증하고 관리하는 데 사용됩니다. 이 제약 조건은 부모(참조하는) 테이블의 값과 일치하지 않거나 NULL일 경우에도 적용됩니다.
기본적으로 Primary Key와 Foreign Key는 서로 다른 개념입니다. Primary Key는 한 개체(entity, 예: 학생, 주문 등)를 고유하게 식별하기 위한 것으로 해당 열 자체가 Unique하고 Not Null 속성을 가집니다. 반면에 Foreign Key는 다른 개체와의 관계를 형성하기 위한 것으로 다른 테이블의 Primary Key 값을 참조합니다.
 

멘토님 피드백

PK(기본키)와 FK(외래키)에 대한 정의와 특징을 잘 이야기하고 있고, PK와 FK를 비교 설명하는 것도 적절히 잘한 답변입니다.
 

😄 좋은 부분

1) 기본키, 외래키에 대한 정의와 특징을 설명한 부분
  • “Primary Key(기본키)는 데이터베이스 테이블에서 각 행(row)을 고유하게 식별하는 열(column) 또는 열의 조합입니다. 기본키는 해당 테이블에서 중복되지 않아야 하며, 모든 행은 기본키 값을 가져야 합니다. 주로 식별자 (identifier)로 사용되며, 예를 들어 학생 정보를 저장하는 테이블에서 "학번" 열을 기본키로 지정할 수 있습니다.”
  • “Foreign Key(외래키)는 한 테이블의 열(column)이 다른 테이블의 기본키(primary key)를 참조하는 역할을 합니다. 외래키는 다른 테이블과의 관계(Relationships)를 형성하여 데이터 간의 일관성과 무결성(Integrity)를 유지하는 데 사용됩니다.”
 
2) 기본키, 외래키를 비교 설명한 부분
  • “기본적으로 Primary Key와 Foreign Key는 서로 다른 개념입니다. Primary Key는 한 개체(entity, 예: 학생, 주문 등)를 고유하게 식별하기 위한 것으로 해당 열 자체가 Unique하고 Not Null 속성을 가집니다. 반면에 Foreign Key는 다른 개체와의 관계를 형성하기 위한 것으로 다른 테이블의 Primary Key 값을 참조합니다.”
 
 
 

Q (2). HTTP 메서드에 대해 설명해주세요.

핵심 키워드 : Get / Post / Put / delete / patch, 멱등성, request header, body

수강생 답변

HTTP(HyperText Transfer Protocol)는 클라이언트와 서버 간에 통신하는 데 사용되는 프로토콜로, 다양한 유형의 요청과 응답을 처리하기 위해 여러 가지 메서드를 정의하고 있습니다.
GET 메서드는 서버로부터 정보를 요청합니다. 요청한 데이터는 URL에 포함될 수 있으며, 요청 본문을 가지지 않습니다.
POST 메서드는 서버에 새로운 엔티티를 만들거나 기존 엔티티를 수정하기 위해 데이터를 제출합니다. 보통 HTML 양식을 통해 전송됩니다.
PUT 메서드는 서버에 새로운 엔티티를 만들거나 기존 엔티티를 수정하기 위해 데이터를 제출합니다. 일반적으로 리소스의 전체 내용을 보내고 해당 리소스가 없는 경우 새로 생성하며, 있을 경우 수정합니다.
DELETE 메서드는 서버에서 특정 리소스를 삭제합니다.
이러한 HTTP 메서드는 웹 애플리케이션과 API에서 클라이언트와 서버 간의 상호 작용을 가능하게 하며, RESTful API 디자인에서 중요한 역할을 합니다.
 

멘토님 피드백

HTTP 메서드의 종류와 정의를 잘 이야기하고 있고, 심화 부분에서 Restful API의 관계성도 잘 설명하고 있는 답변입니다.
 

😄 좋은 부분

1) HTTP 매서드 종류와 정의를 설명한 부분
  • "GET 메서드는 서버로부터 정보를 요청합니다. 요청한 데이터는 URL에 포함될 수 있으며, 요청 본문을 가지지 않습니다.”
  • “POST 메서드는 서버에 새로운 엔티티를 만들거나 기존 엔티티를 수정하기 위해 데이터를 제출합니다. 보통 HTML 양식을 통해 전송됩니다.”
  • “PUT 메서드는 서버에 새로운 엔티티를 만들거나 기존 엔티티를 수정하기 위해 데이터를 제출합니다. 일반적으로 리소스의 전체 내용을 보내고 해당 리소스가 없는 경우 새로 생성하며, 있을 경우 수정합니다.”
  • “DELETE 메서드는 서버에서 특정 리소스를 삭제합니다."
 
2) RestfulAPI의 관계성도 설명하고 있는 부분
  • “이러한 HTTP 메서드는 웹 애플리케이션과 API에서 클라이언트와 서버 간의 상호 작용을 가능하게 하며, RESTful API 디자인에서 중요한 역할을 합니다.”
 
 
 

Q (3). CORS(Cross Origin Resource Sharing)에 대해 설명해주세요.

핵심 키워드 : 도메인, 리소스, 보안 정책, 출처

수강생 답변

CORS (Cross-Origin Resource Sharing)는 웹 보안 정책 중 하나로, 웹 브라우저에서 실행 중인 스크립트가 다른 도메인(Origin)에 있는 리소스에 접근할 때 발생하는 보안 문제를 다루기 위한 메커니즘입니다.
CORS는 Same-Origin Policy(동일 출처 정책)에 의해 웹 보안을 유지하기 위해 브라우저가 스크립트의 다른 출처 리소스 접근을 제한하는 상황과 웹 애플리케이션이 다른 도메인의 리소스를 필요로 하는 Cross-Origin 요청 상황에서 필요합니다. CORS의 역할은 웹 서버에게 특정 도메인에서 오는 요청을 허용하도록 지시하여 다른 도메인 간에 안전한 데이터 교환을 가능하게 하는 것입니다.
CORS 정책은 Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, Access-Control-Allow-Credentials 등의 헤더를 사용하여 제어됩니다.
CORS가 필요한 이유는 데이터 교환을 허용하는 동안 보안을 유지할 수 있고, 웹 애플리케이션이 서로 다른 도메인의 리소스를 활용할 수 있어 서비스의 독립성과 확장성을 향상시킬 수 있기 때문입니다.
 

멘토님 피드백

CORS에 대한 정의, 필요성, 역할, 적용 방법 등 다양한 시선에 잘 설명하고 있는 좋은 답변입니다.
 

😄 좋은 부분

1) 정의
  • "CORS (Cross-Origin Resource Sharing)는 웹 보안 정책 중 하나로, 웹 브라우저에서 실행 중인 스크립트가 다른 도메인(Origin)에 있는 리소스에 접근할 때 발생하는 보안 문제를 다루기 위한 메커니즘입니다."
2) 필요성
  • "CORS는 Same-Origin Policy(동일 출처 정책)에 의해 웹 보안을 유지하기 위해 브라우저가 스크립트의 다른 출처 리소스 접근을 제한하는 상황과 웹 애플리케이션이 다른 도메인의 리소스를 필요로 하는 Cross-Origin 요청 상황에서 필요합니다."
3) 역할
  • "CORS의 역할은 웹 서버에게 특정 도메인에서 오는 요청을 허용하도록 지시하여 다른 도메인 간에 안전한 데이터 교환을 가능하게 하는 것입니다."
4) 적용 방법
  • "CORS 정책은 Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, Access-Control-Allow-Credentials 등의 헤더를 사용하여 제어됩니다."
 
 
 

Q (4). 브라우저의 작동 방식에 대해서 설명해주세요.

핵심 키워드 : HTML parsing, CSS parsing, Layout, Painting, Compositing

수강생 답변

사용자가 URL을 입력하면 브라우저는 해당 주소의 웹 서버에 HTTP 요청을 보내고, 서버는 요청을 처리하여 HTML, CSS, JavaScript 파일 등을 브라우저에게 응답으로 보냅니다.
브라우저는 HTML을 파싱하여 Document Object Model(DOM) 트리를 만들어 웹 페이지의 구조를 나타내고, CSS 파일도 파싱되어 CSS Object Model(CSSOM) 트리가 생성되어 페이지의 스타일을 정의합니다.
DOM과 CSSOM을 결합하여 렌더 트리를 생성하는데, 이 트리는 페이지의 시각적 표현을 나타내며 각 요소의 크기와 위치를 포함합니다. 렌더 트리를 기반으로 브라우저는 각 요소의 크기와 위치를 계산하고, 계산된 스타일과 레이아웃 정보를 사용하여 텍스트, 이미지, 다른 시각적 요소들을 포함한 페이지를 화면에 그립니다.
필요한 경우 JavaScript가 실행되어 동적인 기능을 추가하거나 페이지를 변경하고, 모든 요소와 스크립트가 로드되고 실행되면 페이지 로딩이 완료되어 사용자는 페이지와 상호 작용할 수 있게 됩니다.
 

멘토님 피드백

요청부터 파싱, 로드까지 상세하게 잘 설명한 좋은 답변입니다.
 

😄 좋은 부분

1) 요청 부분
  • "사용자가 URL을 입력하면 브라우저는 해당 주소의 웹 서버에 HTTP 요청을 보내고, 서버는 요청을 처리하여 HTML, CSS, JavaScript 파일 등을 브라우저에게 응답으로 보냅니다."
2) 파싱 부분
  • "브라우저는 HTML을 파싱하여 Document Object Model (DOM) 트리를 만들어 웹 페이지의 구조를 나타내고, CSS 파일도 파싱되어 CSS Object Model (CSSOM) 트리가 생성되어 페이지의 스타일을 정의합니다."
3) 로드 부분
  • "필요한 경우 JavaScript가 실행되어 동적인 기능을 추가하거나 페이지를 변경하고, 모든 요소와 스크립트가 로드되고 실행되면 페이지 로딩이 완료되어 사용자는 페이지와 상호 작용할 수 있게 됩니다."
 
 
 
🗣️
스프링(Spring) 기술 면접 질문, 도움이 되셨나요? 기술면접 대비는 현직 개발자의 시선에서 어떤 답변이 좋을 지를 파악할 수 있어서 취업 리부트 코스 수강생들의 만족도가 가장 높은 세션 중 하나 인데요. 앞으로도 React, Spring의 기술면접 Q&A를 꾸준히 발행할 예정이니, 관심이 있다면 항해99 블로그를 구독해주세요.
 
 
 

🚢 개발자 취업 준비 어떻게 시작해야 할지 모르겠나요? 취업으로 향하는 거친 항해에서 든든한 메이트가 되어 드리겠습니다.

취업 실패 시 교육비 0원. 반드시 취업까지 책임질 수 있다는 항해의 자신감입니다.
높은 수준의 개인 프로젝트 경험이 없는 개발 유관 전공자, 전반적인 학습이 부족한 부트캠프 수료생이라면 개발자 취업 리부트 코스에 합류하세요. 자료구조 공부, 프로젝트, 코테준비, 이력서와 면접 대비까지 취업 리부트 코스에서 한 번에 할 수 있습니다. 갈수록 높아지는 개발자 취업의 벽, 개발자 취업 리부트 코스로 11주 만에 취업의 문을 열어 보세요
 
Share article
Subscribe to our newsletter
RSSPowered by inblog