๐Ÿ’ป

[์ž๋ฐ”(JAVA)] ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€ ๋ณธ๋ฌธ

TIL/๋ฉด์ ‘๋Œ€๋น„

[์ž๋ฐ”(JAVA)] ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€

๋˜ํšจ๋‹ˆ 2020. 3. 22. 10:32

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(์ž๋ฐ”๊ฐ€์ƒ๋จธ์‹ )์ด ๊ทธ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค.

  1. ์ „์ฒ˜๋ฆฌ : #define, #include ์ง€์‹œ์ž ํ•ด์„
  2. ์ปดํŒŒ์ผ : ๊ณ ๊ธ‰ ์–ธ์–ด ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅ๋ฐ›์•„ ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ์„ ๋งŒ๋“ฆ
  3. ์–ด์…ˆ๋ธ” : ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ์„ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ๋งŒ๋“ฆ
  4. ๋งํฌ : ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ์—ฎ์–ด ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ
  5. ์‹คํ–‰

 

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๋ณด๋‹ค ๋น ๋ฆ„) ์ด๋‹ค.

๋ฐ˜์‘ํ˜•
Comments