[ 백엔드 면접 준비 ] 백엔드 면접 준비 _ 01.
Ⅰ. HTTP METHOD에서 GET과 POST에 대해 설명해주세요.
HTTP 메서드에서 GET과 POST는 웹에서 클라이언트와 서버 간의 데이터 전송 방식에 있어 중요한 역할을 합니다.
두 메서드는 각각의 목적과 사용 방식이 다릅니다.
간략하게 말하면
Get은 가져온다는 개념이고, Post는 수행한다는 개념으로 받아들이면 됩니다.
GET
- 목적: GET 메서드는 주로 서버에서 데이터를 요청할 때 사용됩니다.
요청된 값은 프론트에서 변경되지 않고 사용됩니다.
예를 들어, 웹 페이지를 요청하거나 API에서 정보를 가져올 때 사용됩니다. - 특징:
- 데이터 전송 방식: 요청하는 데이터는 URL의 쿼리 문자열에 포함됩니다. [쿼리스트링]
- 안전성: GET 요청은 서버의 상태를 변경하지 않으므로 안전한 메서드로 간주됩니다.
- 캐싱: GET 요청은 캐시될 수 있어, 동일한 요청에 대해 빠른 응답을 받을 수 있습니다.
- 제한된 데이터 크기: URL 길이에 제한이 있어 전송할 수 있는 데이터 양이 제한적입니다.
POST
- 목적: POST 메서드는 주로 서버에 데이터를 제출하거나 생성할 때 사용됩니다.
정확히는 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는 목적으로 사용됩니다.
예를 들어, 사용자 등록, 로그인, 데이터 업로드 등에 사용됩니다. - 특징:
- 데이터 전송 방식: 요청 데이터를 Body에 포함하여 전송합니다. 이로 인해 URL에 데이터가 노출되지 않습니다.
- 비안전성: POST 요청은 서버의 상태를 변경할 수 있으므로, 안전성이 낮은 메서드로 간주됩니다.
- 캐싱: 일반적으로 POST 요청은 캐시되지 않으며, 매번 서버에 요청을 보냅니다.
- 데이터 크기: 전송할 수 있는 데이터 양이 상대적으로 많아, 대용량 데이터 전송에 적합합니다.
+PUT/PATCH
+ PUT
: 특정 리소스의 모든 현재 데이터들을, 요청한 페이로드로 완전히 교체하는데 사용됩니다.
즉, 리소스의 전체 내용을 새로 제공된 데이터로 업데이트합니다.
+ PATCH
: 리소스의 일부분만 수정하는 데 사용됩니다..
즉, 리소스의 특정 필드나 속성만 변경할 수 있으며, 전체 리소스를 다시 작성할 필요가 없습니다.
+GET vs PUT/PATCH
◆ 목적.
● GET
- 서버에서 리소스를 조회하는데 사용됩니다. ( 데이터나 정보를 요청하여 가져오기 )
● PUT/PATCH
- 리소스를 생성하거나 수정하는 데 사용됩니다.
서버에서 데이터를 전송하여 리소스를 업데이트 합니다.
◆ HTTP 메서드의 성격.
● GET
- 안전성*일관성이 높습니다.
- GET 요청은 서버의 상태를 변경하지 않으며, 동일한 요청을 여러 번 수행하더라도 결과가 동일합니다.
● PUT/PATCH
- 안전성이 낮습니다.
- 서버의 상태를 변경하며, PUT은 전체 리소스를 교체하고 PATCH는 일부만 수정합니다.
◆ Body 태그
● GET
- 일반적으로 요청 Body가 없습니다.
필요한 데이터는 URL 쿼리 매개변수로 전달됩니다.
● PUT/PATCH
- 요청 Body에 수정할 데이터가 포함됩니다.
PUT은 전체 리소스, PATCH는 일부 필드를 포함합니다.
◆ 서버 응답.
● GET
- 요청한 리소스의 현재 상태나 데이터를 반환합니다.
● PUT/PATCH
- 리소스의 업데이트 결과를 반환하거나, 성공적으로 처리되었음을 나타내는
상태코드를 반환합니다.
Ⅱ. HTTP 상태 코드.
◇ 200 : OK
-> 요청이 성공적으로 처리되었습니다.
◇ 201: Created
-> 요청이 성공적으로 완료되었으며, 새로운 리소스가 생성되었습니다.
◇ 400: Bad Request
-> 서버가 요청의 구문을 이해하지 못했습니다, 요청을 확인하고 다시 시도해주세요.
◇ 401: Unauthorized
-> 이 요청은 인증이 필요합니다, 유효한 인증 정보를 제공해주세요.
◇ 403: Forbidden
-> 서버가 요청을 거부합니다. 클라이언트는 요청한 리소스에 대한 접근 권한이 없습니다.
◇ 404: Not Found
-> 서버가 요청한 페이지를 찾을 수 없습니다. 주로 잘못된 URL을 요청했을 때 발생합니다.
(API가 잘못되었을 때 자주 겪는 오류 )
◇ 500: Internal Server Error
-> 서버에 오류가 발생하여, 요청을 수행할 수 없습니다.
서버 측에서 예기치 않은 상황이 발생했음을 나타냅니다.
Ⅲ. 프로세스와 스레드의 차이.
∇ 프로세스.
- 운영체제로부터 자원을 할당받은 작업의 단위입니다.
- 각 프로세스는 독립적인 메모리 공간을 가지며,
운영체제는 이러한 프로세스 간의 자원 관리와 스케쥴링을 담당합니다.
- 프로세스는 CPU, 메모리, 파일 등 다양한 자원을 필요로 하며,
이러한 자원들은 프로세스가 실행되는 동안 운영체제에 의해 할당되고 관리됩니다.
∇ 스레드.
- '프로세스' 내에서 실행되는 흐름의 단위로, 하나의 프로세스는 여러 개의 스레드를 포함할 수 있습니다.
- 스레드는 프로세스가 할당받은 자원을 공유하며, 이를 통해 더 효율적인 작업 처리가 가능합니다.
- 스레드 간의 전환은 프로세스 간의 전환보다 빠르기 때문에,
멀티스레딩을 통해 프로그램의 성능을 향상시킬 수 있습니다.
Ⅳ. RDB(Relational Database) 와 NoSQL( Not Only SQL ) 의 차이.
※ RDBMS(관계형 데이터베이스) 는 정해진 스키마가 존재하고,
NoSQL은 정해진 스키마가 없다는 것이 큰 차이입니다.
※ RDBMS는 데이터 무결성과 관계형 데이터 처리에 강점을 가지며,
NoSQL은 유연성과 확장성에서 장점을 가지고 있습니다.
◎ RDBMS ( Relational Database )
: RDBMS는 정해진 스키마를 기반으로 데이터를 구조화하여, 데이터의 무결성을 보장하고
데이터 간의 관계를 명확히 정의할 수 있습니다.
데이터의 분류*정렬*탐색 속도가 빠르며 SQL 쿼리를 통해 복잡한 데이터 분석이 가능합니다.
그러나, 스키마가 정적이기 때문에 데이터 구조의 변경이 어려워서
시스템이 커질수록 JOIN문을 포함한 복잡한 쿼리가 발생할 수 있습니다. 이는 성능 저하를 초래할 수 있습니다.
◎ NoSQL(Not Only SQL)
: NoSQL은 'Not Only SQL'의 약자로, 스키마가 없거나 유연한 스키마를 제공하여
데이터 구조를 자유롭게 설계할 수 있습니다.
NoSQL은 비정형 데이터나 대량의 데이터를 처리할 때 유리합니다.
NoSQL DB는 데이터 분산이 용이하여, '수평적 확장(Scale-out)'이 가능하므로
대규모 트래픽을 처리하는데 적합합니다.
또한, 성능 향상을 위해 '수직적 확장(Scale-up)' 도 지원합니다.
그러나, NoSQL의 단점으로는 데이터 중복이 발생 할 수 있으며,
중복된 데이터가 변경될 경우 모든 컬렉션에서 수정을 해야 하는 번거로움이 있습니다.
Ⅴ. DB 인덱스 사용 시 장점.
◆ "DB 인덱스"를 잘 활요하면 데이터를 검색하는 시점에서 성능에 큰 영향을 미치게 됩니다.
◆ 대용량 데이터(대규모업체급이 아니더라도 실 운영 앱이라면, 모의 플젝보다는 데이터가 많을 수 밖에) 를 담고 있는
DB 테이블에서는 필요한 데이터를 빨리 찾기 위해 인덱스가 필요합니다.
◇ DB 인덱스의 가장 큰 장점은 "데이터 검색 속도의 향상" 입니다.
인덱스는 DB 내 저장된 데이터의 주소(id)를 가지고 있기 때문에 원하는 데이터를 빠르게 찾을 수 있습니다.
반면,
단점으로는 인덱스는 데이터 조회(SELECT)를 제외한 모든 동작,
즉, INSERT/ UPDATE/ DELETE 성능에 영향을 미치게 됩니다.
-> 인덱스를 걸어둔 컬럼의 데이터가 바뀌면, 인덱스 테이블의 수정도 필요하기 때문에
데이터의 삽입/수정/삭제 작업이 두 번 이루어지게 됩니다. ( 불필요한 성능 낭비)
또한, 인덱스는 DB 내 저장된 데이터의 '주소값'을 가지고 있기 때문에,
별도의 공간에 저장하는 것이 필요하므로, 추가 저장 공간이 쓰이게 됩니다.
'면접준비[프론트,백,데이터,CS] > InterView 준비 [ 백엔드 ]' 카테고리의 다른 글
[ 백엔드 면접 준비 ] 백엔드 면접 준비 _ 02. (0) | 2024.12.16 |
---|---|
[ 백엔드 면접 준비 ] 블로킹 vs 논블로킹 // 동기 vs 비동기 (0) | 2024.12.09 |
[ 백엔드 면접 준비 ] REST & REST API & RESTfull API 란?? (2) | 2024.12.09 |