sagecode 88

[Interview Question] INNER JOIN, LEFT JOIN 차이는 무엇인가요?

INNER JOIN의 경우 조인 조건을 만족한 행만 반환합니다. 교집합 개념이라고 할 수 있습니다.예를들면 어떤 상품을 구매한 유저를 찾기 위해 상품주문 테이블과 유저 테이블을 조인했다고 가정하면,INNER JOIN을 했을 때, 상품 주문을 한 유저들만 반환합니다. LEFT JOIN의 경우 왼쪽 테이블의 모든 행을 반환하고 오른쪽 테이블 행 중 조인 조건을 만족한 행도 가져옵니다.매칭되는 값이 없다면 NULL값으로 반환합니다.LEFT JOIN을 했을 때, 모든 유저를 반환하고 상품 주문을 한 유저는 상품주문 id를 반환하며 상품주문을 하지 않는 유저는 NULL을 반환합니다.

Interview Question 2025.09.02

[Interview Question] Index에 대해서 설명해보세요

데이터베이스에서 index는 데이터를 빠르게 찾을 수 있게 도와주는 자료구조입니다. 테이블에 index를 만약에 설정하지 않는다면 최악의 경우 모든 데이터를 다 조회해야하는 O(n)의 시간복잡도가 나올 수 있다. 하지만 인덱스를 도입하게 되면 O(log n)까지 줄일 수 있습니다. 그 이유는 index가 B-tree 자료구조로 형성되어 있기 때문입니다. B-tree 는 Balanced Tree라고 하며, 균형 다진 탐색 트리라고 한다. 모든 리프 노드의 차수가 동일하므로, 트리 높이가 일정하게 유지됩니다. 또한, B-Tree는 각 노드가 여러 개의 키(key)와 자식 포인터를 가질 수 있는 트리 구조입니다. 검색할 때는 루트 노드부터 시작하여 현재 노드의 키와 비교하면서 범위를 좁혀가며 탐색합니다. 이러..

Interview Question 2025.09.02

[Interview Question] 정규화와 비정규화의 차이를 설명해주세요.

관계형 데이터베이스에서 정규화는 데이터를 체계적으로 쪼개어서 데이터의 일관성과 정합성을 보장하기 위한 방법입니다. 예를 들어, 학생이 여러 과목을 수강한다고 했을 때, 학생과 과목 정보를 한 테이블에 모두 넣어버리면 이름이나 과목명이 여러 번 반복 저장되면서, 한 번의 수정이 전체 데이터에 반영되지 않는 문제가 생깁니다. 정규화를 적용하면 학생, 과목, 수강과 같이 테이블을 나누어 관리하게 되고, 이를 통해 데이터 중복을 최소화하고 무결성을 지킬 수 있습니다.하지만 이렇게 테이블을 세분화하게되면 데이터를 가져올 때, 여러 테이블을 JOIN 해야하는 상황이 발생해 성능이 떨어질 수 있다는 단점이 있습니다. 관계형 데이터베이스에서 비정규화는 성능 최적화를 위해 의도적으로 데이터를 중복 저장하거나 테이블을 합..

Interview Question 2025.09.01

[Interview Question] RDBMS와 NoSQL의 차이점은 무엇인가요?

RDBMS는 관계형 데이터베이스로 테이블 기반으로 데이터를 저장하고 관리합니다. 각 행은 개별 데이터를 나타내고 열은 그 데이터들의 속성을 의미합니다. SQL을 사용하여 데이터를 조작하고 조회합니다. 관계형 데이터베이스의 장점으로는단순 저장 뿐만 아니라 계산, 정렬, 그룹화, 집계 등 의미있는 정보를 도출 할 수 있습니다.또한, Primary Key, Foreign Key, Not NULL, Unique, Default, Check 같은 제약 조건으로 데이터의 정확성과 일관성을 보장 할 수 있습니다.특정 사용자에게 테이블, 열, 심지어 개별 셀 수준까지 접근 권한을 제한할 수 있습니다. 관계형 데이터베이스는 MySQL, PostgreSQL 등이 있습니다. NoSQL 데이터베이스는 목적에 맞게 쉽게 확장할..

Interview Question 2025.09.01

[Interview Question] IoC와 DI란 무엇인가요?

spring boot는 IoC(제어의 역전) 컨테이너 즉, applicationContext가 spring에서 사용하는 bean이라는 객체를 직접 생성하고 관리합니다. 또한 DI(의존성 주입)을 이용해 의존 객체를 외부에서 주입해줍니다. 예를들어 service에서 repository 객체가 필요한 경우 new 연산자로 직접 객체를 생성하게 되면 결합도가 너무 높아집니다. 따라서 ioc 컨테이너가 미리 bean객체를 생성해두고 외부에서 생성자주입, 세터주입, 필드주입 등 여러가지 방식으로 넣어줍니다.

Interview Question 2025.08.31

[Interview Question] 예외 처리 방식(Checked vs Unchecked Exception)은 어떻게 다른가요?

Exception에는 CheckedException과 UncheckedException 두 가지 예외가 존재합니다. CheckedException 같은 경우에는 컴파일시 발생하는 에러입니다. 이 에러를 해결하지 않으면 프로그램이 컴파일 되지 않습니다. UncheckedException 같은 경우에는 런타임시 발생하는 에러입니다. 이 에러들은 개발자의 실수 또는 논리적 오류에서 발생하는 오류입니다.

Interview Question 2025.08.31