기초
Q. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요.
RDBMS는 스키마를 정의하여 사용하지만, NoSQL은 스키마를 정의하지 않고 사용할 수 있습니다. RDBMS는 엄격한 스키마와 트랜잭션으로 데이터 무결성을 보장하는 특징이 있고, NoSQL은 무결성 보장에는 제한적이지만 데이터의 유연성과 확장성에 초점을 두어 대량의 데이터와 높은 사용자 부하에도 쉽게 확장할 수 있는 특징이 있습니다.
Q. RDBMS의 정규화에 대해 설명해주세요.
정규화란? 중복을 최소화하여 이상 현상(Anomaly)의 발생을 방지하는 것을 뜻합니다. 이상현상이란 정규화가 제대로 되지 않은 Table에 어떤 작업을 수행했을 경우 비합리적 문제가 발생하는 현상입니다. 이상 현상에는 삽입 이상, 삭제 이상, 갱신 이상 등이 있습니다.
삽입 이상 : 데이터를 테이블에 저장할 때, 불필요한 데이터도 저장해야 할 경우
삭제 이상 : 데이터를 테이블에서 삭제할 때, 원하지 않은 데이터도 같이 삭제되는 경우
갱신 이상 : 중복된 데이터 중에서 특정 부분만 수정되어 값이 모순을 일으키는 경우
정규화 종류
1NF : 테이블 내의 속성값들이 원자값으로 구성
2NF : 부분함수 종속 제거
3NF : 이생함수 종속 제거
BCNF : 결정자 함수이면서 후보키가 아닌 것 제거
4NF : 다치(다중 값) 종속성 제거
5NF : 조인 종속성 제거
- 반정규화에 대한 설명, 어떻게 반정규화 하는지
- 반정규화는 언제 해야하는지 → 모든 정규화를 마친 후 성능 이슈 있을 때 고려
Q. Primary Key, Foreign Key에 대해 설명해주세요.
Primary Key(기본 키)
- 유일성, 최소성을 가짐
- 레코드를 식별할 때 기준이 됨
- NULL 값을 가질 수 없음
- 후보키 중 단순한 키를 기본키로 선택함
- 하나의 테이블에는 반드시 하나의 기본키만 존재함
Foreign Key(외래 키)
- 테이블간의 관계를 나타냄
- 다른 테이블의 기본키를 참조해 외래키로 사용함사용함
Super Key(수퍼 키)
유일성은 가지지만 최소성은 가지지 않음
유일성 : 중복된 값을 가지지 않음
Candidate Key(후보 키)
유일성, 최소성 모두 만족
수퍼키 중에서 최소성을 만족하는 키를 칭함
- 데이터베이스에서 사용하는 key의 종류에 대해 설명해주세요 → 슈퍼키, 후보키, 대체키 등등..
Q. HTTP 메서드에 대해 설명해주세요.
- 멱등성 관점에서 설명해주세요
멱등성이란 동일한 연산을 여러 번 적용해도 결과가 달라지지 않는 성질을 말함
멱등한 HTTP 메서드 - GET, PUT, DELETE
GET
: 서버의 데이터를 변경하지 않으므로, 같은 GET 요청을 여러 번 보내도 서버의 상태가 변하지 않음
PUT
: 동일한 PUT 요청을 여러 번 수행해도 최종적인 상태는 같음으로 멱등
DELETE
: 첫 번째 DELETE 요청이 성공한 후 리소스가 삭제되면, 같은 요청을 반복해도 이미 삭제된 리소스에 영향을 주지 않으므로 멱등
멱등하지 않은 HTTP 메서드 - POST, PATCH
POST
: 같은 POST 요청을 여러 번 수행하면, 서버에 같은 데이터가 여러 번 추가되어 최종 상태가 달라질 수 있으므로 멱등하지 않음
PATCH
: PATCH 요청도 요청에 따라 서버의 상태가 달라질 수 있으므로 멱등하지 않을 수 있음. 그러나 PATCH의 멱등성은 구현 방식에 따라 달라질 수 있음
Q. 브라우저의 작동 방식에 대해서 설명해주세요.
1. 사용자가 웹 브라우저에 URL을 입력
2. 브라우저는 입력된 URL의 도메인 이름에 해당하는 IP 주소를 찾기 위해 DNS 서버에 질의
3. DNS 서버는 해당 도메인 이름에 매핑된 IP 주소를 찾아 브라우저에게 응답
4. 브라우저는 DNS로부터 받은 IP 주소를 사용하여 해당 웹 서버와 TCP 연결
5. TCP 연결이 성공적으로 수립되면, 이제 브라우저는 HTTP 요청 메시지를 생성하여 웹 서버로 전송
6. 웹 서버는 받은 HTTP 요청에 따라 필요한 데이터를 찾고, HTTP 응답 메시지를 생성하여 다시 브라우저로 전송
7. 브라우저는 받은 HTTP 응답 메시지를 해석하여 사용자에게 웹 페이지로 렌더링
프로젝트
Q. RESTful에 대해 설명해주세요.
RESTful API는 웹 서비스 설계에 널리 사용되는 아키텍처 스타일입니다. REST는 Representational State Transfer의 약자로, 자원(Resource)의 표현(Representation)에 의해 상태(State)를 전달(Transfer)한다는 의미를 담고 있습니다. RESTful API를 사용하면, 웹 상의 데이터와 상호작용하는 방식이 단순화되며, 이해하기 쉽고 사용하기 편리해집니다.
RESTful API의 핵심 원리는 자원(Resource), 메서드(Method), 메시지(Message)의 세 가지 요소로 구성됩니다.
자원(Resource)
: REST는 웹 상의 모든 것을 자원으로 간주합니다. 예를 들어, 문서, 이미지, 서비스 처리 결과 등이 될 수 있으며, URI(Uniform Resource Identifier)를 통해 해당 자원을 고유하게 식별합니다.
메서드(Method)
: 자원에 대한 행위는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 통해 정의됩니다. 이 메서드들은 각각 자원을 조회, 생성, 수정, 삭제하는 표준화된 방식을 제공합니다.
메시지(Message)
: 클라이언트와 서버 간의 요청(Request)과 응답(Response)에 포함된 정보입니다. HTTP 헤더와 바디를 통해 데이터 형식, 인증 정보 등을 전달합니다.
특징
무상태성(Stateless)
: 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다. 이는 서버 설계를 간단하게 하고, 확장성을 높입니다.
캐시 처리 가능(Cacheable)
: RESTful API 응답은 캐시될 수 있어야 합니다. 이를 통해 네트워크 지연 시간을 줄이고, 서버 부하를 감소 시킬 수 있습니다.
계층화(Layered System)
: 클라이언트는 중간 서버를 통해 자원에 접근할 수 있습니다. 이러한 계층화는 할 수 있는 유연성을 제공합니다. 보안, 로드 밸런싱, 암호화 계층 등을 추가
일관된 인터페이스(Uniform Interface)
: RESTful API는 일관된 인터페이스를 통해 자원에 접근합니다. 입니다. 이는 API의 사용법을 쉽게 만들고, 코드의 재사용성을 높다.
'CS' 카테고리의 다른 글
헷갈리는 용어 (0) | 2024.04.05 |
---|---|
[항해 취업코스] 개발자 취준 기록 16일차 (0) | 2024.03.30 |
[항해 취업코스] 개발자 취준 기록 13일차 (0) | 2024.03.26 |
[항해 취업코스] 개발자 취준 기록 12일차 (0) | 2024.03.22 |
[항해 취업 코스] 개발자 취준 기록 11일차 (0) | 2024.03.21 |