13. Email 인증을 구현 하셨는데 그렇다면 SMTP & POP3 & IMAP 프로토콜에 대해 설명해주세요. "SMTP(Simple Mail Transfer Protocol), POP3(Post Office Protocol 3), 그리고 IMAP(Internet Message Access Protocol)은 이메일 전송과 수신에 사용되는 주요 프로토콜입니다. SMTP는 이메일을 보내기 위해 사용됩니다. 서버 간 또는 클라이언트에서 최종 메일 서버로 메일을 전송할 때 주로 사용되며, 이메일 전송의 표준 프로토콜입니다. POP3는 이메일 클라이언트가 메일 서버로부터 이메일을 가져올 때 사용됩니다. POP3는 서버에서 메일을 다운로드하고, 로컬 장치에 저장한 후 서버 상의 메시지를 삭제하는 방식으로 작동합..
면접 (Java)
19. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요. 핵심 키워드 : 비정형 데이터, 읽기 쓰기, 성능 비교, 유연성과 안정성 "NoSQL과 RDBMS는 데이터를 저장, 관리, 검색하는 방식에 있어 서로 다른 특성과 장단점을 가집니다. RDBMS는 관계형 데이터베이스 관리 시스템으로, 엄격한 스키마와 테이블 기반 구조를 가집니다. 이는 데이터의 일관성과 정확성을 보장하는 ACID 속성을 지원합니다. RDBMS는 복잡한 쿼리와 트랜잭션 관리에 강점이 있으며, 정형화된 데이터 처리에 적합합니다. 단점으로는 비정형 데이터 처리에는 유연하지 않고, 대용량 데이터 처리 시 성능이 저하될 수 있다는 점이 있습니다. NoSQL은 Not Only SQL의 약자로, 비관계형 데이터베이스..
9. 팔로우 기능을 구현하기 위해 설계하신 DB Schema에 대해 자세히 설명해주세요. "팔로우 기능을 위해 설계한 DB 스키마에는 `follows`라는 테이블을 포함하고 있으며, 이 테이블은 `팔로우ID`, `팔로워ID`를 주요 컬럼으로 사용합니다. 여기에 추가적으로, 각 팔로우 관계의 시작 날짜와 최근 수정 날짜를 나타내는 `시작날짜`, `수정날짜` 컬럼도 포함하여, 팔로우 관계의 생성 및 수정 이력을 관리할 수 있게 했습니다. `팔로우Id`와 `팔로워Id` 컬럼은 모두 `User` 테이블의 사용자 ID를 참조하는 외래 키입니다. 이를 통해 어떤 사용자가 다른 사용자를 팔로우하는지에 대한 정보를 저장하고, `User` 테이블과의 연관관계를 통해 사용자의 상세 정보를 불러올 수 있습니다. 연관관계 매..
13. Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요? 핵심 키워드 : 메타데이터, 주석(과의 차이), 리플렉션 "Annotation은 자바 코드에 추가적인 정보를 제공하는 메타데이터입니다. 이는 주석과 다르게, 컴파일 시간이나 실행 시간에 사용될 수 있으며, 리플렉션을 통해 프로그램에 의해 읽힐 수 있습니다. Annotation을 사용함으로써 코드에 대한 데이터를 정의하고, 이 정보를 실행 시간에 분석하여 동작을 변경할 수 있습니다. 예를 들어, `@Override`는 메서드가 상위 클래스의 메서드를 오버라이드한다는 것을 나타내며, `@Deprecated`는 메서드나 클래스가 더 이상 사용되지 않음을 표시합니다. `@SuppressWarnings`는 컴..
5. 사용자 인증 및 상태 관리를 위해 사용 되는 방법엔 어떤 것들이 있나요? "사용자 인증 및 상태 관리를 위해 다양한 방법이 사용됩니다. 전통적으로 세션 기반 인증이 많이 사용되며, 이 경우 서버는 사용자의 로그인 상태를 서버의 메모리나 데이터베이스에 저장합니다. 클라이언트는 세션 ID를 쿠키를 통해 저장하고, 이를 이용해 요청마다 서버에 자신을 인증합니다. 반면, 토큰 기반 인증, 특히 JWT(JSON Web Token)는 상태를 유지하지 않는 RESTful 서비스에 적합하며, 서버는 사용자 상태를 저장하지 않고 사용자는 각 요청에 토큰을 첨부하여 자신을 인증합니다. OAuth와 같은 제3자 인증도 널리 사용되며, 사용자는 Google이나 Facebook 같은 서비스를 통해 다른 애플리케이션에 로그..
7. JVM의 스택과 힙 메모리 영역에 대해 아는 만큼 설명해주실 수 있을까요? 핵심 키워드 : 정적 / 동적 할당, 스레드, GC, 생성, 수거 "JVM 내에서 스택 메모리 영역은 각 스레드 별로 생성되며, 메소드 호출과 로컬 변수에 대한 정보를 정적으로 할당합니다. 이 영역은 메소드 실행이 시작될 때 생성되고, 메소드가 종료되면 해제되는 구조로, 스레드 별 실행 컨텍스트를 관리하는 데 사용됩니다. 반면, 힙 메모리는 JVM이 관리하는 더 큰 저장 공간으로, 모든 스레드가 공유하는 영역입니다. 힙은 주로 동적으로 할당되는 객체와 배열을 저장하는데 사용되며, 이 공간에 저장된 객체들은 가비지 컬렉터(GC)에 의해 더 이상 참조되지 않는 객체가 자동으로 수거되어 메모리를 관리합니다. 스택은 빠르고 효율적인..