내일배움캠프 기술면접 7일차

Skadi·2024년 4월 3일
0

1. 기술면접 #5

Q1. http, https 차이점에 대해 설명해주세요.

HTTP, HTTPS 모두 웹 브라우저와 웹 서버 간의 데이터 전송 프로토콜이지만 HTTP는 데이터를 평문으로 보내어 탈취당할 가능성이 높다면 HTTPS는 보안이 적용되어 있습니다.

HTTPS의 보안에는 대칭키 암호화와 비대칭키 암호화가 있습니다.
대칭키 암호화
클라이언트와 서버가 동일한 키를 사용하여 암호화 및 복호화를 진행합니다.
노출될 경우 위험하지만 연산 속도가 빠릅니다.

비대칭키 암호화
공개키와 개인키로 구성된 키 쌍을 사용하여 암호화 및 복호화를 진행합니다.
노출되어도 상대적으로 안전하지만 연산 속도가 느립니다.

HTTPS 동작 과정
1. 클라이언트가 서버로 최초 연결 시도를 합니다.
2. 서버는 인증서(공개키)를 클라이언트에게 제공합니다.
3. 클라이언트는 인증서의 유효성을 검사하고 세션키를 생성합니다.
4. 클라이언트는 세션키를 서버의 공개키로 암호화하여 전송합니다.
5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻습니다.
6. 클라이언트와 서버는 동일한 세션키를 공유하고, 이를 사용하여 데이터를 암호화 및 복호화합니다.

Q2. DI, IoC에 대해 설명해주세요.

IOC (Inversion of Control - 제어의 역전)
IOC는 개발자가 객체의 생성과 의존성 관리를 직접 수행하지 않고, 이를 프레임워크나 컨테이너에 위임하는 디자인 패턴입니다. 이전에는 개발자가 객체를 직접 생성하고 의존성을 관리했지만, IOC를 사용하면 프레임워크가 이러한 작업을 대신합니다. 이는 제어의 흐름을 역전시키는데, 즉 객체의 생성과 의존성 주입이 프레임워크에 의해 결정됩니다. 이를 통해 코드의 유연성을 높이고 재사용성을 향상시킬 수 있습니다.

DI (Dependency Injection - 의존성 주입)
DI는 IOC의 한 형태로, 객체가 다른 객체에 의존할 때 이 의존성을 외부에서 주입하는 디자인 패턴입니다. 주로 생성자, 세터 메서드, 인터페이스 등을 통해 의존성이 주입됩니다. 이를 통해 객체 간의 결합도를 낮추고 유연성을 향상시킵니다. 또한 DI를 통해 객체의 재사용성과 테스트 용이성이 증가하며, 코드의 변경을 최소화할 수 있습니다.

IOC/DI의 주요 이점
유연성: 객체 간의 결합도를 낮추고 코드를 더 유연하게 만듭니다.
재사용성: 의존성을 주입하여 객체를 더 재사용 가능하게 만듭니다.
테스트 용이성: 의존성을 외부에서 주입하므로 모의 객체(mock object)를 사용하여 테스트하기 용이합니다.
유지보수성: 변경이 발생할 때 해당 객체만 수정하면 되므로 코드의 유지보수가 용이합니다.

Q. 싱글톤 패턴(추가질문)

싱글톤 패턴은 디자인 패턴 중 하나로, 어떤 클래스가 최초 한 번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는 패턴입니다. 이 패턴을 사용하면 애플리케이션 전체에서 해당 클래스의 인스턴스가 하나만 존재하도록 보장할 수 있습니다.

오늘 참고 내용
https://velog.io/@shdrnrhd113/Config-Client-%EC%99%80-QueryDSL-%EC%B6%A9%EB%8F%8C-%EB%AC%B8%EC%A0%9C

0개의 댓글