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
- 특수 리다이렉션
- 결과 대신 캐시를 이용
- 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동
참조 : 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한님
Q. ERD 설계를 하면서 가장 중요하게 생각하신 부분을 설명해주세요.
ERD 설계 과정에서 가장 주안점을 둔 부분은 커뮤니티 애플리케이션의 핵심 기능 중 하나인 팔로우/팔로워 시스템의 구현이었습니다. 이 기능을 데이터베이스에 효율적으로 표현하기 위해, 가장 큰 도전은 사용자 간의 양방향 관계를 어떻게 명확하게 정의하고 표현할 것인가였습니다.
이 문제를 해결하기 위해서 저는 중간 테이블이라는 개념을 도입했습니다. 중간 테이블은 사용자(User) 테이블 간의 N:M 관계를 명확하게 표현하는 데 사용되었습니다. 한 사용자가 다른 사용자를 팔로우하는 관계와 동시에 팔로우당하는 관계를 모두 관리해야 했기 때문에, 이를 효과적으로 나타내기 위해 'Follow'라는 중간 테이블을 생성했습니다.
'Follow' 테이블에는 팔로우하는 사용자와 팔로우당하는 사용자를 나타내는 두 개의 컬럼, 'Following'과 'Follower'를 포함시켰습니다. 이 구조를 통해 각 사용자 간의 복잡한 팔로우 관계를 데이터베이스 내에서 명확하고 효율적으로 표현할 수 있었습니다.
+ Q. 좋은 데이터베이스 설계가 무엇인지 알려주세요.
비지니스 요구사항을 반영
좋은 확장성
정확성과 보안의 형상 유지
Q. 설계대로 개발을 하셨을 때 실제로 그렇게 개발이 이루어졌는지 본인의 경험을 설명해주세요.
초반에는 설계한 대로 개발이 잘 이루어지지 않았습니다.
Q. Header와 Cookie에 대해 설명해주세요.
Header
Header는 HTTP 요청과 응답에서 사용되는 정보의 조각들을 말합니다. 이 정보는 클라이언트와 서버 간의 통신에 있어 중요한 역할을 합니다. Header에는 요청을 보낸 클라이언트의 브라우저, 요청된 페이지, 서버의 응답 코드, 콘텐츠 유형 등 다양한 메타데이터가 포함될 수 있습니다. Header는 크게 두 가지 유형으로 나뉩니다:
- 요청 Header: 클라이언트가 서버에 정보를 요청할 때 보내는 Header로, 사용자의 브라우저 종류, 요청하는 데이터 형식 등이 포함됩니다.
- 응답 Header: 서버가 클라이언트의 요청에 응답할 때 보내는 Header로, 데이터의 타입, 서버의 종류, 데이터가 생성된 날짜 등의 정보가 포함됩니다.
Cookie
Cookie는 웹사이트가 사용자의 컴퓨터에 저장하는 작은 데이터 조각입니다. 주로 웹사이트가 사용자를 식별하고 사용자의 선호도를 기억하는 데 사용됩니다. 예를 들어, 웹사이트에 로그인할 때 사용자의 아이디와 비밀번호를 입력하면, 해당 정보가 Cookie에 저장되어 다음에 같은 웹사이트를 방문할 때 자동으로 로그인할 수 있습니다.
Cookie는 사용자가 웹사이트를 방문할 때마다 서버에 의해 생성되며, HTTP 응답 Header에 포함되어 클라이언트에게 전송됩니다. 클라이언트는 이 Cookie를 저장하고, 다음에 같은 서버에 요청을 보낼 때 요청 Header에 포함시켜 서버에 전송합니다. 이를 통해 서버는 사용자를 식별하고, 사용자에게 맞춤화된 콘텐츠를 제공할 수 있습니다.
Header와 Cookie는 웹 통신의 중요한 구성 요소로, 웹의 동작 방식을 이해하는 데 필수적인 개념입니다. Header는 클라이언트와 서버 간의 통신에 필요한 정보를 제공하며, Cookie는 사용자의 선호와 정보를 저장하여 웹 사용 경험을 개인화하는 데 도움을 줍니다.
'CS' 카테고리의 다른 글
모의 면접 회고 (0) | 2024.03.14 |
---|---|
[항해 취업코스] 개발자 취준 기록 8일차 (0) | 2024.03.14 |
[항해 취업코스] 개발자 취준 기록 6일차 (0) | 2024.03.14 |
[항해 취업코스] 개발자 취준 기록 5일차 (0) | 2024.03.12 |
[항해 취업코스] 개발자 취준 기록 4일차 (1) | 2024.03.08 |