당장 생각나는 모르는것들 정리

Terror·2025년 2월 3일

시간복잡도,공간복잡도에 대해 설명해주세요

  • 알고리즘의 성능을 평가하는 두가지 중요한 기준

시간 복잡도

  • 알고리즘이 실행되는 데 걸리는 시간을 데이터크기(N)와의 관계로 표현한것
  • Big-O 표기법을 사용해 최악의 경우에서의 수행시간을 나타냅니다
  • Ex)
    • O(1)
      • 데이터 크기에 관계없이 항상 일정한 시간
      • ex) 배열의 인덱스를 활용한 특정 요소 접근
    • O(n)
      • 데이터 크기에 비례해 실행 시간 증가
      • ex) 배열에서 특정 값을 찾기위해 접근 시간
    • O(log n)
      • 데이터 크기가 커질수록 실행시간이 천천히 증가
      • 이진 탐색: 정렬된 배열 또는 리스트에서 원하는 값을 효율적으로 찾기위한 알고리즘
    • O(n^2)
      • 버블정렬,삽입정렬

공간 복잡도

  • 알고리즘이 실행되는 동안 사용하는 메모리 양을 데이터 크기(n)와의 관계로 표현한것
  • 구성 요소
    • 고정공간 (Fixed Space):
      • 알고리즘이 항상 사용하는 메모리 (상수 공간)
      • Ex) 변수, 상수, 고정크기의 배열
    • 가변 공간 (Variable Space):
      • 재귀 호출의 스택 메모리, 동적 배열
  • 표현 방식
    • 시간복잡도와 마찬가지로 Big-O 표기법 사용
      • 상수 공간 O(1)
        • 입력 크기에 관계없이 일정한 메모리 사용
        • Ex) 두 변수만 사용하여 배열 요소 합 계산
      • 선형 공간 O(n)
        • 입력 크기에 비례해 메모리 사용량 증가
        • Ex) 새로운 배열에 데이터 복사

ArrayList,LinkedList의 차이점을 설명해주세요

ArrayList

  • 메모리의 연속적인 특성
  • 동적 배열 기반 선형 자료구조
  • 인덱스기반 조회시 O(1) 의 속도
  • 중간삽입, 중간삭제시 O(n)의 속도
    • 중간데이터 삭제후, 앞의 데이터를 끌어와서, 메모리의 연속적인 특성을 살려야하기 때문에

LinkedList

  • 메모리의 비연속적인 특성
  • 포인터 기반 선형 자료구조
  • 인덱스 기반 조회불가
  • 데이터 기반 조회시 O(n)
  • 중간삽입, 중간삭제시 O(1)
    • 하지만 탐색하기까지의 시간은 여전히 O(n)

HTTP 프로토콜에 대해 설명해주세요

  • Hyper-Text-Transfer-Protocol
  • 데이터를 주고받기위한 프로토콜
  • 서버 - 클라이언트 모델을 따릅니다
  • Stateless, Connectionsless의 특징을 가지고있음

Stateless, Connectionless의 특징에 대해 설명해주세요

Stateless

  • 서버가 이전 상태를 기억하고있지않아, 각 요청이 독립적이며 확장성이 뛰어납니다
    • 확장성이 왜 뛰어나나요?
      • 서버는 클라이언트의 상태를 기억하고있지 않기때문에 (종속되지않음), 따라서 새로운 서버를 똑같이 증설해주기만 하면 되기때문에 확장성이 뛰어나다고 말할 수 있습니다.

Connectionless

  • 서버는 한번의 요청처리후, 연결을 끊는 구조로서, 서버의 리소스를 절약할 수 있습니다

HTTP와 HTTPS의 차이점은 무엇인가요?

HTTP

  • 평문 데이터를 전송하는 프로토콜이기 때문에, 중간에 데이터를 제3자가 가로채가 볼 수 있다
  • HTTP프로토콜이 직접 TCP프로토콜과 통신하였음

HTTPS

  • HTTPS프로토콜이 SSL과 통신하고, SSL이 TCP프로토콜과 통신하는 방식

쿠키와 세션의 차이점에 대해 설명해주세요

  • 공통점
    • 웹 애플리케이션에서 사용자 상태를 유지하기 위한 기술

쿠키

  • 브라우저에 저장되는 작은 데이터파일로, 서버가 사용자의 상태 정보를 클라이언트에 저장하고, 필요할때마다 서버로 전송하는 기술

세션

  • 서버에 사용자 상태 정보를 저장하고, 클라이언트는 세션 ID만 서버로 전송해 서버에서 상태를 유지

TCP/UDP의 차이점을 설명해주세요

TCP

  • 연결형 서비스
  • 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성 보장
  • 속도가 느림
  • 파일교환에서 많이사용됨

UDP

  • 비연결형 서비스
  • 3-way handsahking 과정을 하지않아, 신뢰성이 보장되지 않음
  • 데이터의 수신 여부를 파악하지않기 때문에 속도가 빠름
  • 실시간성이 중요한 스트르밍에 사용됨

3핸드쉐이크의 통신방식이 어떻게 이루어지는지 설명해주세요

  • 정의
    • TCP 네트워크에서 통신하는 장치가 서로 연결이 잘되었는지 확인하는 방법
  1. 클라이언트 -> 서버
    • SYN(승인요청)을 보내며 자신의 ISN (클라이언트의 고유번호)인 X를 보냄
  2. 서버 -> 클라이언트
    • 서버는 클라이언트의 ISN인 X + 1을한후, 서버자신의 ISN인 Y를 보냄
  3. 클라이언트 -> 서버
    • 클라이언트는 X+1, Y+1한 플래그값을 서버로 보내며 연결완료

4핸드쉐이크 통신방식에 대해 설명해주세요

  • 정의
    • TCP 네트워크에서 통신하는 장치의 연결을 해제하는 방법
  • 클라이언트가 연결을 닫으려고할때 실행됨
  1. 클라이언트 -> 서버
    • FIN으로 설정된 세그먼트를 보냄
    • FIN_WAIT_1 상태로 들어가며, 서버의 응답 대기
  2. 서버 -> 클라이언트
    • 서버가 FIN 수신을 확인했다는 의미로, ACK 승인 세그먼트를 보냄
    • CLOSE_WAIT 상태에 들어간다
  3. 클라이언트
    • ACK수신시, FIN_WAIT_2 상태 돌입
  4. 서버 -> 클라이언트
    • 서버가 더이상 보낼데이터가 없다고 판단한순간, 클라이언트에게 FIN 설정된 세그먼트 전달
  5. 클라이언트
    • FIN으로 설정된 세그먼트 수신시, TIME_WAIT 상태 돌입
  6. 클라이언트 -> 서버
    • ACK를 보낸후, 서버는 CLOSED 상태가된다
    • 이후 클라이언트는 어느정도의 시간을 대기한후, 연결이 닫히고 클라이언트와 서버의 모든 자원 연결이 해제된다

참조 문헌

https://dev-coco.tistory.com/161

profile
테러대응전문가

0개의 댓글