오늘의 CS 질문 키워드 - 2주차

jjuny7712·2024년 1월 31일
0

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

알고리즘의 성능을 측정하는데 사용합니다.

  • 시간복잡도
    • 알고리즘의 수행시간을 빅오 표기법으로 나타낸 것.
  • 공간복잡도
    • 알고리즘이 실행되는 동안 사용되는 메모리 공간을 말한다.

최악의 경우의 시간을 계산하는 빅-오(Big-O) 표기법을 주로 사용합니다.

  • 다른 표기법도 있는지?

    • 평균의 경우를 측정하는 빅-세타, 최선의 경우를 측정하는 빅-오메가 표기법도 존재한다. 다만, 알고리즘을 평가할 때는 보통 최악의 경우를 측정하는 빅오 표기법을 주로 사용한다.
  • 왜 알고리즘을 평가할 때 보통 최악의 경우를 볼까?

    • 최악의 경우를 가정하고 프로그래밍해야 예외상황이 발생하지 않기 때문에

대칭키, 비대칭 암호화 방식에 대해 설명해주세요

  • 대칭키 암호화 방식
    • 암호화, 복호화에 사용하는 키가 동일하며, 이때 사용하는 키를 비밀키라고한다.
    • 공개키 암호화 방식에 비해 연산 속도가 빠르지만, 키를 교환하는 과정에서 유출되는 키 교환문제가 발생할 수 있다.
    • 대표적으로 DES, AES가 있다.
  • 비대칭키 암호화 방식
    • 암호화, 복호화에 사용하는 키가 서로 다르며, 이때 사용하는 키를 공개키, 비밀키라고 한다.
    • 키 교환문제를 해결하여 더 안전하지만, 암호화와 복호화를 위해 복잡한 수학 연산을 수행하기 때문에 대칭키 알고리즘에 비해 속도가 느리다는 단점이 있다.
    • 대표적으로 RSA가 있다.
    • 사용용도에 따라 암복호화에 서로 다른 키를 사용할 수 있다.
    • 암호화에 상대방의 공개키를 사용할 때
      • 상대방의 공개키로 암호화를 하는 것은 비밀키로만 복호화를 할 수 있기 때문에 데이터의 보안을 중시할때 사용한다.
    • 암호화에 자신의 비밀키를 사용할 때
      • 자신의 비밀키로 암호화를 하는 것은 누구든지 공개키로 복호화를 할 수 있기 때문에 데이터의 보안 보다는, 데이터의 출처를 검증하기 위해 사용한다.
  • 단방향 암호화 알고리즘은?
    • 암호화된 데이터를 복호화할 수 없는 암호화 기법이다. 주로 해싱을 사용한다.
    • 동일한 평문은 동일한 암호문으로 암호화되지만 이를 바탕으로 평문을 복원할수는 없다.
    • 대표적으로 MD5 와 SHA가 있다.
  • 단방향 암호화 알고리즘의 단점은?
    • 암호학적 해시 함수는 알고리즘을 이용하여 원본데이터를 해시화 하는것이기 때문에 언젠가는 충돌이 발견되고 공격이 성공될 수 있다.
  • 단점을 보완하기 위해서는?
    • 키스트레칭과 솔팅을 사용한다.
    • 키스트레칭은 해싱을 여러번 반복하는 것이고, 무차별 공격을 방지한다.
    • 솔팅은 암호화할 값에 솔트라는 특정 문자열을 넣고 해시값을 만드는 것으로, 레인보우테이블 공격을 방지한다.

TCP, UDP 차이에 대해 설명해주세요

TCP와 UDP는 전송계층의 프로토콜입니다.

  • TCP
    • TCP는 연결지향 프로토콜이며, 신뢰성있는 데이터 송수신, 순차적인 데이터 전송, 흐름제어, 혼잡제어 기능을 제공합니다.
  • UDP
    • UDP는 비연결형 프토콜이며, TCP가 제공하는 기능을 수행하지는 않지만 데이터 전송속도가 빠르다는 장점이 있다.
  • 흐름제어란?
    • 리시버의 처리속도에 맞춰서 센더가 데이터의 양을 조절하는 것을 말한다.
  • 흐름제어 기법의 종류는?
    • Stop-And-Wait 기법은 전송한 패킷에 대한 확인 응답을 받아야만 그 다음 패킷을 전송한다.
    • Sliding Window 기법은 리시버에서 설정한 윈도우 사이즈만큼 센더가 패킷을 전송하고, 각 패킷에 대한 확인 응답을 받으면 윈도우를 옆으로 슬라이딩하면서 그 다음 패킷을 전송한다.
  • 혼잡제어란?
    • 네트워크의 혼잡을 피하기 위해 센더가 보내는 데이터의 전송 속도를 제어하는 기법이다.
  • 혼잡제어의 종류는?
    • AIMD (Addictive Increase Multicative Decrease)는 전송 패킷 수를 하나씩 늘려가다가 패킷 손실이 발생하면 윈도우 사이즈를 반으로 줄이는 방법이다. 윈도우 사이즈를 하나씩 늘리기 때문에 초기 네트워크의 큰 대역폭을 사용하기 까지 오래걸린다.
    • Slow Start 전송 패킷 수를 배수로 늘려가다가 패킷 손실이 발생하면 윈도우 사이즈를 1로 줄는 방법이다.

Spring Framework에 대해서 설명해주세요

Spring은 자바진영의 웹 프레임워크를 말한다.

  • POJO란 무엇인가?
    • 순수한 자바 객체를 말한다.
  • 스프링 프레임워크의 특징은?
    • 관점지향프로그래밍(AOP)는 핵심로직에서 공통 로직을 분리하는 방법이다.
    • 제어의역전(IOC)은 인스턴스의 생성부터 소멸까지 라이프사이클을 개발자가 아닌 컨테이너가 대신 관리해주는 것을 말한다.
    • 의존성 주입(DI)은 의존하는 객체를 직접 생성(new)하지 않고, 스프링 컨테이너에서 의존하는 객체를 전달(주입) 받는 것
    • PSA(Portable Service Abstraction)는 어노테이션 같이 하나의 추상화로 여러 서비스를 묶어둔 것을 말한다.
  • Bean은?
    • IoC 컨테이너(스프링 컨테이너)가 관리하는 자바 객체를 의미한다.
  • DI의 종류는?
    • 필드 주입, 세터주입, 생성자 주입
profile
차곡차곡

0개의 댓글