Skip to content

채널톡 면접 기출

  • 0012 Career 💼
  • 프로젝트에서 담당한 기능에 대해서 자세하게 설명해주세요
  • 담당한 기능 중에서 어려웠던 문제를 해결한 경험을 소개해주세요
  • 밸런스 트리에 대해서 설명해주세요
  • RDBMS와 NoSQL의 차이점이 무엇인가요?
  • JOIN의 종류에 대해서 설명해주세요
    • 만약 OUTER JOIN 시에 NULL 값이 포함된 데이터가 존재한다면, 어떻게 처리하는 것이 좋을까요?
  • HTTP에 대해서 설명해주세요
    • HTTP 버전에 따라 무슨 차이가 있나요?
    • 왜 TCP Connection을 생성할때 3번이나 트래픽이 발생하나요? 그냥 클라이언트에서 서버에 연결 요청을 보내고, 연결이 되었다고 가정할 수는 없는걸까요?
      • 3-way handshake
        • TCP에서 연결을 시작하기 위해 사용되는 프로세스입니다. 이 방법은 신뢰할 수 있는 연결을 수립하고, 양쪽 모두 데이터 전송 및 수신에 준비가 된 상태인지 확인하는 데 사용됩니다.
        • SYN(Synchronize) : 클라이언트가 서버에게 연결 요청을 하며 SYN 패킷을 보냅니다. 이 패킷에는 클라이언트가 초기 시퀀스 번호로 선택한 값이 포함됩니다.
        • SYN-ACK (Synchronize-Acknowledgement) : 서버는 SYN 패킷을 받고, 클라이언트에게 연결을 수락한다는 응답으로 SYN-ACK 패킷을 보냅니다. 이 패킷에는 서버의 초기 시퀀스 번호와 클라이언트의 SYN 메시지에 대한 확인 응답이 포함됩니다.
        • ACK (Acknowledgement) : 클라이언트는 서버의 SYN-ACK 메시지를 받고, 이를 확인하기 위해 ACK 패킷을 보냅니다. 이 단계가 완료되면 TCP 연결이 성립되며 데이터 전송이 시작됩니다.
          3-way handshake의 주요 목적은 양쪽 모두에서 시퀀스 번호를 동기화하고, 실제 데이터 전송을 시작하기 전에 연결을 수립하는 것입니다.
      • 시퀀스 번호
        • TCP는 스트림 기반의 프로토콜입니다. 데이터는 패킷으로 분할되어 전송되며, 각 패킷은 네트워크를 통해 다양한 경로로 전송될 수 있습니다. 시퀀스 번호를 사용하면 수신 측에서 패킷을 올바른 순서로 재정렬할 수 있습니다. 또한 중복되거나 누락된 패킷을 감지할 수 있습니다.
    • HTTP/1.1 에서는 TCP Connection을 유지한다고 하셨는데, 어떤 방식으로 연결이 유지되는 건가요?
      • HTTP 요청을 살펴보면, 헤더에 Connection 이라는 필드가 존재합니다. 이 필드에 값을 keep-alive로 설정하게 되면 TCP Connection을 닫지 않고 유지하게 됩니다.
        • Connection 필드와 관련해서가 아니고 정확히 TCP Connection이 어떻게 유지되는지 설명해주실 수 있나요?
          • 클라이언트와 서버가 TCP Connection을 맺게 되면, 양측에서 TCP Socket을 하나씩 열게 됩니다. 이때 만약 connection 필드의 값이 keep-alive라면, 이 TCP Socket을 요청이 끝나고 바로 닫지 않고 계속해서 열어두게 됩니다. 그리고 이후 요청이 발생하는 경우 같은 TCP Socket을 통해 통신하게 됩니다.
          • Connection을 맺을 때 양측에서 Socket을 열게 되는데, Keep-alive라면 요청이 종료되고 나서 이 소켓을 닫지 않고 계속해서 이 소켓을 통해 통신합니다.
    • 만약 endpoint 서버와 클라이언트 사이에 프록시 서버가 존재한다면, 이러한 경우에 Keep-alive를 어떻게 유지하나요?
      • Keep-Alive 헤더를 포함하여 요청을 보내 연결을 재사용할 수 있습니다.

라이브 코딩 :: 스택 구현#

  • 최대 크기가 존재하고 하나만 삽입, 여러개 삽입, 하나만 빼기, 여러개 빼기, 모두 빼기, 사이즈 구하기 기능을 라이브러리로 만든다고 가정하고 구현해보세요