1. 지수 백오프 알고리즘이란
2. 이진 트리와 이진 탐색 트리(BST)의 차이점
3. DB에서 index 는 무엇이며 왜 사용하는지
DB의 index: 추가적인 쓰기 작업과 저장 공간을 활용하여 DB Table의 검색 속도를 향상시키기 위한 자료구조
검색 속도 향상, 조인 성능 향상, 정렬된 결과를 반환할 때
3-1. 언제 사용하며 어떻게 구현하는지
3-2. 그럼 모든 컬럼에 대해 index를 설정할 수 있는지
4. SQL과 NoSQL은 어떤 차이가 있는지, SQL과 NoSQL을 어떤 경우에 사용하는지
SQL: RDBMS, 미리 정의된 스키마가 있는 구조화된 데이터에 적합, 행열이 있는 테이블에 데이터 저장, 트랜잭션 관리를 위해 ACID속성을 따름, JOIN 및 복잡한 쿼리 지원, 정규화된 데이터 구조를 사용, 대량의 데이터를 처리하기 위해 수직 확장 필요
복잡한 쿼리 및 트랜잭션 관리가 필요한 애플리케이션에 사용
NoSQL: 비관계형 DBMS, 비정형 및 반정형 데이터에 적합, 데이터 컬렉션 또는 문서에 저장, 반드시 ACID를 따르지 않음, JOIN 및 복잡한 쿼리를 지원하지 않음, 비정규화된 데이터 구조를 사용, 대량의 데이터를 처리하기 위해 수평 확장을 사용
웹 애플리케이션 및 모바일 앱과 같이 높은 성능과 확장성이 필요한 애플리케이션에 사용
5. 가장 좋아하는 정렬 알고리즘, 그 이유와 해당 알고리즘의 동작 방식
6. 도서관에 대한 정보를 저장하는 웹 사이트를 개발한다고 하고 각 도서에 대한 정보를 담는 자료구조를 만들 때, 어떤 자료구조를 왜 사용할 것인지
해시 테이블
7. 정렬 알고리즘에서 일반적으로 가장 빠른 알고리즘 설명
8. 논리적 설계와 물리적 설계에 대해서 상세히 설명
DB의 설계 단계: 요구사항 분석 - 개념적 설계 - 논리적 설계 - 물리적 설계 - 구현
개념적 설계(정보 모델링, 개념화)
현실 세계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
개념 스키마 모델링과 트랜잭션 모델링을 병행 수행
요구 분석 단계에서 나온 결과인 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
DBMS에 독립적인 개념 스키마 설계
논리적 설계(데이터 모델링)
현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 구조로 변환하는 과정
개념적 설계를 통해 나온 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터를 모델화
개념 스키마를 평가 및 정제하고 DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계
트랜잭션의 인터페이스 설계
RDB에서는 테이블을 설계하는 단계
물리적 설계(데이터 구조화)
논리적 설꼐를 통해 나온 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
DB파일의 저장 구조 및 엑세스 경로를 결정
저장 레코드의 형식, 순서, 접근 경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사
9. SQL에서 JOIN에 대해서 상세히 설명
10. 퀵 정렬 알고리즘에서 최악의 시간복잡도를 방지하기 위한 방법