๐ ๋ฉด์ ์ ์ฒดํฌ๋ฆฌ์คํธ
๐ 1. ์๋ฃ๊ตฌ์กฐ
Array, ArrayList, LinkedList์ ์ฐจ์ด๋ฅผ ์๊ณ , ์ง๋ฌด ์ธ์ด๋ก ๋ชจ๋ ์์ด ๊ตฌํํ ์ ์๋ค.
Stack๊ณผ Queue์ ๋ํด ์๊ณ , ์ฐจ์ด๋ฅผ ์ค๋ช ํ ์ ์๋ค. ์ง๋ฌด ์ธ์ด๋ก ๋ชจ๋ ์์ด ๊ตฌํํ ์ ์๋ค.
Tree์ Heap์ ๊ตฌ์กฐ์ ๋ํด ์๊ณ , ์ค๋ช ํ ์ ์๋ค. ์ง๋ฌด ์ธ์ด๋ก ๋ชจ๋ ์์ด ๊ตฌํํ ์ ์๋ค.
Tree์ ์ ์, ์ค์, ํ์ ์ํ ์ ์ถ๋ ฅ๋๋ ๋ ธ๋ ์์๋ฅผ ๋งํ ์ ์๋ค. ํธ๋ฆฌ ๊ตฌํ๋ถํฐ ์ํ ๋ฉ์๋๊น์ง ์ง๋ฌด ์ธ์ด๋ก ๋ชจ๋ ์์ด ๊ตฌํํ ์ ์๋ค.
์ฐ์ ์์ ํ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
ํด์ฌ ํ ์ด๋ธ๊ณผ ์๊ฐ ๋ณต์ก๋์ ๋ํด ์ค๋ช ํ ์ ์๋ค. ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
ํน์ ํ ์ํฉ์ด ์ฃผ์ด์ก์ ๋, ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํด์ผ ํ ์ง ๋ ผ๋ฆฌ์ ์ผ๋ก ์ค๋ช ํ ์ ์๋ค.
๐ฏ 2. ์๊ณ ๋ฆฌ์ฆ
์๊ฐ๋ณต์ก๋ O(N^2)์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๊ณผ O(NlogN)์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ง๋ฌด ์ธ์ด๋ก ๋ชจ๋ ์์ด ๊ตฌํํ ์ ์๋ค.
๊ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ Best Case์ Worst Case ์๊ฐ ๋ณต์ก๋์ ๋ํด ์๊ณ , ๊ฐ ํน์ฑ์ ์ค๋ช ํ ์ ์๋ค.
์ฌ๊ท์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
BFS/DFS์ ๋ํด ์ค๋ช ํ ์ ์๋ค. ์ง๋ฌด ์ธ์ด๋ก ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ ์๋ค.
๋ค์ต์คํธ๋ผ, ํ๋ฆผ, ํ๋ก์ด๋-์์ฌ, ๋ฒจ๋งํฌ๋, ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ๋ฑ ๊ทธ๋ํ์์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์๊ณ ์๋ค.
์ฝ๋๋ฅผ ๋ณด๊ณ , ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
๐พ 3. ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด์ ์ค๋ช ํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ด(DDL, DML, DCL)์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค Index์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์ ๊ทํ๊ฐ ๋ฌด์์ธ์ง, ์ ํ๋์ง ์ค๋ช ํ ์ ์๊ณ 1~3 ์ ๊ทํ๋ถํฐ BCNF ์ ๊ทํ๋ฅผ ํ ์ ์๋ค.
์ญ์ ๊ทํ๋ ๋ฌด์์ด๊ณ , ์ ํ๋์ง ์ค๋ช ํ ์ ์๋ค.
RDBMS์ NoSQL์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
ํ ์ด๋ธ ์ค๊ณ๋ฅผ ์๋ชปํ ๊ฒฝ์ฐ, ๋ํ๋ ์ ์๋ ์ค๋ฅ๋ค์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋ฐ์ดํฐ์ ํน์ฑ์ ๋ณด๊ณ , RDBMS๋ฅผ ์ฌ์ฉํ ์ง NoSQL์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ ์ ์๋ค.
ํธ๋์ญ์ ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๊ณ , ํน์ฑ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
DB Lock์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
ORM์ด ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
์์ฃผ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค์ ๋ํด ์ค๋ช ํ ์ ์๋ค. (SELECT, JOIN, WHERE, DELETE, GROUP BY ๋ฑ๋ฑ)
DB ํค์ ์ข ๋ฅ์ ๊ธฐ๋ฅ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๐ 4. ๋คํธ์ํฌ
๋ธ๋ผ์ฐ์ ์ URL์ ์ ๋ ฅ๋ถํฐ ํ๋ฉด์ ๋ด์ฉ์ ์ถ๋ ฅํ๊ธฐ๊น์ง์ ๊ณผ์ ์ ์ต๋ํ ์ค๋ช ํ ์ ์๋ค.
HTTP ํ๋กํ ์ฝ์ ๋ํด ์ค๋ช ์ด ๊ฐ๋ฅํ๊ณ , HTTP์ HTTPS๊ฐ ๋ฌด์์ด ๋ค๋ฅธ์ง ์ค๋ช ํ ์ ์๋ค.
์ฟ ํค์ ์ธ์ , JWT Token์ ์ฅ๋จ์ ๊ณผ ํจ๊ป ์ค๋ช ํ ์ ์๋ค.
TCP์ UDP์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ๊ณ , ๊ฐ๊ฐ ์ด๋์ ์ฌ์ฉ๋๋ ๊ฒ์ด ์ข์์ง ์ค๋ช ํ ์ ์๋ค.
3-way handshaking๊ณผ 4-way handshaking์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
OSI 7 Layer์ ๊ฐ ๊ณ์ธต์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๐ค 5. ์ด์์ฒด์
ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ฐ๋ ๋์ ํน์ง์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋ฉํฐ ์ค๋ ๋์์ ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ ์ ์๋ค.
DeadLock, Mutual Exclusion, Critical Section์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋จ์ผ ํ๋ก์ธ์ CPU ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋ํด ์๊ณ ์๋ค.
๋๊ธฐ์ ๋น๋๊ธฐ์ ์ฐจ์ด์ ์ฅ๋จ์ ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
Mutex์ Semaphore๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๊ณ , ํ์ด์ง๊ณผ ์ธ๊ทธ๋ฉํ ์ด์ ์ด ๋ฌด์์ธ์ง ์๊ณ ์๋ค.
์ปจํ ์คํธ ์ค์์นญ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
๋ถ๋ชจ ํ๋ก์ธ์ค, ์์ ํ๋ก์ธ์ค, ๊ณ ์ ํ๋ก์ธ์ค, ์ข๋น ํ๋ก์ธ์ค์ ๋ํด ์๊ณ ์๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฐธ์กฐ ์ง์ญ์ฑ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
โ๏ธ 6. ์๋ฐ(Java)
JVM์ ์ญํ ๊ณผ, JVM์ ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
Java๋ก ์์ ํ์ , ์ฐธ์กฐ ํ์ ์ ๋ณ์๋ฅผ ์์ฑํ์ ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ์์ญ์ ํ ๋น๋๋์ง ์ค๋ช ํ ์ ์๋ค.
Java์ ์ปดํ์ผ ๊ณผ์ ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
Garbage Collect๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ์ด ๊ฐ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
๋ํผํด๋์ค๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
์ถ์ํด๋์ค์ interface์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
ํด๋์ค์ ์ธ์คํด์ค์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์ ๋ค๋ฆญ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ Stream API์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํด ์ค๋ช ํ ์ ์๊ณ , ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํ ๋น๋๋ ์์ ์ ์๊ณ ์๋ค.
Synchronized์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
new String()๊ณผ ""์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์ ๊ทผ ์ ํ์๋ณ ์ฐจ์ด์ ๋ํด ์๊ณ ์๋ค.
static๊ณผ final์ ๋ํด ์๊ณ ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์๋ ์ค๋ช ์ด ๊ฐ๋ฅํ๋ค.
Collections ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ์ค ์๋ค.
์ง๋ ฌํ(Serialize)์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์์ ํ ์์ญ์ด ๋ฌด์์ธ์ง ์๊ณ ์๋ค.
SerialVersionUID๋ฅผ ์ ์ธํด์ผ ํ๋ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋ค.
๊ฐ์ฒด์งํฅ ๊ฐ๋ ์ ํน์ง์ ๋ชจ๋ Java ์ฝ๋์ ํจ๊ป ์ค๋ช ํ ์ ์๋ค.
๐ 7. ๋ฐฑ์๋(Spring)
Spring Framework์ ๋ํด ์ค๋ช ํ ์ ์๋ค, Spring Boot์ Spring์ ์ฐจ์ด์ ์ ์ค๋ช ํ ์ ์๋ค.
DI์ IoC, IoC Container(DI Container)์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
POJO๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
SpringMVC์ ๋ํด ์ค๋ช ํ ์ ์๊ณ , MVC๊ฐ ์ด๋ค ํ๋ฆ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋์ง ์ค๋ช ํ ์ ์๋ค.
Spring Bean๊ณผ Bean์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ์ ์๊ณ , ๋ผ์ดํ ์ฌ์ดํด์ด ์ด๋ป๊ฒ ๊ด๋ฆฌ๋๋์ง ์ค๋ช ๊ฐ๋ฅํ๋ค.
AOP, PSA๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
DAO, DTO, VO, BO๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
JPA๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๊ณ , ์ธ์ ์ฌ์ฉํด์ผ ์ข์ ์ง ์ค๋ช ํ ์ ์๋ค.
Servlet์ด ๋ฌด์์ธ์ง, ๋์๋ฐฉ์์ ์ด๋ป๊ฒ ๋๋์ง ์ค๋ช ํ ์ ์๋ค.
Spring์์ ํธ๋์ญ์ ์ ์ ์ฉํ๋ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์ฑ๊ธํค ํจํด์ด ๋ฌด์์ธ์ง ์๊ณ , ์คํ๋ง์์ ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ถ๋ถ์ ๋ํด ๋งํ ์ ์๋ค.
๋์ฉ๋ ํธ๋ํฝ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ป๊ฒ ๋์ํ ๊ฒ์ธ์ง ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋ตํ ์ ์๋ค.
API๊ฐ ๋ฌด์์ธ์ง, RestAPI์ RestFUL API๋ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
@Controller์ @RestController์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
@RequestBody์ @Requestparam, @ ModelAttribute์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ ์ ์๋ค.
๊ฐ์ธ ํฌํธํด๋ฆฌ์ค ๊ด๋ จ ์ง๋ฌธ
Spring WebFlux ์ฌ์ฉ์ ์ด์ , WebFlux์ ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
JPA N+1 ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์๊ณ , ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ ์ํ ์ ์๋ค.
Spring Batch๋ฅผ ์ฌ์ฉํ ์ด์ ์, Job๊ณผ Step์ด ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
Spring Security์ ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
JPA๋ฅผ ์ฌ์ฉํ๋ฉฐ ๋ณต์กํ๊ณ ๋์ ์ธ ์ฟผ๋ฆฌ์ ๋ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค.
MySQL ํ๊ฒฝ์์์ JPA Bulk Insert ์ ์ฉ์ ์ฑ๋ฒ ๋ฐฉ์์ ๋ํด ์๊ณ ์๋ค.
๐๐ป 8. ๊ฐ๋ฐ๊ณตํต / ์ธ์ฑ๋ฉด์
๋ฉ์๋ ํธ์ถ ์ ์ธ์ ์ ๋ฌ ๋ฐฉ์์ธ Call by Value์ Call by Reference์ ๋ํด ์ค๋ช ํ๊ณ , ์์ ์ ์ง๋ฌด ์ธ์ด๋ ์ด๋ค ์ ๋ฌ ๋ฐฉ์์ ์ฑํํ๊ณ ์๋์ง ์ค๋ช ๊ฐ๋ฅํ๋ค.
ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐจ์ด์ ๋ํด ์ค๋ช ๊ฐ๋ฅํ๋ค.
์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ ์ ์๋ค.
TDD์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
DDD์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
MSA๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
Event Driven Architecture์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
AWS EC2์ AWS Lambda์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
๋์ปค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋์ปค์ ์๋์๋ฆฌ์ ๋ํด ์ค๋ช ํ ์ ์๋ค.
์ธ์ฑ๋ฉด์ ์ ์ถํ ์ ๋ฐ์ดํธ.
๐โ๏ธ ์ฒดํฌ๋ฆฌ์คํธ ๋ณ ์ง๋ฌธ ๋๋น ์๋ฃ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โ ์๋ฃ๊ตฌ์กฐ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โก ์๊ณ ๋ฆฌ์ฆ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โข ๋ฐ์ดํฐ๋ฒ ์ด์ค
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฃ ๋คํธ์ํฌ
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โค ์ด์์ฒด์
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฅ ์๋ฐ(Java)
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โฆ ๋ฐฑ์๋(Java Spring ๊ธฐ๋ฐ)
[๐ ์ ์ ์ธํฐ๋ทฐ ์ค๋น] - [๋ฉด์ ์ด์ ๋ฆฌ] ์ ์ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ๋๋น ์ด์ ๋ฆฌ ์๋ฃ - โง ๊ฐ๋ฐ๊ณตํต / ์ธ์ฑ๋ฉด์