코딩과 결혼합니다

230914 - 마음을 다잡고 면접 질문 준비하기! 본문

청첩장/웨딩홀 : 내 마음속 ♥

230914 - 마음을 다잡고 면접 질문 준비하기!

코딩러버 2023. 9. 14. 20:58
728x90

7일까지 실전 프로젝트 마무리 & 발표
8일부터는 취업을 위한 세션들을 들으며 지친 몸을 달래고자 휴식기간을 가졌다.
11일 고생한 항해 친구분들을 만났다! 스프링 3분과 리액트 1분 총 5명이서 에버랜드에 갔다.
12일은 한 달 넘게 실전 프로젝트를 진행했던 프런트 2분과 다른 조의 프런트 1분 이렇게 4명이서 담소를 나눔!

광주에서 서울까지 왔다 갔다 사실 너무 힘들었지만..모두 너무 따뜻한 사람들이었어

13일 부터는 이력서 작성하고 컨펌 받고 수정하고 + 취업 스터디에 참가 + 항해커톤 신청 및 팀원구하기!

 

등의 TIL을 쓰지 않았던 핑계를 대본다. 이제 노는 건 그만! 취업해야지.

 

그래서 오랜만에 TIL을 다시 시작한다! 예상 면접 질문에 대한 답을 정리해 볼 것이다.

면접장에서 대답하고 있다 생각하고 적어보겠음!

 


NoSQL과 RDBMS


NoSQL은 데이터의 스키마를 미리 정의하지 않아도 유연하게 데이터를 저장할 수 있는 기능을 제공합니다. 이는 대량의 데이터 처리에 매우 적합하며, 분산 환경에서 손쉽게 확장될 수 있습니다. 또한, 간결한 데이터 모델과 분산 처리 기능으로 인해 빠른 읽기 및 쓰기가 가능합니다. 하지만 일부 NoSQL 데이터베이스는 성능과 확장성을 위해 ACID 트랜잭션을 희생하므로, 데이터 일관성이 엄격하게 요구되는 애플리케이션에는 적합하지 않을 수 있는 단점이 있습니다.

 

RDBMS는  관계형데이터 베이스 미리 정의된 테이블과 컬럼에 따라 스키마를 가지고 있습니다. JOIN 등 복잡한 쿼리를 지원하며 SQL을 사용하여 데이터를 손쉽게 조작할 수 있으며, 응용 프로그램에서도 이를 쉽게 활용할 수 있습니다. 다양한 트랜잭션 처리 기능도 제공되어 사용자의 다양한 요구 사항을 충족시킵니다.

그러나 RDBMS는 엄격한 스키마로 인해 데이터 구조 변경이 어려울 수 있습니다. 추가적으로, 대량의 데이터 처리와 분산처리(수평적 확장)에 대해서는 NoSQL 같은 비관계형 데이터베이스보다 덜 적합할 수 있다는 한계가 있습니다.


MVC 패턴


MVC는 Model, View, Controller의 약자로,  프로젝트를 구성할 때 세 가지 주요 역할을 분리하는 디자인 패턴입니다. 이 패턴은 소프트웨어의 비즈니스 로직과 사용자 인터페이스를 명확하게 구분하고 관리하는데 초점을 맞춥니다.

 

Model은 데이터와 비즈니스 로직을 처리하는 역할을 담당하며, View는 사용자에게 보여지는 레이아웃과 화면 처리를 맡습니다.  Controller는 사용자의 입력 처리와 흐름 제어를 담당하며 Model과 View 사이에서 중재적인 역할을 수행합니다.

 

MVC 패턴을 도입함으로써 비즈니스 로직과 UI 로직이 서로 분리되기 때문에 각각 독립적으로 유지보수가 가능해집니다. 또한 Model과 View가 다른 컴포넌트들에 대해 종속적이지 않아 확장성 및 유연성 면에서 이점이 있습니다.


RDBMS의 정규화


정규화는 관계형 데이터베이스에서 데이터의 중복성을 제거하고 이상 현상을 방지하기 위해, 테이블을 두 개 이상의 서브테이블로 분리하는 과정입니다. 정규화의 주요 목적은 데이터 관리를 보다 효율적으로 하기 위함입니다.

 

정규화는 여러 단계로 이루어지며, 각 단계는 다음과 같습니다. 1차 정규화에서는 모든 속성의 도메인이 더 이상 분해되지 않도록 합니다. 2차 정규화에서는 기본키를 제외한 모든 속성이 기본키에 완전 함수 종속되도록 합니다. 그리고 3차 정규화에서는 기본키를 제외한 모든 속성이 기본키에 대해 이행적 함수 종속이 되어있지 않아야 합니다.

추가로, 4차, 5차, 6차 및 BCNF 등의 고급 정규형도 있으나 일반적으로 대부분의 경우에는 3차 정규형까지만 진행합니다.

.


Primary Key, Foreign Key


Primary Key(PK)와 Foreign Key(FK)는 관계형 데이터베이스에서 테이블 간의 연결성을 구축하고 데이터의 무결성을 보장하는 중요한 구성 요소입니다.

 

기본키(PK)는 테이블 내에서 각 레코드를 고유하게 식별하는 역할을 수행합니다. 한 테이블에는 반드시 하나의 기본키가 존재해야 하며, 이 기본키는 not-null (즉, 비어 있지 않아야 함)과 not-duplicate (즉, 중복되지 않아야 함)의 조건을 만족해야 합니다. 이러한 기본키를 사용하면 데이터 검색 속도가 개선되는데, 그 이유는 기본키가 인덱스 역할을 하기 때문입니다. 또한, 기본키를 통해 데이터의 무결성도 보장할 수 있습니다.

 

외래키(FK)는 다른 테이블의 기본키와 연관된 열로서, 외래키를 이용하여 서로 다른 테이블 간의 관계를 정립하고 참조 무결성을 유지합니다. 외래키가 포함된 테이블은 "참조하는 테이블" 혹은 "자식 테이블" 이라 부르며, 외래키가 참조하는 대상인 테이블은 "참조되는 테이블" 혹은 "부모 테이블"이라 부릅니다.


HTTP 메서드


HTTP 메서드는 클라이언트가 웹 서버에 요청을 보낼 때 사용되는 역할을 나타냅니다. 가장 널리 사용되는 메서드들은 다음과 같습니다.

1. GET: 정보를 조회하는 용도로 주로 사용됩니다. 서버로부터 데이터를 가져와 응답으로 반환합니다.

2. POST: 서버로 데이터를 제출하거나 새로운 리소스를 생성하기 위해 사용됩니다.

                주로 폼 데이터나 파일 업로드 등에 활용됩니다.

3. PUT: 서버에 데이터를 업데이트하기 위해 사용됩니다. 요청된 리소스의 전체 내용을 갱신합니다.

4. DELETE: 서버에서 리소스를 삭제하는 데에 사용됩니다. 요청된 리소스를 삭제합니다.

이외에도 PATCH, HEAD, OPTIONS 등 다양한 HTTP 메서드가 존재합니다.

 

이러한 HTTP 메서드들은 RESTful API 설계 원칙에서 중요한 역할을 합니다. RESTful API 설계 원칙을 준수하면 API가 간결하고 확장 가능하며, 클라이언트와 서버 간의 상호 작용을 용이하게 만들 수 있습니다.