diff --git a/Interview/Interview List.md b/Interview/Interview List.md
index 9e734a9d..f5fc74a3 100644
--- a/Interview/Interview List.md
+++ b/Interview/Interview List.md
@@ -14,22 +14,10 @@
-### 언어(Java, C++ 등..)
+### 언어(C++ 등..)
---
-#### 가비지 컬렉션이란?
-
-> 정리되지 않은 메모리, 유효하지 않은 메모리 주소인 가비지를 정리해주는 프로그램
->
-> Heap 메모리를 재활용 하기위해 참조되지 않는 객체들을 해제시켜 가용한 공간을 만드는 작업
->
-> 프로그래머가 직접 메모리를 정리하지 않아도 되어 개발 속도가 대폭 향상된다.
->
-> 메모리를 언제 되찾을 지 결정하기 위한 오버헤드 발생 문제점 존재
-
-
-
#### Vector와 ArrayList의 차이는?
> Vector : 동기식. 한 스레드가 벡터 작업 중이면 다른 스레드가 벡터 보유 불가능
@@ -38,16 +26,6 @@
-#### String과 StringBuffer의 차이는?
-
-> String : 불변. 문자를 수정하려면 지우고 다시 생성해야함 (new) → 문자열 연산이 많으면 기능 떨어짐
->
-> StringBuffer : 가변. 한번 만들고 필요할 때 크기를 변경하여 문자를 변경함 (append()와 같이)
->
-> StringBuilder : 동기화 지원X. 멀티스레드 환경에 부적합 → 싱글 스레드에서 StringBuffer보다 좋음
-
-
-
#### Serialization이란?
> 직렬화. 객체의 상태 혹은 데이터 구조를 기록할 수 있는 포맷으로 변환해줌
@@ -56,55 +34,11 @@
-#### Java의 메모리 영역은?
-
-> - 메소드 / 스택 / 힙
->
-> 메소드 : 바이트 코드, 전역 변수, static 변수
->
-> 스택 : 매개 변수, 지역 변수 (사용 끝나면 바로 소멸, 컴파일 시에 메모리 할당)
->
-> 힙 : new로 생성된 객체(c에서는 malloc()). 호출이 끝나도 사라지지 않고 프로그램 실행 시 동적 할당
-
-
-
-#### 오버로딩과 오버라이딩 차이는?
-
-> 오버로딩 : 메소드의 이름은 같고, 매개변수를 다르게 함으로써 여러 메소드를 만드는 것
->
-> 오버라이딩 : 부모클래스로부터 상속받은 메소드를 재정의하는 것. 자식 객체에서 오버라이딩한 메소드는 호출시 오버라이딩한 메소드가 우선시 되어 호출됨 (동일한 리턴타입, 메소드 이름, 매개변수를 가져야함)
-
-
-
-#### 추상클래스와 인터페이스 차이는?
-
-> 추상클래스 : 클래스 내에 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우. extends를 통해 기능을 이용하고 확장하도록 하는 클래스
->
-> 인터페이스 : 모든 메소드가 추상 메소드인 경우 (여러 implements가 가능해 다중 상속 구현 가능) 뼈대만 있으며, 구현하는 모든 클래스에 대해 강제적으로 메소드를 구현하도록 만듬
-
-
-
-#### 제네릭이란?
-
-> 클래스에서 사용할 타입을 클래스 외부에서 설정하도록 만드는 것
->
-> 제네릭으로 선언한 클래스는, 내가 원하는 타입으로 만들어 사용이 가능함
->
-> <>안에는 참조자료형(클래스, 인터페이스, 배열)만 가능함
->
-> (기본자료형을 이용하기 위해선 wrapper 클래스를 활용해야 함)
-
-
-
-#### 접근 지정자 4가지
+#### Hash란?
-> public : 모든 접근 허용
->
-> protected : 상속받은 클래스 or 같은 패키지만 접근 허용
->
-> default : 기본 제한자. 자신 클래스 내부 or 같은 패키지만 접근 허용
+> 데이터 삽입 및 삭제 시, 기존 데이터를 밀어내거나 채우지 않고 데이터와 연관된 고유한 숫자를 생성해 인덱스로 사용하는 방법
>
-> private : 외부 접근 불가능. 같은 클래스 내에서만 가능
+> 검색 속도가 매우 빠르다
@@ -133,19 +67,13 @@
-#### Hash란?
+#### 스레드는 어떤 방식으로 생성하나요? 장단점도 말해주세요
-> 데이터 삽입 및 삭제 시, 기존 데이터를 밀어내거나 채우지 않고 데이터와 연관된 고유한 숫자를 생성해 인덱스로 사용하는 방법
+> 생성방법 : Runnable(인터페이스)로 선언되어 있는 클래스 or Thread 클래스를 상속받아서 run() 메소드를 구현해주면 됨
>
-> 검색 속도가 매우 빠르다
-
-
-
-#### Java 컴파일 과정
-
-> 컴파일러가 소스코드를 자바 바이트 코드(.class)로 변환
+> 장점 : 빠른 프로세스 생성, 메모리를 적게 사용 가능, 정보 공유가 쉬움
>
-> JVM이 바이트코드를 기계어로 변환하고, 인터프리터 방식으로 애플리케이션 실행
+> 단점 : 데드락에 빠질 위험이 존재
@@ -183,16 +111,6 @@
-#### 스레드는 어떤 방식으로 생성하나요? 장단점도 말해주세요
-
-> 생성방법 : Runnable(인터페이스)로 선언되어 있는 클래스 or Thread 클래스를 상속받아서 run() 메소드를 구현해주면 됨
->
-> 장점 : 빠른 프로세스 생성, 메모리를 적게 사용 가능, 정보 공유가 쉬움
->
-> 단점 : 데드락에 빠질 위험이 존재
-
-
-
#### 포인터를 이해하기 쉽도록 설명해주세요
> 포인터는 메모리 주소를 저장하는 변수임
@@ -201,8 +119,6 @@
>
> 포인터를 사용할 때 주의할 점은, 어떤 주소를 가리키고 있어야만 사용이 가능함
-
-
@@ -315,9 +231,9 @@
#### 페이징과 세그먼테이션이란?
-> ##### 페이징
+> ##### 페이징
>
-> 페이지 단위의 논리-물리 주소 관리 기법.
+> 페이지 단위의 논리-물리 주소 관리 기법.
> 논리 주소 공간이 하나의 연속적인 물리 메모리 공간에 들어가야하는 제약을 해결하기 위한 기법
> 논리 주소 공간과 물리 주소 공간을 분리해야함(주소의 동적 재배치 허용), 변환을 위한 MMU 필요
>
@@ -392,7 +308,7 @@
> fork()는 부모 프로세스의 메모리를 복사해서 사용
>
-> vfork()는 부모 프로세스와의 메모리를 공유함. 복사하지 않기 때문에 fork()보다 생성 속도 빠름.
+> vfork()는 부모 프로세스와의 메모리를 공유함. 복사하지 않기 때문에 fork()보다 생성 속도 빠름.
> 하지만 자원을 공유하기 때문에 자원에 대한 race condition이 발생하지 않도록 하기 위해 부모 프로세스는 자식 프로세스가 exit하거나 execute가 호출되기 전까지 block된다
@@ -469,16 +385,26 @@
#### DBMS의 기능은?
-> - 정의 기능(DDL: Data Definition Language)
-> - 데이터베이스가 어떤 용도이며 어떤 식으로 이용될것이라는 것에 대한 정의가 필요함
+
+> - 정의 기능(DDL: Data Definition Language)
+ >
+
+- 데이터베이스가 어떤 용도이며 어떤 식으로 이용될것이라는 것에 대한 정의가 필요함
+
> - CREATE, ALTER, DROP, RENAME
->
-> - 조작 기능(DML: Data Manipulation Language)
-> - 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야함
+>
+> - 조작 기능(DML: Data Manipulation Language)
+ >
+
+- 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야함
+
> - SELECT, INSERT, UPDATE, DELETE
->
-> - 제어 기능(DCL: Data Control Language)
-> - 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령
+>
+> - 제어 기능(DCL: Data Control Language)
+ >
+
+- 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령
+
> - GRANT REVOKE
@@ -499,7 +425,7 @@
>
> - 사용자가 view에 접근했을 때 해당하는 데이터를 원본에서 가져온다.
>
-> view에 나타나지 않은 데이터를 간편히 보호할 수 있는 장점 존재
+> view에 나타나지 않은 데이터를 간편히 보호할 수 있는 장점 존재
@@ -574,26 +500,32 @@
#### JDBC와 ODBC의 차이는?
> - JDBC
-> 자바에서 DB에 접근하여 데이터를 조회, 삽입, 수정, 삭제 가능
-> DBMS 종류에 따라 맞는 jdbc를 설치해야함
+ > 자바에서 DB에 접근하여 데이터를 조회, 삽입, 수정, 삭제 가능
+ > DBMS 종류에 따라 맞는 jdbc를 설치해야함
> - ODBC
-> 응용 프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스
-> MS사에서 만들었으며, Excel/Text 등 여러 종류의 데이터에 접근할 수 있음
+ > 응용 프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스
+ > MS사에서 만들었으며, Excel/Text 등 여러 종류의 데이터에 접근할 수 있음
#### 데이터 베이스에서 인덱스(색인)이란 무엇인가요
-
+
> - 책으로 비유하자면 목차로 비유할 수 있다.
> - DBMS에서 저장 성능을 희생하여 데이터 읽기 속도를 높이는 기능
> - 데이터가 정렬되어 들어간다
> - 양이 많은 테이블에서 일부 데이터만 불러 왔을 때, 이를 풀 스캔 시 처리 성능 떨어짐
> - 종류
-> - B+-Tree 인덱스 : 원래의 값을 이용하여 인덱싱
+ >
+
+- B+-Tree 인덱스 : 원래의 값을 이용하여 인덱싱
+
> - Hash 인덱스 : 칼럼 값으로 해시 값 게산하여 인덱싱, 메모리 기반 DB에서 많이 사용
> - B>Hash
> - 생성시 고려해야 할 점
-> - 테이블 전체 로우 수 15%이하 데이터 조회시 생성
+ >
+
+- 테이블 전체 로우 수 15%이하 데이터 조회시 생성
+
> - 테이블 건수가 적으면 인덱스 생성 하지 않음, 풀 스캔이 빠름
> - 자주 쓰는 컬럼을 앞으로 지정
> - DML시 인덱스에도 수정 작업이 동시에 발생하므로 DML이 많은 테이블은 인덱스 생성 하지 않음
@@ -630,32 +562,39 @@
#### TCP/IP 프로토콜을 스택 4계층으로 짓고 설명하시오
> - ##### LINK 계층
->
-> > 물리적인 영역의 표준화에 대한 결과
-> >
-> > 가장 기본이 되는 영역으로 LAN, WAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역이다
+
+ >
+ > > 물리적인 영역의 표준화에 대한 결과
+ > >
+ > > 가장 기본이 되는 영역으로 LAN, WAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역이다
+
>
> - ##### IP 계층
->
-> > 경로 검색을 해주는 계층임
-> >
-> > IP 자체는 비연결지향적이며, 신뢰할 수 없는 프로토콜이다
-> >
-> > 데이터를 전송할 때마다 거쳐야할 경로를 선택해주지만, 경로가 일정하지 않음. 또한 데이터 전송 중에 경로상 문제가 발생할 때 데이터가 손실되거나 오류가 발생하는 문제가 발생할 수 있음. 따라서 IP 계층은 오류 발생에 대한 대비가 되어있지 않은 프로토콜임
+
+ >
+ > > 경로 검색을 해주는 계층임
+ > >
+ > > IP 자체는 비연결지향적이며, 신뢰할 수 없는 프로토콜이다
+ > >
+ > > 데이터를 전송할 때마다 거쳐야할 경로를 선택해주지만, 경로가 일정하지 않음. 또한 데이터 전송 중에 경로상 문제가 발생할 때 데이터가 손실되거나 오류가 발생하는 문제가 발생할 수 있음. 따라서 IP 계층은 오류 발생에 대한 대비가 되어있지 않은 프로토콜임
+
>
> - ##### TCP/UDP (전송) 계층
->
-> > 데이터의 실제 송수신을 담당함
-> >
-> > UDP는 TCP에 비해 상대적으로 간단하고, TCP는 신뢰성잇는 데이터 전송을 담당함
-> >
-> > TCP는 데이터 전송 시, IP 프로토콜이 기반임 (IP는 문제 해결에 문제가 있는데 TCP가 신뢰라고?)
-> >
-> > → IP의 문제를 해결해주는 것이 TCP인 것. 데이터의 순서가 올바르게 전송 갔는지 확인해주며 대화를 주고받는 방식임. 이처럼 확인 절차를 걸치며 신뢰성 없는 IP에 신뢰성을 부여한 프로토콜이 TCP이다
+
+ >
+ > > 데이터의 실제 송수신을 담당함
+ > >
+ > > UDP는 TCP에 비해 상대적으로 간단하고, TCP는 신뢰성잇는 데이터 전송을 담당함
+ > >
+ > > TCP는 데이터 전송 시, IP 프로토콜이 기반임 (IP는 문제 해결에 문제가 있는데 TCP가 신뢰라고?)
+ > >
+ > > → IP의 문제를 해결해주는 것이 TCP인 것. 데이터의 순서가 올바르게 전송 갔는지 확인해주며 대화를 주고받는 방식임. 이처럼 확인 절차를 걸치며 신뢰성 없는 IP에 신뢰성을 부여한 프로토콜이 TCP이다
+
>
> - ##### 애플리케이션 계층
->
-> > 서버와 클라이언트를 만드는 과정에서 프로그램 성격에 따라 데이터 송수신에 대한 약속들이 정해지는데, 이것이 바로 애플리케이션 계층이다
+
+ >
+ > > 서버와 클라이언트를 만드는 과정에서 프로그램 성격에 따라 데이터 송수신에 대한 약속들이 정해지는데, 이것이 바로 애플리케이션 계층이다
@@ -785,13 +724,13 @@
#### Dispatcher-Servlet
-> 서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 제일 앞에서 처리해주는 프론트 컨트롤러를 말함
+> 서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 제일 앞에서 처리해주는 프론트 컨트롤러를 말함
>
> 따라서 서버가 받기 전에, 공통처리 작업을 디스패처 서블릿이 처리해주고 적절한 세부 컨트롤러로 작업을 위임해줍니다.
>
> 디스패처 서블릿이 처리하는 url 패턴을 지정해줘야 하는데, 일반적으로는 .mvc와 같은 패턴으로 처리하라고 미리 지정해줍니다.
>
->
+>
> 디스패처 서블릿으로 인해 web.xml이 가진 역할이 상당히 축소되었습니다. 기존에는 모든 서블릿을 url 매핑 활용을 위해 모두 web.xml에 등록해 주었지만, 디스패처 서블릿은 그 전에 모든 요청을 핸들링해주면서 작업을 편리하게 할 수 있도록 도와줍니다. 또한 이 서블릿을 통해 MVC를 사용할 수 있기 때문에 웹 개발 시 큰 장점을 가져다 줍니다.
@@ -876,4 +815,4 @@
-
\ No newline at end of file
+
diff --git a/Interview/[Java] Interview List.md b/Interview/[Java] Interview List.md
new file mode 100644
index 00000000..9eb73500
--- /dev/null
+++ b/Interview/[Java] Interview List.md
@@ -0,0 +1,166 @@
+# [Java ]Interview List
+
+> - 간단히 개념들을 정리해보며 머리 속에 넣자~
+> - 질문 자체에 없는 질문 의도가 있는 경우 추가 했습니다.
+> - 완전한 설명보다는 면접 답변에 초점을 두며, 추가로 답변하면 좋은 키워드를 기록했습니다.
+
+- [언어(Java, C++ ... )](https://github.com/kim6394/Dev_BasicKnowledge/blob/master/Interview/README.md#언어)
+- [운영체제](https://github.com/kim6394/Dev_BasicKnowledge/blob/master/Interview/README.md#운영체제)
+- [데이터베이스](https://github.com/kim6394/Dev_BasicKnowledge/blob/master/Interview/README.md#데이터베이스)
+- [네트워크](https://github.com/kim6394/Dev_BasicKnowledge/blob/master/Interview/README.md#네트워크)
+- [스프링](https://github.com/kim6394/Dev_BasicKnowledge/blob/master/Interview/README.md#스프링)
+
+### 가비지 컬렉션이란?
+
+> 배경 & 질문 의도
+
+- JVM 의 구조, 특히 Heap Area 에 대한 이해
+
+> 답변
+
+- 자바가 실행되는 JVM 에서 사용되는 객체, 즉 Heap 영역의 객체를 관리해 주는 기능을 말합니다.
+- 이 과정에서 stop the world 가 일어나게 되며, 이 일련 과정을 효율적으로 하기 위해서는 가비지 컬렉터 변경 또는 세부 값 조정이 필요합니다.
+
+> 키워드 & 꼬리 질문
+
+- 가비지 컬렉션 과정, 가비지 컬렉터 종류에 대한 이해
+
+### StringBuilder와 StringBuffer의 차이는?
+
+> 배경 & 질문 의도
+
+- mutation(가변), immutation(불변) 이해
+- 불변 객체인 String 의 연산에서 오는 퍼포먼스 이슈 이해
+- String
+ - immutation
+ - String 문자열을 연산하는 과정에서 불변 객체의 반복 생성으로 퍼포먼스가 낮아짐.
+
+> 답변
+
+- 같은점
+ - mutation
+ - append() 등의 api 지원
+- 차이점
+ - StringBuilder 는 동기화를 지원하지 않아 싱글 스레드에서 속도가 빠릅니다.
+ - StringBuffer 는 멀티 스레드 환경에서의 동기화를 지원하지만 이런 구현은 로직을 의심해야 합니다.
+
+> 키워드 & 꼬리 질문
+
+- [실무에서의 String 연산](https://hyune-c.tistory.com/entry/String-%EC%9D%84-%EC%9E%98-%EC%8D%A8%EB%B3%B4%EC%9E%90)
+
+### Java의 메모리 영역은?
+
+> 배경 & 질문 의도
+
+- JVM 구조의 이해
+
+> 답변
+
+- 메소드, 힙, 스택, pc 레지스터, 네이티브 영역으로 구분됩니다.
+ - 메소드 영역은 클래스가 로딩될 때 생성되며 주로 static 변수가 저장됩니다.
+ - 힙 영역은 런타임시 할당되며 주로 객체가 저장됩니다.
+ - 스택 영역은 컴파일시 할당되며 메소드 호출시 지역변수가 저장됩니다.
+ - pc 레지스터는 스레드가 생성될 때마다 생성되는 영역으로 다음 명령어의 주소를 알고 있습니다.
+ - 네이티브 영역은 자바 외 언어로 작성된 코드를 위한 영역입니다.
+- 힙과 스택은 같은 메모리 공간을 동적으로 공유하며, 과도하게 사용하는 경우 OOM 이 발생할 수 있습니다.
+- 힙 영역은 GC 를 통해 정리됩니다.
+
+> 키워드 & 꼬리 질문
+
+- Method Area (Class Area)
+ - 클래스가 로딩될 때 생성됩니다.
+ - 클래스, 변수, 메소드 정보
+ - static 변수
+ - Constant pool - 문자 상수, 타입, 필드, 객체참조가 저장됨
+- Stack Area
+ - 컴파일 타임시 할당됩니다.
+ - 메소드를 호출할 때 개별적으로 스택이 생성되며 종료시 해제 됩니다.
+ - 지역 변수 등 임시 값이 생성되는 영역
+ - Heap 영역에 생성되는 객체의 주소 값을 가지고 있습니다.
+- Heap Area
+ - 런타임시 할당 됩니다.
+ - new 키워드로 생성되는 객체와 배열이 저장되는 영역
+ - 참조하는 변수가 없어도 바로 지워지지 않습니다. -> GC 를 통해 제거됨.
+- Java : GC, 컴파일/런타임 차이
+- CS : 프로세스/단일 스레드/멀티 스레드 차이
+
+### 오버로딩과 오버라이딩 차이는?
+
+> 배경 & 질문 의도
+
+> 답변
+
+- 오버로딩
+ - 반환타입 관계 없음, 메소드명 같음, 매개변수 다름 (자료형 또는 순서)
+- 오버라이딩
+ - 반환타입, 메소드명, 매개변수 모두 같음
+ - 부모 클래스로부터 상속받은 메소드를 재정의하는 것.
+
+> 키워드 & 꼬리 질문
+
+- 오버로딩은 생성자가 여러개 필요한 경우 유용합니다.
+- 결합도를 낮추기 위한 방법 중 하나로 interface 사용이 있으며, 이 과정에서 오버라이딩이 적극 사용됩니다.
+
+### 추상 클래스와 인터페이스 차이는?
+
+> 배경 & 질문 의도
+
+> 답변
+
+- abstract class 추상 클래스
+ - 단일 상속을 지원합니다.
+ - 변수를 가질 수 있습니다.
+ - 하나 이상의 abstract 메소드가 존재해야 합니다.
+ - 자식 클래스에서 상속을 통해 abstract 메소드를 구현합니다. (extends)
+ - abstract 메소드가 아닌 구현된 메소드를 상속 받을 수 있습니다.
+- interface 인터페이스
+ - 다중 상속을 지원합니다.
+ - 변수를 가질 수 없습니다. 상수는 가능합니다.
+ - 모든 메소드는 선언부만 존재합니다.
+ - 구현 클래스는 선언된 모든 메소드를 overriding 합니다.
+
+> 키워드 & 꼬리 질문
+
+- java 버전이 올라갈수록 abstract 의 기능을 interface 가 흡수하고 있습니다.
+ - java 8: interface 에서 default method 사용 가능
+ - java 9: interface 에서 private method 사용 가능
+
+### 제네릭이란?
+
+- 클래스에서 사용할 타입을 클래스 외부에서 설정하도록 만드는 것
+- 제네릭으로 선언한 클래스는, 내가 원하는 타입으로 만들어 사용이 가능함
+- <안에는 참조자료형(클래스, 인터페이스, 배열)만 가능함 (기본자료형을 이용하기 위해선 wrapper 클래스를 활용해야 함)
+- 참고
+ - Autoboxing, Unboxing
+
+### 접근 제어자란? (Access Modifier)
+
+> 배경 & 질문 의도
+
+> 답변
+
+- public: 모든 접근 허용
+- protected: 상속받은 클래스 or 같은 패키지만 접근 허용
+- default: 기본 제한자. 자신 클래스 내부 or 같은 패키지만 접근 허용
+- private: 외부 접근 불가능. 같은 클래스 내에서만 가능
+
+> 키워드 & 꼬리 질문
+
+- 참고
+ - 보통 명시적인 표현을 선호하여 default 는 잘 쓰이지 않습니다.
+
+### Java 컴파일 과정
+
+> 배경 & 질문 의도
+
+- CS 에 가까운 질문
+
+> 답변
+
+1. 컴파일러가 변환: 소스코드 -> 자바 바이트 코드(.class)
+2. JVM이 변환: 바이트코드 -> 기계어
+3. 인터프리터 방식으로 애플리케이션 실행
+
+> 키워드 & 꼬리 질문
+
+- JIT 컴파일러