면접준비[프론트,백,데이터,CS]/InterView 준비 [ 백엔드 ]

[ 백엔드 면접 준비 ] 백엔드 면접 준비 _ 01.

안다미로 : Web3 & D.S 2024. 12. 13. 22:24

 

 

 

 

[ 백엔드 면접 준비 ] 백엔드 면접 준비 _ 01.

 


 

 

Ⅰ.   HTTP METHOD에서 GET과 POST에 대해 설명해주세요.


 

HTTP 메서드에서 GET과 POST는 웹에서 클라이언트와 서버 간의 데이터 전송 방식에 있어 중요한 역할을 합니다.

두 메서드는 각각의 목적과 사용 방식이 다릅니다.

 

간략하게 말하면

Get은 가져온다는 개념이고, Post는 수행한다는 개념으로 받아들이면 됩니다.

GET

  1. 목적: GET 메서드는 주로 서버에서 데이터를 요청할 때 사용됩니다.
              요청된 값은 프론트에서 변경되지 않고 사용됩니다.
              예를 들어, 웹 페이지를 요청하거나 API에서 정보를 가져올 때 사용됩니다.
  2. 특징:
    • 데이터 전송 방식: 요청하는 데이터는 URL의 쿼리 문자열에 포함됩니다. [쿼리스트링]
    • 안전성: GET 요청은 서버의 상태를 변경하지 않으므로 안전한 메서드로 간주됩니다.
    • 캐싱: GET 요청은 캐시될 수 있어, 동일한 요청에 대해 빠른 응답을 받을 수 있습니다.
    • 제한된 데이터 크기: URL 길이에 제한이 있어 전송할 수 있는 데이터 양이 제한적입니다.


POST

  1. 목적: POST 메서드는 주로 서버에 데이터를 제출하거나 생성할 때 사용됩니다.
              정확히는 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는 목적으로 사용됩니다.
              예를 들어, 사용자 등록, 로그인, 데이터 업로드 등에 사용됩니다.
  2. 특징:
    • 데이터 전송 방식: 요청  데이터를 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 내 저장된 데이터의 '주소값'을 가지고 있기 때문에,

                별도의  공간에 저장하는 것이 필요하므로,  추가 저장 공간이 쓰이게 됩니다.