├── 01-DATA_STRUCTURE_ALGORITHM.md ├── 02-OPERATING_SYSTEM.md ├── 03-NETWORK.md ├── 04-DATABASE.md ├── 05-ETC.md ├── 06-ALGORITHM.md ├── 07-JAVA_SPRING.md └── README.md /01-DATA_STRUCTURE_ALGORITHM.md: -------------------------------------------------------------------------------- 1 | ## 자료구조 2 | ### 혹시 코딩테스트를 원한다면... [이쪽](https://github.com/VSFe/Algorithm_Study)은 어떠신가요? ~~제껍니다...~~ 3 | 4 |
5 |

1. 시간복잡도와 공간복잡도에 대해 설명해 주세요.

6 | 11 |
12 | 13 |
14 |

2. 링크드 리스트에 대해 설명해 주세요.

15 | 19 |
20 | 21 |
22 |

3. 스택과 큐에 대해서 설명해 주세요.

23 | 30 |
31 | 32 |
33 |

4. 해시 자료구조에 대해 설명해 주세요.

34 | 42 |
43 | 44 |
45 |

5. 트리와 이진트리, 이진탐색트리에 대해 설명해 주세요.

46 | 54 |
55 | 56 |
57 |

6. 힙에 대해 설명해 주세요.

58 | 63 |
64 | 65 |
66 |

7. BBST (Balanced Binary Search Tree) 와, 그 종류에 대해 설명해 주세요.

67 | 72 |
73 | 74 |
75 |

8. 정렬 알고리즘에 대해 설명해 주세요.

76 | 87 |
88 | 89 |
90 |

9. 그래프 자료구조에 대해 설명하고, 이를 구현할 수 있는 두 방법에 대해 설명해 주세요.

91 | 96 |
97 | 98 |
99 |

10. 그래프에서, 최단거리를 구하는 방법에 대해 설명해 주세요.

100 | 107 |
108 | 109 |
110 |

11. 재귀함수에 대해 설명해 주세요.

111 | 115 |
116 | 117 |
118 |

12. MST가 무엇이고, 어떻게 구할 수 있을지 설명해 주세요.

119 | 124 |
125 | 126 |
127 |

13. Thread Safe 한 자료구조가 있을까요? 없다면, 어떻게 Thread Safe 하게 구성할 수 있을까요?

128 | 132 |
133 | 134 |
135 |

14. 문자열을 저장하고, 처리하는 주요 자료구조 및 알고리즘 (Trie, KMP, Rabin Karp 등) 에 대해 설명해 주세요.

136 | 138 |
139 | 140 |
141 |

15. 이진탐색이 무엇인지 설명하고, 시간복잡도를 증명해 보세요.

142 | 147 |
148 | 149 |
150 |

16. 그리디 알고리즘과 동적 계획법을 비교해 주세요.

151 | 155 |
156 | -------------------------------------------------------------------------------- /02-OPERATING_SYSTEM.md: -------------------------------------------------------------------------------- 1 | ## 운영체제 2 | 3 |
4 |

1. 시스템 콜이 무엇인지 설명해 주세요.

5 | 13 |
14 | 15 |
16 |

2. 인터럽트가 무엇인지 설명해 주세요.

17 | 23 |
24 | 25 |
26 |

3. 프로세스가 무엇인가요?

27 | 36 |
37 | 38 |
39 |

4. 프로세스 주소공간에 대해 설명해 주세요.

40 | 50 |
51 | 52 |
53 |

5. 단기, 중기, 장기 스케쥴러에 대해 설명해 주세요.

54 | 60 |
61 | 62 |
63 |

6. 컨텍스트 스위칭 시에는 어떤 일들이 일어나나요?

64 | 69 |
70 | 71 |
72 |

7. 프로세스 스케줄링 알고리즘에는 어떤 것들이 있나요?

73 | 82 |
83 | 84 |
85 |

8. 뮤텍스와 세마포어의 차이점은 무엇인가요?

86 | 91 |
92 | 93 |
94 |

9. Deadlock 에 대해 설명해 주세요.

95 | 102 |
103 | 104 |
105 |

10. 프로그램이 컴파일 되어, 실행되는 과정을 간략하게 설명해 주세요.

106 | 114 |
115 | 116 |
117 |

11. IPC가 무엇이고, 어떤 종류가 있는지 설명해 주세요.

118 | 122 |
123 | 124 |
125 |

12. Thread Safe 하다는 것은 어떤 의미인가요?

126 | 132 |
133 | 134 |
135 |

13. Thread Pool, Monitor, Fork-Join에 대해 설명해 주세요.

136 | 140 |
141 | 142 |
143 |

14. 캐시 메모리 및 메모리 계층성에 대해 설명해 주세요.

144 | 154 |
155 | 156 |
157 |

15.메모리의 연속할당 방식 세 가지를 설명해주세요. (first-fit, best-fit, worst-fit)

158 | 162 |
163 | 164 |
165 |

16. Thrashing 이란 무엇인가요?

166 | 169 |
170 | 171 |
172 |

17. 가상 메모리란 무엇인가요?

173 | 181 |
182 | 183 |
184 |

18. 세그멘테이션과 페이징의 차이점은 무엇인가요?

185 | 194 |
195 | 196 |
197 |

19. TLB는 무엇인가요?

198 | 205 |
206 | 207 |
208 |

20. 동기화를 구현하기 위한 하드웨어적인 해결 방법에 대해 설명해 주세요.

209 | 214 |
215 | 216 |
217 |

21. 페이지 교체 알고리즘에 대해 설명해 주세요.

218 | 223 |
224 | 225 |
226 |

22. File Descriptor와, File System에 에 대해 설명해 주세요.

227 | 231 |
232 | 233 |
234 |

23. 동기와 비동기, 블로킹과 논블로킹의 차이에 대해 설명해 주세요.

235 | 240 |
241 | -------------------------------------------------------------------------------- /03-NETWORK.md: -------------------------------------------------------------------------------- 1 | ## 네트워크 2 | 3 |
4 |

1. 쿠키와 세션의 차이에 대해 설명해 주세요.

5 | 11 |
12 | 13 |
14 |

2. HTTP 응답코드에 대해 설명해 주세요.

15 | 20 |
21 | 22 |
23 |

3. HTTP Method 에 대해 설명해 주세요.

24 | 30 |
31 | 32 |
33 |

4. HTTP에 대해 설명해 주세요.

34 | 39 |
40 | 41 |
42 |

5. 웹소켓과 소켓 통신의 차이에 대해 설명해 주세요.

43 | 48 |
49 | 50 |
51 |

6. HTTP/1.1과 HTTP/2의 차이점은 무엇인가요?

52 | 56 |
57 | 58 |
59 |

7. TCP와 UDP의 차이에 대해 설명해 주세요.

60 | 71 |
72 | 73 |
74 |

8. DHCP가 무엇인지 설명해 주세요.

75 | 82 |
83 | 84 |
85 |

9. IP 주소는 무엇이며, 어떤 기능을 하고 있나요?

86 | 96 |
97 | 98 |
99 |

10. OSI 7계층에 대해 설명해 주세요.

100 | 107 |
108 | 109 |
110 |

11. 3-Way Handshake에 대해 설명해 주세요.

111 | 118 |
119 | 120 |
121 |

12. 4-Way Handshake에 대해 설명해 주세요.

122 | 128 |
129 | 130 |
131 |

13. www.github.com을 브라우저에 입력하고 엔터를 쳤을 때, 네트워크 상 어떤 일이 일어나는지 최대한 자세하게 설명해 주세요.

132 | 137 |
138 | 139 |
140 |

14. DNS에 대해 설명해 주세요.

141 | 150 |
151 | 152 |
153 |

15. SOP 정책에 대해 설명해 주세요.

154 | 158 |
159 | 160 |
161 |

16. Stateless와 Connectionless에 대해 설명해 주세요.

162 | 167 |
168 | 169 |
170 |

17. 라우터 내의 포워딩 과정에 대해 설명해 주세요.

171 | 176 |
177 | 178 |
179 |

18. 로드밸런서가 무엇인가요?

180 | 186 |
187 | 188 |
189 |

19. 서브넷 마스크와, 게이트웨이에 대해 설명해 주세요.

190 | 195 |
196 | 197 |
198 |

20. 멀티플렉싱과 디멀티플렉싱에 대해 설명해 주세요.

199 | 202 |
203 | 204 |
205 |

21. XSS에 대해서 설명해 주세요.

206 | 210 |
211 | -------------------------------------------------------------------------------- /04-DATABASE.md: -------------------------------------------------------------------------------- 1 | ## 데이터베이스 2 | 3 |
4 |

1. Key (기본키, 후보키, 슈퍼키 등등...) 에 대해 설명해 주세요.

5 | 11 |
12 | 13 | 14 |
15 |

2. RDB와 NoSQL의 차이에 대해 설명해 주세요.

16 | 21 |
22 | 23 | 24 |
25 |

3. 트랜잭션이 무엇이고, ACID 원칙에 대해 설명해 주세요.

26 | 31 |
32 | 33 |
34 |

4. 트랜잭션 격리 레벨에 대해 설명해 주세요.

35 | 40 |
41 | 42 |
43 |

5. 인덱스가 무엇이고, 언제 사용하는지 설명해 주세요.

44 | 54 |
55 | 56 |
57 |

6. RDBMS, NoSQL에서의 클러스터링/레플리케이션 방식에 대해 설명해 주세요.

58 | 64 |
65 | 66 |
67 |

7. 정규화가 무엇인가요?

68 | 73 |
74 | 75 |
76 |

8. View가 무엇이고, 언제 사용할 수 있나요?

77 | 80 |
81 | 82 |
83 |

9. DB Join이 무엇인지 설명하고, 각각의 종류에 대해 설명해 주세요.

84 | 90 |
91 | 92 |
93 |

10. B-Tree와 B+Tree에 대해 설명해 주세요.

94 | 99 |
100 | 101 |
102 |

11. DB Locking에 대해 설명해 주세요.

103 | 107 |
108 | 109 |
110 |

12. 트래픽이 높아질 때, DB는 어떻게 관리를 할 수 있을까요?

111 | 114 |
115 | 116 |
117 |

13. Schema가 무엇인가요?

118 | 121 |
122 | 123 |
124 |

14. DB의 Connection Pool에 대해 설명해 주세요.

125 | 128 |
129 | 130 |
131 |

15. Table Full Scan, Index Range Scan에 대해 설명해 주세요.

132 | 136 |
137 | 138 |
139 |

16. SQL Injection에 대해 설명해 주세요.

140 | 143 |
144 | -------------------------------------------------------------------------------- /05-ETC.md: -------------------------------------------------------------------------------- 1 | ## 개발상식, 기타 2 | 3 |
4 |

1. 가상화가 무엇이고, 이것이 가상머신과 어떠한 차이가 있는지 설명해 주세요.

5 | 10 |
11 | 12 |
13 |

2. CI/CD 를 사용해 본 경험이 있나요? 있다면 간단하게 설명해 주세요.

14 | 16 |
17 | 18 |
19 |

3. static 키워드는 어떤 의미를 갖나요? (본인이 사용하는 언어에서 없다면 패스...)

20 | 24 |
25 | 26 |
27 |

4. 객체지향 프로그래밍이 무엇인가요?

28 | 34 |
35 | 36 |
37 |

5. 프레임워크와 라이브러리의 차이에 대해 설명해 주세요.

38 | 40 |
41 | 42 |
43 |

6. Call By Value와 Call By Reference의 차이를 본인의 언어를 기반으로 설명해 주세요.

44 | 47 |
48 | 49 |
50 |

7. 순수함수가 무엇인지를 함수형 프로그래밍 매커니즘과 연관지어 설명해 주세요.

51 | 57 |
58 | 59 |
60 |

8. MVC 패턴이 무엇인가요?

61 | 64 |
65 | 66 |
67 |

9. 디자인 패턴이 무엇인지 설명해주고, 대표적인 디자인 패턴에 대해 설명해 주세요.

68 | 72 |
73 | 74 |
75 |

10. GC에 대해 설명해 주세요.

76 | 82 |
83 | 84 |
85 |

11. 32비트와 64비트의 차이는 무엇인가요?

86 | 89 |
90 | 91 |
92 |

12. 인증과 인가의 차이에 대해 설명해 주세요.

93 | 96 |
97 | 98 |
99 |

13. JWT 인증 방식이 무엇인가요?

100 | 105 |
106 | 107 |
108 |

14. 암호화 알고리즘에 대해 설명해 주세요.

109 |
111 | 112 |
113 |

15. 문자열 인코딩에 대해 설명해 주세요.

114 |
117 | 118 |
119 |

16. Git에 대해 설명해 주세요.

120 |
-------------------------------------------------------------------------------- /06-ALGORITHM.md: -------------------------------------------------------------------------------- 1 | ## 손코딩 2 | ### 생각날 때 마다 꾸준히 추가해보겠습니다... 3 | 4 | 1. 각종 정렬 알고리즘을 구현해 보세요. 5 | 2. 각종 자료구조 (ex. LinkedList, Queue, Stack, Tree, ...) 를 구현해 보세요. 6 | 3. 배열에 1,000,000 개의 수가 있다고 가정할 때, 여기에서 원하는 수가 몇 번째 인덱스에 위치해 있는지 확인하는 프로그램을 작성해 보세요. (단, 원하는 수가 하나가 아닐 수 있습니다.) 7 | 4. 20개의 숫자가 주어졌을 때, 이 수중 일부 숫자들을 더해서 원하는 수를 만들 수 있는지 확인하는 프로그램을 작성해 조세요. 8 | 5. 1 ~ 999 까지의 아라비아 숫자가 주어졌을 때, 이 숫자를 로마숫자로 변환하는 프로그램을 작성해 보세요. 9 | 6. 배열을 정렬하지 않고, 배열의 중앙값을 구하는 코드를 작성해 보세요. 10 | 7. 알파벳으로 이뤄진 단어가 있을 때, 이 단어에서 중복된 값을 제거하고 오름차순으로 정렬하는 코드를 작성해 보세요. (단, 최대한 효율적으로 작성해 주세요.) 11 | 8. 두 배열이 주어졌을 때, 이 배열의 교**집합**을 구하는 코드를 작성해 보세요. (단, 배열을 제외한 추가적인 자료구조는 사용하지 말아주세요.) 12 | 9. 길이가 N인 배열이 있을 때, 이 배열에서 K 번째로 큰 수를 추출하는 프로그램을 작성해 보세요. (단, 시간복잡도는 O(NlogN) 보다 작아야 합니다.) 13 | 10. 범위가 주어졌을 때 **랜덤 함수를 사용하지 않고,** 20개의 수를 랜덤으로 추첨해주는 프로그램을 작성해 보세요. (Hint: 시간) 14 | 11. 2,000,000 자리의 숫자 여러개가 있고, 이 숫자들을 모두 더해야 한다고 합니다. 어떻게 코드를 작성하면 좋을까요? (Python을 사용하고 있다고 해도, 다른 언어의 long long 범위까지만 사용할 수 있다고 가정합시다.) 15 | 12. 정렬된 두 LinkedList를 합쳐 하나의 정렬된 LinkedList로 만드는 코드를 작성해 보세요. 16 | 13. 어떤 수가 주어졌을 때, 이 수의 소인수를 모두 구하는 코드를 작성해 보세요. 17 | 14. 1 부터 1,000,000 까지의 수를 이어 붙인다고 가정할 때, 이 수에서 0이 몇 번이나 등장하는지 확인하는 코드를 작성해 보세요. 18 | 15. 스택 두개로 큐를, 큐 두개로 스택을 구현하는 코드를 작성해 보세요. 19 | -------------------------------------------------------------------------------- /07-JAVA_SPRING.md: -------------------------------------------------------------------------------- 1 | ## Java, Spring 2 | 3 |
4 |

1. JVM이 정확히 무엇이고, 어떤 기능을 하는지 설명해 주세요.

5 | 11 |
12 | 13 |
14 |

2. final 키워드를 사용하면, 어떤 이점이 있나요?

15 | 18 |
19 | 20 |
21 |

3. 인터페이스와 추상 클래스의 차이에 대해 설명해 주세요.

22 | 25 |
26 | 27 |
28 |

4. 리플렉션에 대해 설명해 주세요.

29 | 33 |
34 | 35 |
36 |

5. static class와 static method를 비교해 주세요.

37 | 41 |
42 | 43 |
44 |

6. Java의 Exception에 대해 설명해 주세요.

45 | 50 |
51 | 52 |
53 |

7. Synchronized 키워드에 대해 설명해 주세요.

54 | 60 |
61 | 62 |
63 |

8. Java Stream에 대해 설명해 주세요.

64 | 70 |
71 | 72 |
73 |

9. Java의 GC에 대해 설명해 주세요.

74 | 78 |
79 | 80 |
81 |

10. equals()와 hashcode()에 대해 설명해 주세요.

82 | 86 |
87 | 88 |
89 |

11. IoC와 DI에 대해 설명해 주세요.

90 | 95 |
96 | 97 |
98 |

12. AOP에 대해 설명해 주세요.

99 | 102 |
103 | 104 |
105 |

13. Spring 에서 Interceptor와 Servlet Filter에 대해 설명해 주세요.

106 | 109 |
110 | 111 |
112 |

14. DispatcherServlet 의 역할에 대해 설명해 주세요.

113 | 117 |
118 | 119 |
120 |

15. JPA와 같은 ORM을 사용하는 이유가 무엇인가요?

121 | 125 |
126 | 127 |
128 |

16. @Transactional 은 어떤 기능을 하나요?

129 | 133 |
134 | 135 | 136 |
137 |

17. Java 에서 Annotation 은 어떤 기능을 하나요?

138 | 142 |
143 | 144 |
145 |

18. Tomcat이 정확히 어떤 역할을 하는 도구인가요?

146 | 149 |
150 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tech-Interview 2 | 3 | > 기술 면접과 관련하여, 그동안 준비했던, (혹은 스스로 더 공부하고 싶은) 문항들을 정리한 레포입니다. 4 | > 다소 면접을 어렵게 준비했기에, 기술 면접을 처음 준비하시는 분들에게는 어려울 수도 있지만, 차근차근 정리하다보면 많은 도움이 될 수 있을 것입니다! 5 | 6 | - **처음 CS를 준비하시는 분들이라면, 사실 이 레포는 적합하지 않을 수 있습니다. 기본적인 CS에 대한 이해가 있고, 면접을 위해 더 깊은 공부가 필요한 분들에게 적극 권장드립니다!** 7 | - **레포지토리에 있는 내용이 면접의 전부는 아닙니다! 더 많이 찾아보면 좋을 것 같습니다.** 8 | - 문제 수가 많고, 난이도도 있는 편 입니다. 어려울 수 있다는 것을 감안하고 공부하셨으면 좋겠습니다! 9 | - 특정 키워드에 대해, 나올 수 있는 문항들을 다양하게 적었습니다. 10 | - 적힌 풀이를 외우는 것은 지양하기에, **질문들을 중심으로 정리하였습니다.** 풀이는 직접 공부하면서 채우시는걸 강력히 권장합니다. 11 | - 특히나, 해당 레포의 풀이를 다룬 블로그 중에선 틀린 내용을 작성한 경우도 있으니 더더욱 조심해 주세요! 12 | 13 | ## Contents 14 | 15 | - [Data Structure, Algorithm (이론)](https://github.com/VSFe/Tech-Interview/blob/main/01-DATA_STRUCTURE_ALGORITHM.md) 16 | - [Operating System](https://github.com/VSFe/Tech-Interview/blob/main/02-OPERATING_SYSTEM.md) 17 | - [Network](https://github.com/VSFe/Tech-Interview/blob/main/03-NETWORK.md) 18 | - [Database](https://github.com/VSFe/Tech-Interview/blob/main/04-DATABASE.md) 19 | - [Etc](https://github.com/VSFe/Tech-Interview/blob/main/05-ETC.md) 20 | - [손코딩 (연습 문항)](https://github.com/VSFe/Tech-Interview/blob/main/06-ALGORITHM.md) 21 | - [언어/프레임워크 관련 질문 (Java, Spring)](https://github.com/VSFe/Tech-Interview/blob/main/07-JAVA_SPRING.md) 22 | 23 | ## Special Thanks 24 | - 함께 스터디를 진행했던, 고마운 분들입니다. 25 | [BaeRoNuI](https://github.com/BaeRoNuI) 26 | [JongWoo Jeong](https://github.com/knight7024) 27 | [Namkanghyeon](https://github.com/Namkanghyeon) 28 | [Jeong Seokwoo (redjen)](https://github.com/redjen8) 29 | [Hi YJ](https://github.com/0general) 30 | 31 | 32 | + 좋은 결과를 냈던 새로운 분들도 함께합니다. 33 | [sojeongLee](https://github.com/sojeongLee0125) 34 | [DongRyul Lee](https://github.com/Al7ech) 35 | [Junhyuk Lee](https://github.com/sinclairr08) 36 | [Hoin Shin](https://github.com/signalman) 37 | [PangPyo](https://github.com/Pangpyo) 38 | --------------------------------------------------------------------------------