# ์ธ์ด
# [JAVA]
# ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋?
๋ฐฐ๊ฒฝ & ์ง๋ฌธ ์๋
- JVM ์ ๊ตฌ์กฐ, ํนํ Heap Area ์ ๋ํ ์ดํด
๋ต๋ณ
- ์๋ฐ๊ฐ ์คํ๋๋ JVM ์์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด, ์ฆ Heap ์์ญ์ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํด ์ฃผ๋ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค.
- ์ด ๊ณผ์ ์์ stop the world ๊ฐ ์ผ์ด๋๊ฒ ๋๋ฉฐ, ์ด ์ผ๋ จ ๊ณผ์ ์ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๋ณ๊ฒฝ ๋๋ ์ธ๋ถ ๊ฐ ์กฐ์ ์ด ํ์ํฉ๋๋ค.
ํค์๋ & ๊ผฌ๋ฆฌ ์ง๋ฌธ
- ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ์ , ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์ข ๋ฅ์ ๋ํ ์ดํด
# StringBuilder์ StringBuffer์ ์ฐจ์ด๋?
๋ฐฐ๊ฒฝ & ์ง๋ฌธ ์๋
- mutation(๊ฐ๋ณ), immutation(๋ถ๋ณ) ์ดํด
- ๋ถ๋ณ ๊ฐ์ฒด์ธ String ์ ์ฐ์ฐ์์ ์ค๋ ํผํฌ๋จผ์ค ์ด์ ์ดํด
- String
- immutation
- String ๋ฌธ์์ด์ ์ฐ์ฐํ๋ ๊ณผ์ ์์ ๋ถ๋ณ ๊ฐ์ฒด์ ๋ฐ๋ณต ์์ฑ์ผ๋ก ํผํฌ๋จผ์ค๊ฐ ๋ฎ์์ง.
๋ต๋ณ
- ๊ฐ์์
- mutation
- append() ๋ฑ์ api ์ง์
- ์ฐจ์ด์
- StringBuilder ๋ ๋๊ธฐํ๋ฅผ ์ง์ํ์ง ์์ ์ฑ๊ธ ์ค๋ ๋์์ ์๋๊ฐ ๋น ๋ฆ ๋๋ค.
- StringBuffer ๋ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์์ ๋๊ธฐํ๋ฅผ ์ง์ํ์ง๋ง ์ด๋ฐ ๊ตฌํ์ ๋ก์ง์ ์์ฌํด์ผ ํฉ๋๋ค.
ํค์๋ & ๊ผฌ๋ฆฌ ์ง๋ฌธ
# 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 ์ ๊ฐ๊น์ด ์ง๋ฌธ
๋ต๋ณ
- ์ปดํ์ผ๋ฌ๊ฐ ๋ณํ: ์์ค์ฝ๋ -> ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class)
- JVM์ด ๋ณํ: ๋ฐ์ดํธ์ฝ๋ -> ๊ธฐ๊ณ์ด
- ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์คํ
ํค์๋ & ๊ผฌ๋ฆฌ ์ง๋ฌธ
- JIT ์ปดํ์ผ๋ฌ
# Vector์ ArrayList์ ์ฐจ์ด๋?
Vector : ๋๊ธฐ์. ํ ์ค๋ ๋๊ฐ ๋ฒกํฐ ์์ ์ค์ด๋ฉด ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฒกํฐ ๋ณด์ ๋ถ๊ฐ๋ฅ
ArrayList : ๋น๋๊ธฐ์. ์ฌ๋ฌ ์ค๋ ๋๊ฐ arraylist์์ ๋์ ์์ ์ด ๊ฐ๋ฅ
# Serialization์ด๋?
์ง๋ ฌํ. ๊ฐ์ฒด์ ์ํ ํน์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋กํ ์ ์๋ ํฌ๋งท์ผ๋ก ๋ณํํด์ค
๋์ค์ ์ฌ๊ตฌ์ฑ ํ ์ ์๊ฒ ์๋ฐ ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ๋ณํํด์ฃผ๊ฑฐ๋ JSON์ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
# Call by Value vs Call by Reference
๊ฐ์ ์ํ ํธ์ถ : ๊ฐ์ ๋ณต์ฌํด์ ์๋ก์ด ํจ์๋ก ๋๊ธฐ๋ ํธ์ถ ๋ฐฉ์. ์๋ณธ ๊ฐ ๋ณ๊ฒฝX
์ฐธ์กฐ์ ์ํ ํธ์ถ : ์ฃผ์ ๊ฐ์ ์ธ์๋ก ์ ๋ฌํ๋ ํธ์ถ ๋ฐฉ์. ์๋ณธ ๊ฐ ๋ณ๊ฒฝO
# ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ ์ฐจ์ด๋?
๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง. ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ ๊ทผ ์๋ ๋น ๋ฆ.
ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ์ ๊ทธ ์์น์ ๋ค์ ์์น๋ถํฐ ๋ชจ๋ ๋ฐ์ดํฐ ์์น๋ฅผ ๋ณ๊ฒฝํด์ผ ๋๋ ๋จ์ ์กด์ฌ
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ธ๋ฑ์ค ๋์ ์ ํ์ฌ ์์น์ ์ด์ /๋ค์ ์์น๋ฅผ ๊ธฐ์ตํจ.
ํฌ๊ธฐ๋ ๊ฐ๋ณ์ . ์ธ๋ฑ์ค ์ ๊ทผ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋์ด ์๋ ๋งํฌ๋ฅผ ์ญ ๋ฐ๋ผ๊ฐ์ผ ์ ๊ทผ์ด ๊ฐ๋ฅํจ. (๋ฐ๋ผ์ ๋ฐฐ์ด๋ณด๋ค ์๋ ๋๋ฆผ)
๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ๋ ๋ ผ๋ฆฌ์ ์ฃผ์๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ฉ์ดํจ
- ๋ฐ์ดํฐ์ ์์ด ๋ง๊ณ ์ฝ์ /์ญ์ ๊ฐ ์์. ๋ฐ์ดํฐ ๊ฒ์์ ๋ง์ด ํด์ผํ ๋ โ Array
- ๋ฐ์ดํฐ์ ์์ด ์ ๊ณ ์ฝ์ /์ญ์ ๋น๋ฒํจ โ LinkedList
# Hash๋?
๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ์, ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ด๊ฑฐ๋ ์ฑ์ฐ์ง ์๊ณ ๋ฐ์ดํฐ์ ์ฐ๊ด๋ ๊ณ ์ ํ ์ซ์๋ฅผ ์์ฑํด ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๊ฒ์ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค
# C++ ์คํ ๊ณผ์
์ ์ฒ๋ฆฌ : #define, #include ์ง์์ ํด์
์ปดํ์ผ : ๊ณ ๊ธ ์ธ์ด ์์ค ํ๋ก๊ทธ๋จ ์ ๋ ฅ ๋ฐ๊ณ , ์ด์ ๋ธ๋ฆฌ ํ์ผ ๋ง๋ฌ
์ด์ ๋ธ : ์ด์ ๋ธ๋ฆฌ ํ์ผ์ ์ค๋ธ์ ํธ ํ์ผ๋ก ๋ง๋ฌ
๋งํฌ : ์ค๋ธ์ ํธ ํ์ผ์ ์ฎ์ด ์คํํ์ผ์ ๋ง๋ค๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์ฐ๊ฒฐ
์คํ
# ๋ฉ๋ชจ๋ฆฌ, ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ์๊ฐ๋๋ ๋ฐฉ๋ฒ์?
static์ ์ฌ์ฉํด ์ ์ธํ๋ค.
์ธ์คํด์ค ๋ณ์์ ์ ๊ทผํ ์ผ์ด ์์ผ๋ฉด, static ๋ฉ์๋๋ฅผ ์ ์ธํ์ฌ ํธ์ถํ์
๋ชจ๋ ๊ฐ์ฒด๊ฐ ์๋ก ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ฝ๋๊ณ ์ฐ์์ ์ผ๋ก ๊ทธ ๊ฐ์ ํ๋ฆ์ ์ด์ด๊ฐ ์ ์๋ ์ฅ์ ์ด ์กด์ฌ
# ํด๋์ค์ ๊ตฌ์กฐ์ฒด์ ์ฐจ์ด๋?
๊ตฌ์กฐ์ฒด๋ ํ๋์ ๊ตฌ์กฐ๋ก ๋ฌถ์ผ ์ ์๋ ๋ณ์๋ค์ ์งํฉ์ด๋ค.
ํด๋์ค๋ ๋ณ์๋ฟ๋ง ์๋๋ผ, ๋ฉ์๋๋ ํฌํจ์ํฌ ์ ์์
(๋ฌผ๋ก ํจ์ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ๊ตฌ์กฐ์ฒด๋ ํด๋์ค์ฒ๋ผ ๋ง๋ค์ด ๋ผ ์๋ ์๋ค.)
# ์ค๋ ๋๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์์ฑํ๋์? ์ฅ๋จ์ ๋ ๋งํด์ฃผ์ธ์
์์ฑ๋ฐฉ๋ฒ : Runnable(์ธํฐํ์ด์ค)๋ก ์ ์ธ๋์ด ์๋ ํด๋์ค or Thread ํด๋์ค๋ฅผ ์์๋ฐ์์ run() ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ๋ฉด ๋จ
์ฅ์ : ๋น ๋ฅธ ํ๋ก์ธ์ค ์์ฑ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ, ์ ๋ณด ๊ณต์ ๊ฐ ์ฌ์
๋จ์ : ๋ฐ๋๋ฝ์ ๋น ์ง ์ํ์ด ์กด์ฌ
# ํฌ์ธํฐ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๋๋ก ์ค๋ช ํด์ฃผ์ธ์
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์์
์ฃผ์๋ฅผ ์ง์นญํ๊ณ ์๋ ๊ณณ์ธ๋ฐ, ์๋ฅผ ๋ค๋ฉด ์๋ฆฌ๋ฒ ์ดํฐ์์ ํฌ์ธํฐ๋ ํด๋น ์ธต์ ํ์ํ๋ ๋ฒํผ์ด๋ผ๊ณ ํ ์ ์์. 10์ธต์ ๋๋ฅด๋ฉด 10์ธต์ผ๋ก ์ด๋ํ๋ฏ, ํด๋น ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ๋ณ์!
ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์, ์ด๋ค ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ด์ผ๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํจ