JWT에 관해 아는만큼 설명해주세요. "JWT(JSON Web Token)는 인증과 정보 교환을 위해 설계된 웹 표준입니다. 이 토큰을 사용함으로써, 두 당사자 간에 정보를 안전하게 전송할 수 있습니다. 특히, JWT는 자가 수용적인 특성을 가지고 있어, 토큰 자체가 검증에 필요한 모든 정보를 포함하고 있습니다. 이는 시스템 간의 통신을 단순화하고, 별도의 저장소가 없어도 인증 정보를 안전하게 교환할 수 있게 해줍니다. JWT는 세 부분으로 구성됩니다: Header, Payload, 그리고 Signature. Header에는 토큰의 타입과 사용된 암호화 알고리즘이 명시됩니다. Payload에는 토큰에 담길 정보, 즉 클레임이 포함되며, 이는 사용자 식별 정보나 유효 기간 같은 데이터를 포함할 수 있습니다..
면접 (Java)/기술면접
Redis에 대해서 설명해주세요 "Redis는 고성능 키-값 저장소로 널리 알려진 오픈 소스 인메모리 데이터 구조 서버입니다. "Remote Dictionary Server"의 약자인 Redis는, 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 구조를 지원합니다. 이러한 특성 덕분에, Redis는 캐싱, 메시지 브로커, 큐, 세션 관리 등 다양한 시나리오에서 사용될 수 있습니다. Redis의 가장 큰 장점 중 하나는 빠른 속도입니다. 데이터를 메모리에 저장하고 접근하기 때문에, 디스크 기반 데이터베이스 시스템보다 훨씬 빠른 읽기와 쓰기 성능을 제공합니다. 이러한 특징은 고속 데이터 읽기/쓰기가 필요한 애플리케이션에 매우 적합합니다. Redis는 단순한 키-값 저장소를 넘어서, 트랜잭션, 펍/..
Docker에 대해 설명해주세요 "Docker는 컨테이너화 기술을 사용하여 애플리케이션을 개발, 배포 및 실행할 수 있게 해주는 오픈 소스 플랫폼입니다. 컨테이너화란 애플리케이션과 그 종속성을 컨테이너라는 격리된 환경에 패키징하는 과정을 의미합니다. 이를 통해 애플리케이션이 실행되는 환경에 구애받지 않고 일관된 동작을 보장할 수 있습니다. Docker의 가장 큰 장점 중 하나는 'Build once, run anywhere'입니다. 즉, 한 번 빌드한 Docker 이미지는 어느 환경에서나 동일하게 실행할 수 있습니다. 이는 개발에서부터 테스트, 스테이징, 프로덕션 환경에 이르기까지 애플리케이션의 일관성과 호환성 문제를 대폭 줄여줍니다. Docker는 이미지와 컨테이너라는 두 가지 핵심 개념을 사용합니다...
모놀리식 아키텍처와 MSA의 장단점은 무엇인가요? "모놀리식 아키텍처는 애플리케이션의 모든 기능이 하나의 코드베이스에 통합되어 있는 구조로, 초기 개발과 배포가 간단하다는 장점이 있습니다. 이는 특히 작은 규모의 프로젝트나 단순한 애플리케이션에서 유리하며, 트랜잭션 관리가 용이합니다. 그러나 애플리케이션이 커지면서 복잡성과 유지보수 난이도가 증가하고, 전체 시스템의 재배포가 필요해지는 단점이 있습니다. 반면에, 마이크로서비스 아키텍처는 애플리케이션을 작고 독립적인 서비스로 분할하여 개발하고 배포합니다. 이는 큰 규모의 애플리케이션을 용이하게 관리하고 확장할 수 있게 하며, 다양한 기술 스택의 사용을 가능하게 하는 기술적 유연성을 제공합니다. 단, 서비스 간의 통신 복잡성, 데이터 일관성 유지, 분산 시스..
프로세스와 쓰레드의 차이에 대해서 설명해주세요 "프로세스와 쓰레드는 실행 중인 프로그램의 구성 요소로, 이 둘의 차이는 메모리와 자원의 공유 여부에 있습니다. 우선, 프로세스는 운영 체제에서 독립적으로 실행되는 프로그램 인스턴스로, 각자 독립된 메모리 주소 공간을 가지고 있어 서로의 자원을 공유하지 않습니다. 이로 인해 프로세스 간에는 격리된 실행 환경이 보장되지만, 프로세스 간 통신(IPC)을 통해 데이터를 교환할 수 있습니다. 반면, 쓰레드는 한 프로세스 내에서 실행되는 여러 실행 흐름으로, 프로세스의 메모리와 자원을 공유합니다. 쓰레드는 효율적인 자원 사용과 빠른 응답 시간을 가능하게 하지만, 동기화 문제나 하나의 쓰레드 오류가 전체 프로세스에 영향을 줄 수 있는 단점이 있습니다. 간단히 말해, 프..

데이터정규화에 대해 설명해주세요 "데이터 정규화는 데이터베이스의 중복을 줄이고, 구조를 체계화하여 데이터의 무결성과 일관성을 보장하기 위한 과정입니다. 간단히 말해서, 정규화는 데이터를 잘 조직해서 데이터베이스 내에서 정보가 흩어지거나 중복되는 것을 방지하는 기술입니다. 이를 통해 데이터 삽입, 수정, 삭제 시 발생할 수 있는 문제들을 최소화합니다. 정규화는 몇 가지 단계, 즉 '정규 형태'로 나누어져 있습니다. 가장 기본적인 제1정규형은 테이블의 모든 컬럼이 원자값만을 가지도록 만드는 것입니다. 다음 단계인 제2정규형과 제3정규형은 테이블이 '잘못된' 종속성을 갖지 않도록 해서 데이터가 중복되는 것을 더욱 줄입니다. 보다 고급 단계로는 BCNF, 제4정규형, 제5정규형 등이 있으며, 각 단계는 데이터의..