CS

[항해 취업코스] 개발자 취준 기록 7일차

Ynghan 2024. 3. 14. 15:39

Q. HTTP 상태 코드 100번대, 200번대, 300번대, 400번대, 500번대에 대해 각각의 특징을 설명해주세요.

상태 코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

  • 1xx (Informational) : 요청이 수신되어 처리중
    • 거의 사용되지 않는다.
  • 2xx (Successful) : 요청 정상 처리
    • 200 OK : 요청 성공
    • 201 Created : 요청 성공해서 새로운 리소스가 생성됨
    • 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않았음
    • 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
      • 예) 웹 문서 편집기에서 SAVE 버튼
      • save 버튼의 결과로 아무 내용이 없어도 된다.
      • save 버튼을 눌러도 같은 화면을 유지해야 한다.
      • 결과 내용이 없어도 204 메시지(2xx)만으로 성공을 인식할 수 있다.
  • 3xx (Redirection) : 요청을 완료하려면 유저 에이전트의 추가 조치 필요
    • 300 Multiple Choices
    • 301 Moved Permanently : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)
    • 302 Found
    • 303 See Other
    • 304 Not Modified
    • 307 Temporary Redirect
    • 308 Permanent Redirect : 리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
  • 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음
    • 400 Bad Request
    • 401 Unauthorized
    • 403 Forbidden
    • 404 Not Found
  • 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함
    • 500 Internal Server Error
    • 503 Service Unavailable

리다이렉션 이해

  • 웹 브라우저 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동
  • 자동 리다이렉트 흐름
    • 요청/응답/자동리다이렉트/요청/응답
  • 종류
    • 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동
      • 예) /members -> /users
      • 예) /event -> /new-event
      • 301, 308
        • 리소스의 URI가 영구적으로 이동
        • 원래의 URL를 사용x, 검색 엔진 등에서도 변경 인지
        • 301 Moved Permanently
    • 일시 리다이렉션 - 일시적인 변경
      • 302, 307, 303
      • 주문 완료 후 주문 내역 화면으로 이동
      • PRG: Post/Redirect/Get
    • 특수 리다이렉션
      • 결과 대신 캐시를 이용

참조 : 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한님

Q. ERD 설계를 하면서 가장 중요하게 생각하신 부분을 설명해주세요.

ERD 설계 과정에서 가장 주안점을 둔 부분은 커뮤니티 애플리케이션의 핵심 기능 중 하나인 팔로우/팔로워 시스템의 구현이었습니다. 이 기능을 데이터베이스에 효율적으로 표현하기 위해, 가장 큰 도전은 사용자 간의 양방향 관계를 어떻게 명확하게 정의하고 표현할 것인가였습니다.

이 문제를 해결하기 위해서 저는 중간 테이블이라는 개념을 도입했습니다. 중간 테이블은 사용자(User) 테이블 간의 N:M 관계를 명확하게 표현하는 데 사용되었습니다. 한 사용자가 다른 사용자를 팔로우하는 관계와 동시에 팔로우당하는 관계를 모두 관리해야 했기 때문에, 이를 효과적으로 나타내기 위해 'Follow'라는 중간 테이블을 생성했습니다.

'Follow' 테이블에는 팔로우하는 사용자와 팔로우당하는 사용자를 나타내는 두 개의 컬럼, 'Following'과 'Follower'를 포함시켰습니다. 이 구조를 통해 각 사용자 간의 복잡한 팔로우 관계를 데이터베이스 내에서 명확하고 효율적으로 표현할 수 있었습니다.

 

+ Q. 좋은 데이터베이스 설계가 무엇인지 알려주세요.

비지니스 요구사항을 반영

좋은 확장성

정확성과 보안의 형상 유지

 

Q. 설계대로 개발을 하셨을 때 실제로 그렇게 개발이 이루어졌는지 본인의 경험을 설명해주세요.

초반에는 설계한 대로 개발이 잘 이루어지지 않았습니다. 

 

Q. Header와 Cookie에 대해 설명해주세요.

Header

Header는 HTTP 요청과 응답에서 사용되는 정보의 조각들을 말합니다. 이 정보는 클라이언트와 서버 간의 통신에 있어 중요한 역할을 합니다. Header에는 요청을 보낸 클라이언트의 브라우저, 요청된 페이지, 서버의 응답 코드, 콘텐츠 유형 등 다양한 메타데이터가 포함될 수 있습니다. Header는 크게 두 가지 유형으로 나뉩니다:

  1. 요청 Header: 클라이언트가 서버에 정보를 요청할 때 보내는 Header로, 사용자의 브라우저 종류, 요청하는 데이터 형식 등이 포함됩니다.
  2. 응답 Header: 서버가 클라이언트의 요청에 응답할 때 보내는 Header로, 데이터의 타입, 서버의 종류, 데이터가 생성된 날짜 등의 정보가 포함됩니다.

Cookie

Cookie는 웹사이트가 사용자의 컴퓨터에 저장하는 작은 데이터 조각입니다. 주로 웹사이트가 사용자를 식별하고 사용자의 선호도를 기억하는 데 사용됩니다. 예를 들어, 웹사이트에 로그인할 때 사용자의 아이디와 비밀번호를 입력하면, 해당 정보가 Cookie에 저장되어 다음에 같은 웹사이트를 방문할 때 자동으로 로그인할 수 있습니다.

Cookie는 사용자가 웹사이트를 방문할 때마다 서버에 의해 생성되며, HTTP 응답 Header에 포함되어 클라이언트에게 전송됩니다. 클라이언트는 이 Cookie를 저장하고, 다음에 같은 서버에 요청을 보낼 때 요청 Header에 포함시켜 서버에 전송합니다. 이를 통해 서버는 사용자를 식별하고, 사용자에게 맞춤화된 콘텐츠를 제공할 수 있습니다.

Header와 Cookie는 웹 통신의 중요한 구성 요소로, 웹의 동작 방식을 이해하는 데 필수적인 개념입니다. Header는 클라이언트와 서버 간의 통신에 필요한 정보를 제공하며, Cookie는 사용자의 선호와 정보를 저장하여 웹 사용 경험을 개인화하는 데 도움을 줍니다.