๐ป
[์๋ฐ(JAVA)] ๋ฉด์ ์์ ์ง๋ฌธ๊ณผ ๋ต๋ณ ๋ณธ๋ฌธ
Q # 1) ๊ฐ์ฒด์งํฅ์ด๋?
๋ต๋ณ: ๊ฐ์ฒด์งํฅ์ด๋ ์ค์ธ๊ณ์ ์ฌ๋ฌผ์ ์ถ์ํํ์ฌ ๋ฉค๋ฒ ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋๋ฐ์ ์ถ๋ฐํ๋ค. ์บก์ํ๋ฅผ ํตํด ์ด์ ๊ฐ์ ๋ฉค๋ฒ๋ณ์์ ๋ฉ์๋์ ์ด์ฉ๊ฐ๋ฅ ๋ฒ์๋ฅผ ์ ์ ํ๊ฒ ์ ํํ ์ ์๊ณ , ์์์ ์ด์ฉํ์ฌ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ์์ํด๋์ค์์ ๋ฌผ๋ ค๋ฐ๊ฑฐ๋ ์ฌ์ ์๋ฅผ ํตํด ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋คํ์ฑ๊น์ง ํฌํจ๋๋ค.
Q # 1-1) ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP = Object-Oriented Programming)๋ ๋ฌด์์ธ๊ฐ?
๋ต๋ณ: ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ฐ์ํ ๊ฒ์ด๋ค. ์์ฐจ์ ์คํ์ด ์๋, ๊ฐ์ฒด์ ๊ฐ์ฒด์ ์ํธ์์ฉ์ ํตํด ๋์ํ๋ค.
Q # 1-2) ๊ฐ์ฒด์งํฅ์ ํน์ง์?
๋ต๋ณ: ๋คํ์ฑ, ์์, ์บก์ํ, ์ถ์ํ ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค. ( ์์ถ์บก(์ด)๋ค )
๋คํ์ฑ ์ ํ๋์ ๋ฉ์๋๋ ํด๋์ค๊ฐ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋์ํ๋ ๊ฒ์ ๋งํ๋ค. ์์์ ํตํด ๊ธฐ๋ฅ์ ํ์ฅํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด ์ฃผ๊ณ , ๊ฐ์ ํด๋์ค ๋ด์ ์ฝ๋ ๊ธธ์ด๋ฅผ ์ค์ฌ์ค๋ค. ์ค๋ฒ๋ผ์ด๋ฉ์ด๋ ์ค๋ฒ๋ก๋ฉ์ ํตํด์ ํ ์์์ ์ฌ๋ฌ ๊ฐ๋
์ ๋ฃ์ด ๋์ ๊ฒ์ด๋ค.
์์ ๋ ์๋ก์ด ํด๋์ค๊ฐ ๊ธฐ์กด์ ํด๋์ค์ ์๋ฃ์ ์ฐ์ฐ์ ์ด์ฉํ๊ฒ ํด์ฃผ๋ ๊ฒ์
๋๋ค. ๊ณตํต์ ์ผ๋ก ํ์ํ ์ฑ๊ฒฉ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํด๋์ค๋ก ์ ์ํด๋๊ณ , ์์๋ฐ์ ์ฌ์ฉ. ์ค๋ณต์ ์ต์ํํ๋ค.
์บก์ํ ๋ ๊ฐ์ฒด๊ฐ ๋งก์ ์ญํ ์ ์ํํ๊ธฐ ์ํ ํ๋์ ๋ชฉ์ ์ ์ํด ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ๋ค์ ๋ฌถ๋ ๊ฒ์ ๋งํฉ๋๋ค.
public, protected, private๋ผ๋ ์ ๊ทผ ์ง์ ์๋ฅผ ํตํด ํด๋์ค์ ๋ด๋ ๋ด์ฉ ์ค ์ค์ํ ๋ฐ์ดํฐ๋ ๊ธฐ๋ฅ์ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๋๋กํ๋ค. ๊ฐ์ฒด ์ธ๋ถ์์๋ ๋ด๋ถ ์ ๋ณด๋ฅผ ์ง์ ์ ๊ทผํ๊ฑฐ๋ ์กฐ์ํ ์ ์๋ค. getter์ setter๋ฅผ ํตํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
์ถ์ํ ๋ ๊ฐ์ฒด๋ค์ ๊ณตํต์ ์ธ ํน์ง์ ๋ฝ์๋ด๋ ๊ฒ์ด๋ค. ์ฆ, ๊ฐ์ฒด๋ค์ ๊ณตํต์ ์ธ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ๋์ถํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค๋ฉด, Class.
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค.
- ์ฝ๋์ ๋ณ๊ฒฝ๊ณผ ์์ ์ด ์ฉ์ดํ๋ค.
- ์ง๊ด์ ์ผ๋ก ์ฝ๋๋ฅผ ๋ถ์ํ ์ ์๋ค.(๋ธ๋ญ์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ์ด๋ค์ง ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค -- ์บก์ํ, ์ถ์ํ)
- ์ ์ง๋ณด์๊ฐ ์ฌ์ฐ๋ฏ๋ก ๊ฐ๋ฐ ์๋๋ฅผ ํฅ์ํ๋ค.
- ์์์ ํตํด ์ฅ์ ์ ๊ทน๋ํํ๋ค.
Q # 1-3) ๊ฐ์ฒด ์งํฅ๊ณผ ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ์ ์ฐจ์ด๋?
๋ต๋ณ:
์ ์ฐจ์งํฅ, ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ(C)
- ์์ฐจ์ ํ๋ก๊ทธ๋๋ฐ์ด๋ค.
- ์์ ์์๋๋ก ์ฝ๋ฉํ๋ค.
- ํจ์ ๋จ์๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ธฐ๋ฅ๋ณ๋ก ๋ฌถ์ด๋์ ํน์ง์ด ์๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Java, C++, C#)
- ์ฃผ ๊ตฌ์ฑ์์๋ ํด๋์ค์ ๊ฐ์ฒด์ด๋ค.
- ํด๋์ค๋ฅผ ํ์ฉํด ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๋ณ๋ก ๊ตฌ์ฑํ๋ค.
- ๊ฐ์ฒด๋ณ๋ก ๊ฐ๋ฐ ๊ฐ๋ฅํ๋ค.
- ์ฝ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์ ๊ณ ์์ ์ฑ ๋๋ค.
Q # 2) ์๋ฐ ์ธ์ด์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
๋ต๋ณ: JAVA๋ ๋คํธ์ํฌ์์์ ์ธ ์ ์๋๋ก ๋ฏธ๊ตญ์ ์ ๋ง์ดํฌ๋ก ์์คํ ์ฆ๊ฐ ๊ฐ๋ฐํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค.
Q # 2-1) ์๋ฐ ์ธ์ด์ ํน์ง์?
๋ต๋ณ: JAVA๋ ์๋ฐ๊ฐ์๋จธ์ (JVM)๋ง ์ค์นํ๋ฉด ์ปดํจํฐ์ ์ด์์ฒด์ ์ ์๊ด์์ด ์๋ํ๋ค. ๋ํ, ๊ธฐ๋ณธ ์๋ฃํ์ ์ ์ธํ ๋ชจ๋ ์์๋ค์ด ๊ฐ์ฒด๋ก ํํ๋๊ณ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ ์ ํน์ง์ธ ์บก์ํ, ์์, ๋คํ์ฑ์ด ์ ์ ์ฉ๋ ์ธ์ด์ด๋ค. ๊ทธ ์ธ์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ํตํด ์๋์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๊ณ ๋ฉํฐ์ฐ๋ ๋๋ฅผ ์ง์ํ๋ค.
- ์ด์์ฒด์ ์์ด ๋ ๋ฆฝ์ : JVM(Java Virtual Machine)
- ํ ๊ฐ ์ด์์ ํด๋์ค๋ก ๊ตฌ์ฑ
- ํด๋์ค๋ ํ ๊ฐ ์ด์์ ํ๋๋ ๋ฉ์๋๋ก ๊ตฌ์ฑ
- ๋งจ ๋จผ์ public static void main(String[] args) ๋ฅผ ์ฐพ์ ์คํ - ๊ธฐ๋ณธ ์๋ฃํ์ ์ ์ธํ ๋ชจ๋ ์์๊ฐ ๊ฐ์ฒด๋ก ํํ
- ์บก์ํ, ์์, ๋คํ์ฑ
- Garbage Collector๋ฅผ ํตํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ธฐ๋ฅ
- ๋ฉํฐ์ค๋ ๋(Multi-thread = ๋ค์ค๋๊ธฐํ) ์ง์
Q # 2-2) ์๋ฐ์์ ๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
๋ต๋ณ: ๊ฐ์ฒด๋ ๋ฐ์ดํฐ(๋ณ์)์ ๊ทธ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ๋์(ํจ์), ์ ์ฐจ, ๋ฐฉ๋ฒ, ๊ธฐ๋ฅ์ ๋ชจ๋ ํฌํจ ํ ๊ฒ์ด๋ค. ๊ฐ์ ์ฑ์ง, ๊ฐ์ ๊ตฌ์กฐ์ ํํ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด๋ ๋ฑ๊ธ์ผ๋ก ์ ์ํ๊ณ ๋ฑ๊ธ์ ์ํ๋ ๊ฐ์ฒด๋ ๊ทธ ๋ฑ๊ธ์ ์ธ์คํด์ค์ด๋ค.
์๋ฅผ ๋ค๋ฉด ๊ธฐ์ฐจ์ญ์์ ์น์ฐจ๊ถ์ ๋ฐ๋งคํ๋ ๊ฒฝ์ฐ, ์ค์ฒด์ธ ‘์๋’๊ณผ ๋์์ธ ‘์น์ฐจ๊ถ ์ฃผ๋ฌธ’์ ํ๋์ ๊ฐ ์ฒด์ด๋ฉฐ, ์ค์ฒด์ธ ‘์ญ๋ฌด์’๊ณผ ๋์์ธ ‘์น์ฐจ๊ถ ๋ฐ๋งค’๋ ํ๋์ ๊ฐ์ฒด์ด๋ค.
Q # 3) ์๋ฐ ์ปดํ์ผ ๊ณผ์ ์ ์ค๋ช ํ์ธ์.
๋ต๋ณ: ์ปดํ์ผ๋ฌ๊ฐ ์์ค์ฝ๋๋ฅผ ์๋ฐ ๋ฐ์ดํธ์ฝ๋๋ก(.class) ๋ณํํ๋ค, JVM(์๋ฐ๊ฐ์๋จธ์ )์ด ๊ทธ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ค.
- ์ ์ฒ๋ฆฌ : #define, #include ์ง์์ ํด์
- ์ปดํ์ผ : ๊ณ ๊ธ ์ธ์ด ์์ค ํ๋ก๊ทธ๋จ ์ ๋ ฅ๋ฐ์ ์ด์ ๋ธ๋ฆฌ ํ์ผ์ ๋ง๋ฆ
- ์ด์ ๋ธ : ์ด์ ๋ธ๋ฆฌ ํ์ผ์ ์ค๋ธ์ ํธ ํ์ผ๋ก ๋ง๋ฆ
- ๋งํฌ : ์ค๋ธ์ ํธ ํ์ผ์ ์ฎ์ด ์คํํ์ผ์ ๋ง๋ค๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์ฐ๊ฒฐ
- ์คํ
Q # 3-1) ์คํฌ๋ฆฝํธ ์ธ์ด์ ์ปดํ์ผ ์ธ์ด์ ์ฐจ์ด๋?
๋ต๋ณ: ์คํฌ๋ฆฝํธ ์ธ์ด์ ์ปดํ์ผ ์ธ์ด์ ์ฐจ์ด์ ์ ์ปดํ์ผ๋ฌ์ ์กด์ฌ ์ฌ๋ถ์ด๋ค.
์คํฌ๋ฆฝํธ ์ธ์ด๋ ์คํ๋ ๋ ๋ฐ๋ก ํด์, ์ฝ๋ ์์ ํ ์คํํ ๋๋ง๋ค ๊ฒฐ๊ณผ ๋ฐ๋๋ค๋ ํน์ง์ด ์๋ค. ์คํฌ๋ฆฝํธ ์ธ์ด์๋ JavaScript, Python, Ruby๊ฐ ์๋ค. ์ปดํ์ผ ์ธ์ด๋ ํ๋ฒ ์ปดํ์ผํ ํ, ์ฝ๋ ์์ ํ ๋ค์ ์ปดํ์ผํ๊ธฐ ์ ๊น์ง ๊ฒฐ๊ณผ ๋์ผํ๋ค. ์ปดํ์ผ ์ธ์ด์๋ C, C++, C#, Java ๋ฑ์ด ์๋ค.
Q # 4) JDBC (Java Database Connectivity) ๋ ๋ฌด์์ธ๊ฐ?
๋ต๋ณ: JAVA๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ / DB์ ์ ๊ทผํด(์์
) ๋ฐ์ดํฐ๋ฅผ ์กฐํ/์ฝ์
/์์ /์ญ์ ๊ฐ๋ฅํ๋ค.
์ด๋, ์ฐ๊ฒฐํด์ฃผ๋ ์์ฉํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค์ธ JAVA API DBMS ์ข
๋ฅ์ ๋ฐ๋ผ ๊ทธ์ ๋ง๋ JDBC๋ฅผ ์ค์นํด์ผ ํ๋ค.
Q # 5) ๋คํ์ฑ๊ณผ ์์์ ๋ฌด์์ธ๊ฐ?
๋ต๋ณ: ๋คํ์ฑ(Polymorphism)๊ณผ ์์(Inheritance)์ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ฐ์ ๋ ๊ฐ์ง ํต์ฌ ๊ฐ๋ ์ด๋ค.
๋คํ์ฑ ์ด๋ ํ๋์ ์ง์์ ๋ํด ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ค๋ฅธ ํ์๋ฅผ ์ํํ๋ ๊ฒ์ ๋งํ๋ค. ๋คํ์ฑ์ ํ๋์ ํน์ ํ์ ์ ๋ํ ์ ์๋ฅผ ๋ง๋ค ์ ์๊ฒ ํ๊ณ , ํ๋์ ๊ตฌํํ๋ ์ ๋ง์ ๋ค๋ฅธ ํด๋์ค๋ค์ ๊ฐ๊ฒ ํ๋ค.
์์ ์ ๊ธฐ์กด ํด๋์ค์ ๋ณ์์ ๋ฉ์๋๋ฅผ ๋ชจ๋ ์ทจํ์ฌ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ ๊ฐ์ง๋ ํด๋์ค๋ฅผ ์๋ก ๋ง๋๋ ๊ฒ์ด๋ค. ๋ถ๋ชจ ํด๋์ค์์ ํด๋์ค์ ํ๋๊ณผ ์ ์๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค. ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ํ ๋ ์ด์ ์ ์ ์๋ ํด๋์ค์์ ์ ์์ ์ํ๋ฅผ ์์ํ ์ ์๊ณ ์๋ก์ด ํ๋์ ์ถ๊ฐํ๊ฑฐ๋ ์๋ก์ด ํ์ ์ ๋ํ ํ๋์ ์ค๋ฒ๋ผ์ด๋ํ ์ ์๋ค.
- ๋ณ์์ ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก ์ฐ๋ฏ๋ก ์ฝ๋์ค๋ณต์ ์ค์ธ๋ค.
- ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค ์ธ๋ถ์ ์ธ ๊ด์ ์ผ๋ก ๋ดค์ ๋ ๋ฌถ์ด์ ์ฒ๋ฆฌ(upcasting)ํ ์ ์์ผ๋ฏ๋ก ํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋๋ค.
Q # 6) ์ธํฐํ์ด์ค(Interface) ๋?
๋ต๋ณ: ์ธํฐํ์ด์ค ๋ ์ถ์ ํด๋์ค๋ณด๋ค ์ถ์ํ ์ ๋๊ฐ ๋์ ์ํ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ฉฐ ๊ธฐ๋ฅ์ ์ฌ์ ์์ ํฐ์๋ฏธ๋ฅผ ๋๊ณ ์๋ค. ๊ป๋ฐ๊ธฐ๋ง ์๋ ํด๋์ค๋ก, ์ธํฐํ์ด์ค๋ฅผ implements ํ๋ ํด๋์ค์๊ฒ ํ์ ์ ๊ณตํ๋ค.
- ์ผ์ข ์ ์ถ์ ํด๋์ค๋ก, ์ค์ง ์์์ ์ถ์ ๋ฉ์๋๋ง์ ์ ์ธํ ์ ์๋ค.
- Implements ํค์๋๋ฅผ ์ฌ์ฉํด์ ์์์ ์งํํ๋ฉฐ ์์ ํด๋์ค์์ ๋ฐ๋์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ผํ๋ค.
- ์์ ์ implement ํ๋ ํด๋์ค์๊ฒ ๋ฉ์๋ ๊ตฌํ์ ๊ฐ์ = ์์์ ๊ด๊ณ๊ฐ ์๋ ํด๋์ค ๊ฐ์ ์๋ก ๊ฐ์ ๋ก์ง์ ๊ตฌํํ๊ฒ ํ๋ค.
- ์) List ์ธํฐํ์ด์ค๋ฅผ implementํ๋ ํด๋์ค๋ค์ธ ArrayList, LinkedList๋ ๋ชจ๋ add(), clear(), indexOf(), get() ๋ฑ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ค.
- ๋ค์ค ์์ ๊ฐ๋ฅํ๋ค.
Q # 7) ์ถ์ํด๋์ค(Abstract)๋?
๋ต๋ณ: ์ถ์ํด๋์ค ๋ abstract์ ์ด์ฉํ ๋ฏธ์์ฑ ๋ฉ์๋๋ก ํํ๋ง ์ ์ํด๋๋ ํด๋์ค๋ฅผ ๋งํฉ๋๋ค. ์ถ์ ๋ฉ์๋๋ฅผ ํ๋ ์ด์ ๊ฐ์ง ํด๋์ค๋ก, ํ์ ํด๋์ค๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ถ์ํด๋์ค๋ ์์์ ์งํํ๊ณ ์์๋ฐ์ ์์ํด๋์ค์์ ๋ฐ๋์ ์ฌ์ ์๋ฅผ ํด์ผํ๋ค. ์ถ์ํด๋์ค๋ ์์์ ํตํด ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๋ฐ์ ์๋ฏธ๊ฐ ์๋ค.
Q # 7-1) ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์?
๊ณตํต์
- ์ ์ธ๋ง ์๊ณ ๊ตฌํ ๋ด์ฉ์ด ์๋ค.
- New ์ฐ์ฐ์๋ก ์๋ก์ด ์ธ์คํด์ค ์์ฑ ๋ถ๊ฐ๋ฅํ๋ค.
- ํ๋กํ ํ์ ๋ง ์๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ค.
- ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ์ํด๋์ค(์์ํด๋์ค)์์ ํ์ฅ/๊ตฌํํด์ผ ํ๋ค.
์ฐจ์ด์
- ์ธํฐํ์ด์ค๋ ๋ฉ์๋ ์ ์ธ๋ง ๊ฐ๋ฅํ๋ค. ํด๋์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ค์ค์์์ด ๊ฐ๋ฅํ๋ค.
- ์ถ์ํด๋์ค๋ ์ผ๋ฐ ๋ฉ์๋ ์ ์ธ์ ์ฌ์ฉํ๋ค. ๋ค์ค์์์ด ๋ถ๊ฐ๋ฅํ๋ค.
Q # 8) Static ์ด๋?
๋ต๋ณ: ํด๋์ค๊ฐ ๋ก๋ฉ๋ ๋, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋๋ฐ ์ฒ์ ์ค์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ณํ์ง ์์์ ์๋ฏธ / ๊ฐ์ฒด๋ฅผ ๋ง์ด ๋ง๋ค์ด๋ ํด๋น ๋ณ์๋ ํ๋๋ง ์กด์ฌ(๊ฐ์ฒด์ ๋ฌด๊ดํ ํค์๋)
Q # 9) Generic์ด๋?
๋ต๋ณ: ํด๋์ค์์ ์ฌ์ฉํ ํ์ ์ ํด๋์ค ์ธ๋ถ์์ ์ค์ ํ๋ ๊ฒ์ด๋ค. ๋ง๋ค์ด์ ธ ์๋ ํด๋์ค๋ฅผ ์ํ๋ ํํ๋ก ์ฌ์ฉํ ์ ์๋ค.
- < > ์์ ๋ค์ด๊ฐ ์ ์๋ ๊ฒ์ ์ฐธ์กฐ์๋ฃํ(ํด๋์ค, ์ธํฐํ์ด์ค, ๋ฐฐ์ด)์ด๋ค.
- ๊ธฐ๋ณธ์๋ฃํ์ ์ฌ์ฉํ๊ธฐ ์ํด์ wrapper ํด๋์ค ์ด์ฉํ๋ค.
Q # 10) ์๋ฐ ๋ฐ์ดํฐ ํ์ ์ ๋ํด ์ค๋ช ํ์ธ์.
๋ต๋ณ:
Primitive type ๊ธฐ๋ณธํ : ๋ณ์์ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅ(์ ์ํ, ์ค์ํ, ๋ฌธ์ํ, ๋
ผ๋ฆฌํ ๋ฑ 8๊ฐ์ง) ํ๋ค. stack ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ค์ ๊ฐ์ ์ ์ฅํ๋ค.
Reference type ์ฐธ์กฐํ : ๊ธฐ๋ณธํ ์ธ์ ๋ชจ๋ ํ์
(String, ํด๋์ค, ์ธํฐํ์ด์ค, ๋ฐฐ์ด ๋ฑ)์ด๋ค. new๋ก ์ ์ํ๊ณ , ์ค์ ๊ฐ์ heap์ ์ ์ฅํ๊ณ stack์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ง ์ ์ฅํ๋ค.
Q # 11) Thread๋?
๋ต๋ณ: ํ๋ก์ธ์ค(์ด์์ฒด์ ์์ ์คํ ์ค์ธ ํ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก ํ๋ ์ด์์ ์ฐ๋ ๋ ํฌํจ) ๋ด์์ ๋์์ ์คํ๋๋ ๋ ๋ฆฝ์ ์ธ ์คํ ๋จ์์ด๋ค. ์์์ ๋ง์ด ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํ์ด ์ฌ์ฐ๋ฉฐ ๋ฒ์ฉ์ฑ์ด ๋๋ค.
- ์ฅ์ :
- ๋น ๋ฅธ ํ๋ก์ธ์ค ์์ฑ
- ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
- ์ฌ์ด ์ ๋ณด ๊ณต์
- ๋จ์ :
- ์์์ ๊ณต์ ํ๊ธฐ๋๋ฌธ์ ๊ต์ฐฉ์ํ(Deadlock = ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ์ฒด์ ์์ ํ๋ ๋๋ ๊ทธ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์ํํ ์ ์๋ ์ด๋ค ํน์ ์๊ฐ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ) ์ ๋น ์ง ์ ์๋ค.
Q # 12) Thread์ Process์ ์ฐจ์ด?
๋ต๋ณ: ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ํ๋์ ํ๋ก์ธ์ค์ด๋ค.
์ค๋ ๋ ๋ ๊ฐ์์ ์คํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๊ณ ์๋ค. ๋์ผํ ํ๋ก์ธ์ค ๋ด์ ๋ค๋ฅธ ์ค๋ ๋๋ค๊ณผ ์ ์ญ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ค. = CPU๋ก๋ถํฐ ์๋ก์ด ์์์ ํ ๋น๋ฐ์ง ์์ ๋ ๋๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ณด๋ค ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค.
ํ๋ก์ธ์ค ๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋งํ๋ค. CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ถ๋ฐฐ ํด์ค์ผํ๋ฉฐ ์ด์์ฒด์ ์ ์ฑ๋ฅ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๊ฒฐ์ ๋๋ค.
Q # 13) ์ ๊ทผ ์ ํ์ (์ ๊ทผ์ง์ ์)์ ์ข
๋ฅ์ ๋ํด ์ค๋ช
ํ์ธ์.
๋ต๋ณ:
Public : ๊ฐ์ ํ๋ก์ ํธ ๋ด์ ์ด๋์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
Protected : ๊ฐ์ ํจํค์ง ๋ด, ๋ค๋ฅธ ํจํค์ง์์ ์์๋ฐ์ ์์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
Default : ๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
Private : ๊ฐ์ ํด๋์ค ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
Public > protected > default > private
Q # 14) Call by value(๊ฐ์ ์ํ ํธ์ถ), Call by reference(๋ ํผ๋ฐ์ค์ ์ํ ํธ์ถ) ์ ๋ํด ์ค๋ช
ํ์ธ์.
๋ต๋ณ: Call by value ๋ ๊ฐ์ ๋ณต์ฌํด์ ์๋ก์ด ํจ์๋ก ๋๊ธฐ๋ ํธ์ถ ๋ฐฉ์์ด๋ค. ์๋ณธ๊ฐ ๋ณ๊ฒฝํ์ง ์๋๋ค.
Call by reference ๋ ์ฃผ์๊ฐ์ ์ธ์๋ก ์ ๋ฌํ๋ ํธ์ถ ๋ฐฉ์์ด๋ค. ์๋ณธ๊ฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
์๋ฐ์ธ์ด๋ Call by value ์ด๋ค.
[์ฐธ๊ณ ] https://brunch.co.kr/@kd4/2
Q # 15) String , StringBuffer, StringBuilder ๋?
๋ต๋ณ: String
String ๋ ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋ค. ๋ฌธ์๋ฅผ ์์ ํ๋ ค๋ฉด ์ง์ฐ๊ณ ๋ค์ ์๋ก ์์ฑํด์ผ ํ๋ค.
์์ญ๋ฒ String์ด ๋ํด์ง๋ ๊ฒฝ์ฐ, ๊ฐ String์ ์ฃผ์๊ฐ์ด stack์ ์์ด๊ณ ํด๋์ค๋ค์ Garbage Collector๊ฐ ํธ์ถ๋๊ธฐ ์ ๊น์ง heap์ ์ง์์ ์ผ๋ก ์์ด๊ฒ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ธ ์ธก๋ฉด์์๋ ์น๋ช
์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
String์์ ์ ์ฅ๋๋ ๋ฌธ์์ด์ ์๊ณ ๋ณด๋ฉด char์ ๋ฐฐ์ดํํ๋ก ์ ์ฅ๋๋ฉฐ ์ด ๊ฐ๋ค์ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋๋ก private์ผ๋ก ๋ณดํธ๋๋ค. ๋ํ finalํ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ฃผ์ด์ง String์ ๊ฐ์ ๋ถ๋ณ์ผ๋ก ๋ฐ๋ ์๊ฐ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
StringBuffer ๋ ๊ฐ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ฉฐ, ํ๋ฒ ๋ง๋ค๊ณ ํ์ํ ๋ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ๋ฌธ์ ๋ณ๊ฒฝํ๋ค. ๋ฉํฐ์ฐ๋ ๋ ํ๊ฒฝ์์ ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ๋ค.
์คํธ๋ง ๋ฒํผ๋ charํ์
์ ๋ฐฐ์ด๋ก ๋์ด ์์ด์ ํ๊ธ์ ํ๊ธ์๋ฅผ appendํ ์ ์๋ค
name = name + “ํ”; ๊ตฌ๋ฌธ์ด ์คํ๋ ๋ ์ค์ ๋ก๋ ์คํธ๋ง ๋ฒํผ๋ฅผ ์๋ก ์์ฑํด์ name์ด ๊ฐ๋ฆฌํค๋ “๊ธธ๋”์ ๋ง๋ค์ด์ฃผ๊ณ ์คํธ๋ง ๋ฒํผ์ append ํจ์๋ฅผ ์ด์ฉํ์ฌ “ํ” ๋ฅผ ๋ถ์ฌ์ค๋ค. ๊ทธ๋ ๊ฒ ์์ฑ๋ ์คํธ๋ง ๋ฒํผ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ name์ ๋ค์ ์ด ๊ฐ์ ์ฐธ์กฐํ๊ฒ ๋๋ค. ๊ทธ๋ผ ๊ทธ์์ค์ ์๊ฒจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ “๊ธธ๋” ์ด๋ผ๋ ๊ฐ๊ณผ “ํ”๋ผ๋ ๊ฐ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๊ฐ์ง๊ณ ์ ๋ค๊ฐ ํ์์์ผ๋ ๋ฒ๋ฆฐ๋ค. ๊ทธ ์งง์ ์๊ฐ์ ์ด๋ฐ ์ผ์ฒ๋ฆฌ๊ฐ ์งํ์ด ๋์ด์ ์คํธ๋ง ๋ฒํผ๋ฅผ ์ฌ์ฉ ํ๋ ๊ฒ์ด ์คํธ๋ง ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๋ค.
StringBuilder ๋ ๋ฉํฐ์ค๋ ๋ ์ํ์์ ๋๊ธฐํ ์ง์ํ์ง ์๋๋ค. ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์ ๋ถ์ ํฉํ๋ ์ฑ๊ธ์ค๋ ๋์์ stringBuffer๋ณด๋ค ์ข๋ค.
[์ฐธ๊ณ ] https://jeong-pro.tistory.com/85
Q # 16) ์๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํด ์ค๋ช ํ์ธ์.
๋ต๋ณ:
- ๋ฉ์๋ ์์ญ : ๋ฐ์ดํธ์ฝ๋, static ๋ณ์, ์ ์ญ๋ณ์, ์ฝ๋์์ ์ฌ์ฉ๋๋ Class ์ ๋ณด ๋ฑ์ด ์ฌ
๋ผ๊ฐ / ์ฝ๋์์ ์ฌ์ฉ๋๋ class๋ค์ ๋ก๋๋ก ์ฝ์ด ํด๋์ค๋ณ๋ก ๋ฐํ์ ํ๋๋ฐ์ดํฐ, ๋ฉ์๋ ๋ฐ ์ดํฐ ๋ฑ์ ๋ถ๋ฅํด ์ ์ฅ
- ์คํ(Stack) : ๋งค๊ฐ๋ณ์, ์ง์ญ๋ณ์, ํจ์() ๋ฑ์ด ํ ๋น๋๋ LIFO(Last In First Out) ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ / ์ฌ์ฉ์ด ๋๋๋ฉด ๋ฐ๋ก ์๋ฉธ, ์ปดํ์ผ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น
- ํ(Heap) : new ์ฐ์ฐ์๋ฅผ ํตํ ๋์ ํ ๋น๋ ๊ฐ์ฒด๋ค์ด ์ ์ฅ๋จ, Garbage ์ปฌ๋ ์ ์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ด๋ฆฌ / ํธ์ถ์ด ๋๋๋ ์ฌ๋ผ์ง์ง ์์ผ๋ฉฐ ํ๋ก๊ทธ๋จ ์คํ ์ ๋์ ์ผ๋ก ํ ๋น
Q # 17) DAO (Data Access Object) ๋?
๋ต๋ณ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ ์ํ ๊ฐ์ฒด(DB๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ด)์ด๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ์ ํ๊ธฐ์ํ ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
Q # 18) DTO (Data Transfer Object = VO(Value Object)) ๋?
๋ต๋ณ: ๊ฐ ๊ณ์ธต๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ JavaBean(์ฌ๊ธฐ์ ๊ณ์ธต์ด๋ Controller, View, Business Layer, Persistent Layer) ์ด๋ค. VO๋ ๋์ผํ ๊ฐ๋
์ด์ง๋ง read only ์์ฑ์ ๊ฐ์ง๋ค.
Q # 19) ๋ณ์๋ช
ํ๊ธฐํ๋ ๋ฐฉ๋ฒ?
- ํ๊ฐ๋ฆฌ์ธ ํ๊ธฐ๋ฒ : ์๋ฃํ์ ์๋ณ์์ ๊ฐ์ด ํฌํจ ex) inum; int int_num; ์ธํฐํ์ด์ค๋ช
.
- ํ์ค์นผ ํ๊ธฐ๋ฒ : ์๋ณ์๊ฐ ํ ๋จ์ด๋ ํน์ ์ฌ๋ฌ ๋จ์ด๋ก ์กฐํฉ(์ธ๋๋ฐ X), ๊ฐ ๋จ์ด์ ์ฒซ ๋ฌธ ์๋ง ๋๋ฌธ์๋ก ์) KorScore
- ์บ๋ฉ ํ๊ธฐ๋ฒ : ๋ชจ๋ ๋จ์ด๋ฅผ ๊ณต๋ฐฑ์์ด ์กฐํฉ(์ธ๋๋ฐ X), ์ฒซ ๋จ์ด์ ์ฒซ ๋ฌธ์๋ ์๋ฌธ์๋ก ์) korScore
- ์ค๋ค์ดํฌ ํ๊ธฐ๋ฒ : ์) eng_score ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ฐจ์ด์
Q # 20) ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํ๋ผ.
๋ต๋ณ:
๋ฐฐ์ด
- ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ ๊ทผํ์ฌ ์ ๊ทผ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ํฌ๊ธฐ ๋ณ๊ฒฝ ๋ถ๊ฐํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ /์ญ์ ํ๋ฉด ๋ค์ ์์น๋ถํฐ ๋ชจ๋ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค.
์ฐ๊ฒฐ๋ฆฌ์คํธ
- ์ธ๋ฑ์ค ๋์ ํ์ฌ ์์น์ ์ด์ / ๋ค์ ์์น๋ฅผ ๊ธฐ์ตํ๋ค.
- ํ ๋ฒ์ ์ ๊ทผ ๋ถ๊ฐ, ์ฐ๊ฒฐ๋ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ผ๋ง ์ ๊ทผ ๊ฐ๋ฅํ์ฌ ๋ฐฐ์ด๋ณด๋ค ์๋๊ฐ ๋จ์ด์ง๋ค.
- ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ด๋ค.
- ๋ฐ์ดํฐ ์ฝ์ /์ญ์ ๋ ๋ ผ๋ฆฌ์ ์ฃผ์๋ง ๋ฐ๊ฟ์ค๋ค.
Q # 20-1) ์ด๋จ ๋ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ณ , ์ธ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด์ผํ ๊น?
๋ต๋ณ: ๋ฐฐ์ด์ ๋ฐ์ดํฐ ์์ด ๋ง์ง๋ง ์ฝ์ /์ญ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ์ ๊ทผ์ด ๋น๋ฒํ ๋ ์ฌ์ฉํ๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ ์์ด ์ ๊ณ , ์ฝ์ /์ญ์ ๊ฐ ๋น๋ฒํ ๋ ์ฌ์ฉํ๋ค.
Q # 21) ArrayList<> ๋?
๋ต๋ณ: ๋ฐฐ์ด์ ํ์ฅํ์ด๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์์๋ก ๋ฐ๊ฟ ์ ์๋ค. list์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ ํ์ ์ค์ ํ ์์๋ค. (add, remove, isEmpty, size, get, indexOf ๋ฑ์ ๋ฉ์๋๊ฐ ์๋ค.)
Q # 22) Hash ๋?
๋ต๋ณ: ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉ(HashTable)ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๊ฒ์ ์๋๊ฐ ๋น ๋ฅด๋ค. ๋ฐ์ดํฐ ์ฝ์ ๊ณผ ์ญ์ ์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ด๊ฑฐ๋ ์ฑ์ฐ์ง ์๊ณ , ๋ฐ์ดํฐ์ ์ฐ๊ด๋ ๊ณ ์ ํ ์ซ์๋ฅผ ์์ฑํด ์ด๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ค.
Q # 23) equals์ HashCode๋?
๋ต๋ณ: equals ๋ ๋์ผํ ๋ด์ฉ์ ๊ฐ์ง ๊ฐ์ฒด์ธ์ง๋ฅผ ๋น๊ตํ๋ค. hashcode ๋ ๋์ผํ ๊ฐ์ฒด์ธ์ง ๊ตฌ๋ณํ๊ธฐ ์ํด ๊ณ ์ ํ ์ ์ซ๊ฐ์ผ๋ก ์ถ๋ ฅํ๋ค.
Q # 24) ์คํ๊ณผ ํ์ ์ฐจ์ด๋?
๋ต๋ณ: Stack ์ (LIFO = Last in First out) ํจ์๋ฅผ ํธ์ถ ํ ๋, ํ์ฌ ํจ์์์ ์ฌ์ฉ๋๋ ๊ฐ์ ์คํ์ ๋ฃ๊ณ , ์์ ์ด ๋๋๋ฉด ํจ์๋ฅผ ๋ฆฌํดํ๊ณ ์คํ์ ๋ฃ์๋ ๊ฐ์ ๊บผ๋ด๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. Queue ๋ (FIFO = First in First out) ์ด๊ณ , ํ๋ก์ธ์ค ์ฒ๋ฆฌ, CPU ๊ด๋ฆฌ, ํ๋ฆฐํฐ ํ ๋ฑ์ ์ฌ์ฉํ๋ค.
Q # 24-1) ์คํ๊ณผ ํ์ ์ฐจ์ด๋?
๋ต๋ณ: ๋ฉ๋ชจ๋ฆฌ๋ ์คํ๊ณผ ํ์ ๋ ๊ฐ์ง ์ฃผ์ ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
์คํ(Stack) ์ ์ง์ญ๋ณ์, ํจ์(๋ฉ์๋) ๋ฑ์ด ํ ๋น๋๋ LIFO(Last In First Out) ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
ํ(Heap) ์ new ์ฐ์ฐ์๋ฅผ ํตํ ๋์ ํ ๋น๋ ๊ฐ์ฒด๋ค์ด ์ ์ฅ๋๋ฉฐ, Garbage ์ปฌ๋ ์ ์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ด๋ฆฌ๋์ด ์ง๋ค.
[์ฐธ๊ณ ] ๋ฉ์๋ ์์ญ์ static ๋ณ์, ์ ์ญ๋ณ์, ์ฝ๋์์ ์ฌ์ฉ๋๋ Class ์ ๋ณด ๋ฑ์ด ์ฌ๋ผ๊ฐ๋ค. ์ฝ๋์์ ์ฌ์ฉ๋๋ class๋ค์ ๋ก๋๋ก ์ฝ์ด ํด๋์ค๋ณ๋ก ๋ฐํ์ ํ๋๋ฐ์ดํฐ, ๋ฉ์๋ ๋ฐ์ดํฐ ๋ฑ์ ๋ถ๋ฅํด ์ ์ฅํ๋ค. ์คํ์ ๊ธฐ๋ณธ๊ฐ, ๊ฐ์ฒด์ ์ฐธ์กฐ, ๋ฉ์๋๊ฐ ์ ์ฅ๋๋ ์์น๋ค. ๋ฐ๋ผ์ ์คํ์ ์๋ ๋ณ์์ ์์ ์ฃผ๊ธฐ๋ ์ฝ๋์ ์ค์ฝํ์ ์ํฅ์ ๋ฐ๋๋ค. ์ค์ฝํ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋ ํธ์ถ์ด๋ for๋ฌธ, while๋ฌธ ๊ฐ์ ์ฝ๋์์ ๊ดํธ๋ก ๊ตฌ๋ถํด์ ์ ์ํ๋ค. ์ผ๋จ ํด๋น ์ค์ฝํ์ ์คํ์ด ์ข ๋ฃ๋๋ฉด ์ค์ฝํ ์์ ์ ์ธ๋ ๋ณ์๋ค์ ์คํ์์ ์ ๊ฑฐ๋๋ค. ๋ฉ์๋๋ฅผ ํธ์ถํ์ ๋ ์ ์ธ๋ ๋ณ์๋ค์ ์คํ์ ์๋จ์ ์์นํ๋ค. ์คํ์์ ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์คํ์ ์๋ก์ด ๋ฉ์๋์ ๋ณ์๋ฅผ ์คํ์ ์๋จ์ ๋๋ค.
Q # 25) Overloading VS Overriding
๋ต๋ณ:
Overloading (์ค๋ฒ๋ก๋ฉ) ์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ๋ ๊ฒ์ด๋ค. ๋งค๊ฐ๋ณ์์ ํ ์
์ด ๋ค๋ฅด๊ฑฐ๋ ๊ฐ์๊ฐ ๋ฌ๋ผ์ผ ํ๋ค. Return type๊ณผ ์ ๊ทผ ์ง์ ์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
Overriding (์ค๋ฒ๋ผ์ด๋ฉ) ์ ์์์์ ๋์จ ๊ฐ๋
์ด๋ค. ์์ ํด๋์ค(๋ถ๋ชจ)์ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค(์์ ํด๋์ค)์์ ์ฌ์ ์ํ๋ ๊ฒ์ด๋ค.
Q # 26) ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋?
๋ต๋ณ: ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ํ ๋ด์ ๊ฐ์ฒด ์ค ๊ฐ๋น์ง๋ฅผ ์ฐพ์๋ด์ด ์ฒ๋ฆฌํด์ ํ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ ์์ ์ ํ๋ ๊ฒ์ด๋ค.
JVM์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ ํ๋ก๊ทธ๋จ๋ค์ ์คํํ๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด OS์๊ฒ ์ถ๊ฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญํ๋๋ฐ, ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์คํ๋๋ค.
Q # 26-1) ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋?
๋ต๋ณ: ์ ๋ฆฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ, ์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ธ ๊ฐ๋น์ง๋ฅผ ์ ๋ฆฌํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์์คํ ์์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๋์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฐพ์ ์๋์ผ๋ก ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์์ผ๋ก ํ์ ํ๋ ๊ฒ์ด๋ค.
[์ฐธ๊ณ ] ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๊ธฐ์กด์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋ ์ฌ์ฌ์ฉํ ์ ์๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํด์ ํ ํ์๊ฐ ์๋ค. ์๋ฐ์์๋ newํค์๋๋ก ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ฉด JVM์ ํด๋น ๊ฐ์ฒด์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ์ ํ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค. ๊ฐ์ฒด๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ๋ฐฐ์นํด์ผ ํ๋ค. ๊ทธ๋์ ์์ฑ๋ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ค. c๋ c++๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ malloc์ freeํจ์๋ฅผ ํธ์ถํด์ ์ด๋ฐ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์๋์ผ๋ก ์ง์ ๊ด๋ฆฌํด์ผ ํ๋ค. ์๋ฐ์ c#๊ฐ์ ๋๋ถ๋ถ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ํจ์จ์ ๋์ด๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ์์คํ ์ด ์๋ค. ๋๋ถ์ ํ๋ก๊ทธ๋๋จธ๋ ์ ์ฌ์ ์ผ๋ก ๋ฐ์ํ ์ ์๋ ๋ชจ๋ ์ค์๋ฅผ ์ค์ผ ์ ์๋ค.
Q # 26-2) ๊ฐ๋น์ง๋?
๋ต๋ณ: ์ ๋ฆฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ, ์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ฐธ์กฐํ๋ ๊ด๊ณ๊ฐ ๋์ด์ง๋ฉด์ ์ด๋ ํ ๊ฒ๋ ์ฐธ์กฐํ์ง ์๋ ๊ฐ์ด ๋๋ฒ๋ฆฌ๋ ๊ฒ์ ๋งํ๋ค.
Q # 26-3) ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ผ์ด๋๋ ์ฅ์๋?
๋ต๋ณ: ์คํ ์ค์ธ ์๋ฐ ๊ฐ์ ๋จธ์ (JVM) ๋ด๋ถ์์ ์ผ์ด๋๋ค. JVM์ OS์๋์์ ๋ฐ์ํ๋ค.ํ๋ก๊ทธ๋จ ์คํ์ OS์์ ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ JVM์ด ์ฌ์ฉํ๋ค.
Q # 26-4) ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๊ฐ๋น์ง ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ํ๋จํ๋์? (= ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ๋จํ ๊น์?)
๋ต๋ณ: ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๊ฐ๋น์ง ๊ฐ์ฒด๋ฅผ ํ๋จํ๊ธฐ ์ํด reachability ๊ฐ๋ ์ ์ฌ์ฉํ๋ค. ์ด๋ค ๊ฐ์ฒด์ ์ ํจํ ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด reachable, ์์ผ๋ฉด unreachable๋ก ๊ตฌ๋ณํ๊ณ unreachable ๊ฐ์ฒด๋ฅผ ๊ฐ๋น์ง๋ก ๊ฐ์ฃผํ๋ค.
Q # 27) ํ๋ ์์ํฌ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ: ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ๋ ๋ผ๋๊ฐ ๋๋ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ๊ตฌํํ ํด๋์ค, ์ธํฐํ์ด์ค, ๋ฉ์๋ ๋ฑ์ ๋ชจ์์ด๋ค.
Q # 27-1) ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ ๋์ ์ฅ์ ๊ณผ ๋จ์ ์?
๋ต๋ณ: ์ฅ์ ์ ๋ฏธ๋ฆฌ ๊ตฌํํด ๋ ์ฝ๋๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ ๋นจ๋ฆฌ ๋ง๋ค ์ ์๊ณ , ํ์ง์ด ๋ณด์ฅ๋์ด ์๊ณ , ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค. ๋จ์ ์์ต์ํด์ง๋ ๋ฐ์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๊ณ , ์ ์ฐ์ฑ์ด ๋ถ์กฑํฉ๋๋ค. ๋ํ, ์ธ์ด๊ฐ ์๋ ํ๋ ์์ํฌ๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋๋ค๋ ๋ถ์์ฉ์ด ์์ต๋๋ค.
Q # 27-2) Spring ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
๋ต๋ณ:
EJB(Enterprise JavaBeans = ๊ธฐ์
ํ๊ฒฝ์ ์์คํ
์ ๊ตฌํํ๊ธฐ ์ํ ์๋ฒ์ธก ํด๋ผ์ด์ธํธ ๋ชจ๋ธ) ์ ๋นํด ๊ฐ๋ณ๊ธฐ ๋๋ฌธ์ ์ํฐํ๋ผ์ด์ฆ๊ธ์ ์์คํ
์ ๋ ๋น ๋ฅธ ์๊ฐ์ ์์ฑ ๊ฐ๋ฅํ๋ค.
๊ธฐ์กด์ ํ๋ ์์ํฌ๋ค์ ์น, ๋๋ ํ๋์จ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฑ ์ ๋ฌธ์ ์ธ ์์ญ๋ง ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์คํ๋ง์ ์ด๋ ํ ๋ถ์ผ์ ์ง์คํ๊ธฐ ๋ณด๋ค, ์ ์ฒด๋ฅผ ์ค๊ณํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค. ์คํ๋ง์ ์ ์ฒด ๊ตฌ์กฐ์ ์ง์คํ๊ธฐ์ ํน์ ์์ญ์ ํ๋ ์์ํฌ์ ๊ณต์กดํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
[์ฐธ๊ณ ] Spring ํ๋ ์์ํฌ์ ํน์ง
- POJO(Plain Old Java Object)์ ๊ตฌ์ฑ๋ง์ผ๋ก ๊ฐ๋ฅํ๋๋ก ์ ์(๋ฐ๋ก ํ๋ ์์ํฌ์ ์ฌ์ฉ์ ์ํด ๊ณต๋ถํ ํ์๊ฐ ์๋ค.)
- ์์กด์ฑ ์ฃผ์ (DI)๋ฅผ ํตํ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๊ตฌ์ฑ
- AOP(Aspect oriented programming)์ ์ง์ํ๋ค. ๊ณตํต๋ ๋ถ๋ถ๋ฑ, ํน์ ๋ถ๋ถ๋ค(ํต์ฌ ๊ด์ฌ์ฌ) ๋ก ๋๋์ด ๊ด๋ฆฌํจ์ผ๋ก์จ,ํ๋ก๊ทธ๋จ์ ๋ชจ๋ํ ํ์ฌ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์๊ฐ ํธํ๋ค.
- ํธ๋์ญ์ ์ ์ง์ํ๋ค. ์คํ๋ง์ ์ด๋ฅผ ์ด๋ ธํ ์ด์ ์ด๋ xml๋ก ์ค์ ๊ฐ๋ฅํ๋ค.
Q # 28) Class ์ Instance ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ?
๋ต๋ณ: Class(ํด๋์ค) ๋ ์ด๋ค ํน์ ์ข ๋ฅ์ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ๋ํด ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉํ ์ ์๋ ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ ํ๊ณ ์๋ ์ํํธ์จ์ด์ ์ธ ์ค๊ณ๋๋ผ ํ ์ ์๋ค. ์ค์ธ๊ณ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ค์ด ๊ฐ์ง ์ ์๋ ์ํ์ ํ๋ ๋ค์ ๋ํด ์ํํธ์จ์ด์ ์ผ๋ก ์ถ์ํ(abstraction) ํด ๋์ ๊ฒ์ด๋ค. Instance(์ธ์คํด์ค) ๋ ํด๋์ค์ ๋ํด ์ ์ธ, ์์ฑ๋๋ ๋ณ์์ด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ฒ ๋๋ค. ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋ณ์๋ค์ ๊ฐ์ ์ค์ ๋ฐ ๋ณ๊ฒฝํ ์ ์๋ค.
Object(๊ฐ์ฒด)๋ ์ํํธ์จ์ด ์ธ๊ณ์ ๊ตฌํํ ๋์์ด๊ณ , ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์ค๊ณ๋๊ฐ Class(ํด๋์ค)์ด๋ฉฐ ์ด ์ค๊ณ๋์ ๋ฐ๋ผ ์ํํธ์จ์ด ์ธ๊ณ์ ๊ตฌํ๋ ์ค์ฒด๊ฐ Instance(์ธ์คํด์ค)์ด๋ค.
Q # 29) Lambda Expressions์ ๋ํด ์ค๋ช ํ์์ค.
๋ต๋ณ: Lambda Expressions(๋๋ค์) ์ ์๋ณ์ ์์ด ์คํ ๊ฐ๋ฅํ ํจ์ ํํ์์ด๋ค. ์๋ฐ 8์ ๊ฐ์ฅ ํน์ง์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ๊ธฐ์กด์ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ค์ด๊ณ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๋ ๊ฒ์ ๋ชฉ์ ์ ๋๊ณ ์๋ค. ๋ํ์ ์ผ๋ก ๋ฐ๋ณต๋ฌธ, ๋น ๊ต๋ฌธ์ด ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ค์์ ์ํ ์ธํฐํ์ด์ค์์ ์ถ์ ๋ฉ์๋๋ ๋จ ํ๋์ฌ์ผ ํ๋ฉฐ, ์ด ์ธํฐํ์ด์ค๋ ๋๋ค์์ ์ํ ๊ฒ์ด๋ค๋ผ๋ ํํ์ ์ํด @FuctionalInterface๋ฅผ ์ฌ์ฉํ๋ค. Stream API์ ์กด์ฌ๋ฅผ ์์๋๋ฉด ์ข๋ค.
Q # 30) Vector ์ ArrayList ์ ๋ํด ์ค๋ช ํ์์ค.
๋ต๋ณ:
Vector
- ํ์์ ๋ฐ๋ผ ํฌ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์๋ ๋์ ๋ฐฐ์ด ๊ตฌํํ๋ค.
- ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ ์ก์ธ์ค ๊ฐ๋ฅํ๋ค.
- ๋๊ธฐํ ๋์ด ์์ผ๋ฉด ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ๋ฒกํฐ์ ๋ฉ์๋๋ฅผ ํธ์ถ ๊ฐ๋ฅํ๋ค.
ArrayList
- Collections ํ๋ ์์ํฌ์ ์ผ๋ถ, java.util ํจํค์ง ๋ด์ ์กด์ฌํ๋ค.
- Object๋ฐฐ์ด์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅํ๋ค.
- ๋ฐฐ์ด์ ๋ ์ด์ ์ ์ฅํ ๊ณต๊ฐ์ด ์์ผ๋ฉด ๋ณด๋ค ํฐ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์ ๊ธฐ์กด์ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ด์ฉ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ณต์ฌํ ๋ค์์ ์ ์ฅํ๋ค.
- ์ ์ธ๋ ๋ฐฐ์ด์ ํ์ ์ด ๋ชจ๋ ๊ฐ์ฒด์ ์ต๊ณ ์กฐ์์ธ Object์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ด์ ์ ์๋ค.
Q # 30-1) Vector ์ ArrayList ์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์?
๋ต๋ณ: ๊ณตํต์ ์ ํฌ๊ธฐ๊ฐ ๋์ ์ธ ๋ฐฐ์ด์ ์ฌ์ฉํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์ฐจ์ด์ ์ Vector๋ ๋๊ธฐ์(ํ ์ค๋ ๋๊ฐ ๋ฒกํฐ ์์ ์ค์ด๋ฉด ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฒกํฐ๋ฅผ ๋ณด์ ํ ์ ์์) ๋ฐฉ์์ด๊ณ , ArrayList ๋ ๋น๋๊ธฐ์(์ฌ๋ฌ ์ค๋ ๋๊ฐ ArrayList์์ ๋์์ ์์ ํ ์ ์์, Vector๋ณด๋ค ๋น ๋ฆ) ์ด๋ค.
'TIL > ๋ฉด์ ๋๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋คํธ์ํฌ(network)] ๋ฉด์ ์์ ์ง๋ฌธ๊ณผ ๋ต๋ณ (3) | 2020.05.02 |
---|---|
[์ด์์ฒด์ (OS)] ๋ฉด์ ์์ ์ง๋ฌธ๊ณผ ๋ต๋ณ (14) | 2020.04.11 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)] ๋ฉด์ ์์ ์ง๋ฌธ๊ณผ ๋ต๋ณ (2) | 2020.02.27 |