๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Job/Interview

IT ๊ธฐ์ˆ ๋ฉด์ ‘ ํ•„์ˆ˜ ์งˆ๋ฌธ ์ •๋ฆฌ

by oliviarla 2022. 4. 14.

์›น

- HTTP, HTTPS(TLS(SSL))

๋”๋ณด๊ธฐ

HTTP๋Š” ๋”ฐ๋กœ ์•”ํ˜ธํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ด์ง

HTTPS๋Š” ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๊ฐ„์— ์•”ํ˜ธํ™” ๊ณ„์ธต์„ ๊ฑฐ์ณ์„œ ํŒจํ‚ท์„ ์•”ํ˜ธํ™”ํ•จ

- HTTP 1.1 2.0 3.0

 

- HTTP RESTFUL

๋”๋ณด๊ธฐ
  • Representational State Transfer์˜ ์•ฝ์ž
  • ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ(๋˜๋Š” ์ •๋ณด)๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธ
  • ์›น์˜ ๊ธฐ์กด ๊ธฐ์ˆ ๊ณผ HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉ -> ์›น์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ

- HTTP ์‘๋‹ต์ฝ”๋“œ

๋”๋ณด๊ธฐ

200๋ฒˆ๋Œ€: ํ†ต์‹  ์„ฑ๊ณต

300๋ฒˆ๋Œ€: ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

400๋ฒˆ๋Œ€: ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜

500๋ฒˆ๋Œ€: ์„œ๋ฒ„ ์˜ค๋ฅ˜

 

- ์›น๋ธŒ๋ผ์šฐ์ €์— google.com ์น˜๋ฉด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •

๋”๋ณด๊ธฐ
  • ์ฃผ์†Œ์ฐฝ์— url์„ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด, ์„œ๋ฒ„์— ์š”์ฒญ์ด ์ „์†ก๋จ
  • ํ•ด๋‹น ํŽ˜์ด์ง€์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ ์ž์›๋“ค(text, image ๋“ฑ๋“ฑ)์ด ๋ณด๋‚ด์ง
  • ์ด์ œ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ์ž์›์ด ๋‹ด๊ธด html๊ณผ ์Šคํƒ€์ผ์ด ๋‹ด๊ธด css๋ฅผ W3C ๋ช…์„ธ์— ๋”ฐ๋ผ ํ•ด์„ํ•  ๊ฒƒ์ž„
  • ์ด ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด '๋ Œ๋”๋ง ์—”์ง„'
  • ๋ Œ๋”๋ง ์—”์ง„์€ ์šฐ์„  html ํŒŒ์‹ฑ ๊ณผ์ •์„ ์‹œ์ž‘ํ•จ. html ํŒŒ์„œ๊ฐ€ ๋ฌธ์„œ์— ์กด์žฌํ•˜๋Š” ์–ดํœ˜์™€ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•˜๋ฉด์„œ DOM ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•
  • ๋‹ค์Œ์—” css ํŒŒ์‹ฑ ๊ณผ์ • ์‹œ์ž‘. css ํŒŒ์„œ๊ฐ€ ๋ชจ๋“  css ์ •๋ณด๋ฅผ ์Šคํƒ€์ผ ๊ตฌ์กฐ์ฒด๋กœ ์ƒ์„ฑ
  • ์ด 2๊ฐ€์ง€๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ฌ. ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ๊ฐ€ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ์ƒํƒœ
  • ํ™”๋ฉด์— ๋ฐฐ์น˜๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , UI ๋ฐฑ์—”๋“œ๊ฐ€ ๋…ธ๋“œ๋ฅผ ๋Œ๋ฉฐ ํ˜•์ƒ์„ ๊ทธ๋ฆผ
  • ์ด๋•Œ ๋น ๋ฅธ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด ํ‘œ์‹œ๋ฅผ ์œ„ํ•ด '๋ฐฐ์น˜์™€ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •'์€ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๋ฐ›๊ณ  ํ•œ๊บผ๋ฒˆ์— ์ง„ํ–‰๋˜์ง€ ์•Š์Œ. ์ž์›์„ ์ „์†ก๋ฐ›์œผ๋ฉด, ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์‹œ์— ์ผ๋ถ€๋ถ„ ๋จผ์ € ์ง„ํ–‰ํ•˜๊ณ  ํ™”๋ฉด์— ํ‘œ์‹œํ•จ

์šด์˜์ฒด์ œ

- OS ์Šค๋ ˆ๋“œ , ํ”„๋กœ์„ธ์Šค ์ฐจ์ด(๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์ฐจ์ด, PCB)

๋”๋ณด๊ธฐ

ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ตœ์†Œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ ์†Œ์œ 

ํ”„๋กœ์„ธ์Šค: ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์‹คํ–‰์ค‘์ธ ์ž‘์—…, ๊ฐ๊ฐ ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉ
์Šค๋ ˆ๋“œ: ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํ๋ฆ„ ๋‹จ์œ„, ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต๊ฐ„, ์ž์›์„ ๊ณต์œ 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค: ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์— ์—ฌ๋Ÿฌ CPU๋ฅผ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ: ํ•˜๋‚˜์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ๊ตฌ์„ฑํ•ด ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌ

PCB(Process Control Block)

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ, interrupt๊ฐ€ ๋ฐœ์ƒํ•ด ์•ž์œผ๋กœ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  ๋Œ€๊ธฐ์ค‘(waiting)์ธ ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ

-  OS ๋ฐ๋“œ๋ฝ, ๋ฐ๋“œ๋ฝ ์กฐ๊ฑด 4๊ฐ€์ง€

๋”๋ณด๊ธฐ

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ ์›ํ•˜๋Š” ์ž์›์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜์–ด ์žˆ์–ด ๋ฌดํ•œ wait์ƒํƒœ์— ๋น ์ ธ ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ

 

๋ฐœ์ƒ ์กฐ๊ฑด

- ์ƒํ˜ธ ๋ฐฐ์ œ: ์ž์›์€ ํ•œ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- ์ ์œ  ๋Œ€๊ธฐ: ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ž์›์„ ์ ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์ถ”๊ฐ€๋กœ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•จ

- ๋น„์„ ์ : ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์€ ์‚ฌ์šฉ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†์Œ

- ์ˆœํ™˜ ๋Œ€๊ธฐ: ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์—์„œ ์ˆœํ™˜ ํ˜•ํƒœ๋กœ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ

- ๋™๊ธฐํ™”( ๋ฎคํ…์Šค, ์„ธ๋งˆํฌ์–ด, ๋ชจ๋‹ˆํ„ฐ, ์Šคํ•€๋ฝ, ์–ดํ† ๋ฏน ์„ค๋ช…)

๋”๋ณด๊ธฐ

์„ธ๋งˆํฌ์–ด

๊ณต์œ ๋œ ์ž์›์˜ ๋ฐ์ดํ„ฐ์— ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•

์ž„๊ณ„ ๊ตฌ์—ญ(Critical Section)

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์ˆ˜ํ–‰๋  ๋•Œ, ๊ฐ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋ถ€๋ถ„

ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ ‘๊ทผ ๋ง‰์•„์•ผ ํ•จ

๋ฎคํ…์Šค (์ƒํ˜ธ ๋ฐฐ์ œ)

์ž„๊ณ„ ๊ตฌ์—ญ์„ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ๋“ค์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๊ณ  ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 

  • lock : ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ ๊ถŒํ•œ์„ ์–ป์–ด์˜ด ( ๋งŒ์•ฝ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ ์ˆ˜ํ–‰ ์ค‘์ด๋ฉด ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ )
  • unlock : ํ˜„์žฌ ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ–ˆ์Œ์„ ์•Œ๋ฆผ. ( ๋Œ€๊ธฐ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ๊ตฌ์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Œ )

- ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜, ํŽ˜์ด์ง• (๋‚ด๋ถ€๋‹จํŽธํ™” ,์™ธ๋ถ€๋‹จํŽธํ™”)

๋”๋ณด๊ธฐ
ํŽ˜์ด์ง€: ๊ณ ์ • ์‚ฌ์ด์ฆˆ์˜ ์ž‘์€ ํ”„๋กœ์„ธ์Šค ์กฐ๊ฐ (๊ณ ์ • ํฌ๊ธฐ)
ํ”„๋ ˆ์ž„: ํŽ˜์ด์ง€ ํฌ๊ธฐ์™€ ๊ฐ™์€ ์ฃผ๊ธฐ์–ต์žฅ์น˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ
๋‹จํŽธํ™”: ๊ธฐ์–ต์žฅ์น˜์˜ ๋นˆ ๊ณต๊ฐ„์ด ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰˜๋Š” ํ˜„์ƒ
๋‚ด๋ถ€ ๋‹จํŽธํ™”: ๋ถ„ํ• ๋œ ์˜์—ญ์ด ํ• ๋‹น๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ปค ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ๋‚จ์•„์žˆ๋Š” ๋นˆ ๊ณต๊ฐ„
์™ธ๋ถ€ ๋‹จํŽธํ™”: ๋ถ„ํ• ๋œ ์˜์—ญ์ด ํ• ๋‹น๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์•„ ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ๋‚จ์•„์žˆ๋Š” ์ „์ฒด ์˜์—ญ
์„ธ๊ทธ๋จผํŠธ: ์„œ๋กœ๋‹ค๋ฅธ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๋…ผ๋ฆฌ์  ๋ธ”๋ก์ด ์—ฐ์†์  ๊ณต๊ฐ„์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ (๊ฐ€๋ณ€ ํฌ๊ธฐ)
  • ํŽ˜์ด์ง•: ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ”„๋ ˆ์ž„๋“ค๊ณผ ๊ฐ™์€ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ๊ท ๋“ฑ ํŽ˜์ด์ง€๋กœ ๋‚˜๋‰จ, ์†Œ๋Ÿ‰์˜ ๋‚ด๋ถ€ ๋‹จํŽธํ™” ์กด์žฌ
  • ์„ธ๊ทธ๋จผํ…Œ์ด์…˜: ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์„ธ๊ทธ๋จผํŠธ๋“ค๋กœ ๋‚˜๋‰จ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ ๊ฐœ์„ , ๋™์ ๋ถ„ํ• ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ, ์™ธ๋ถ€ ๋‹จํŽธํ™” ์กด์žฌ
  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง•: ํ•„์š”ํ•œ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์„ ๋•Œ ๋ถˆ๋Ÿฌ์˜ด, ์™ธ๋ถ€ ๋‹จํŽธํ™” X, ๋ณต์žกํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ
  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜: ํ•„์š”ํ•œ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์žˆ์„ ๋•Œ ๋ถˆ๋Ÿฌ์˜ด, ๋‚ด๋ถ€ ๋‹จํŽธํ™” X, ๋ณต์žกํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ

JAVA

- JVM

๋”๋ณด๊ธฐ

JVM์€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ, ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ” ์ฝ”๋“œ๋Š” JVM์„ ํ†ตํ•ด ์‹คํ–‰๋˜๋ฏ€๋กœ Window, Linux์™€ ๊ฐ™์€ ๋‹ค๋ฅธ OS์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

- GC (Garbage Collection)

๋”๋ณด๊ธฐ

GC๋Š” ํž™ ์˜์—ญ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์„ ์ด์นญํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ์ž๋ฐ”๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ํ•ด์ œํ•ด์ค„ ์ˆ˜ ์—†๋Š” ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

- JAVA ๊ฐ์ฒด์ง€ํ–ฅ

๋”๋ณด๊ธฐ

๋ฐ˜๋ณต๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜(ํ”„๋กœ์‹œ์ €)๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹

- SOLID๋ž€?

๋”๋ณด๊ธฐ

SRP(๋‹จ์ผ์ฑ…์ž„์›์น™): ํ•œ ํด๋ž˜์Šค์˜ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

OCP(๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™): ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

LSP(๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™): ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์œผ๋ฉด์„œ ํ•˜์œ„ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์•ผํ•˜๋Š” ์›์น™์œผ๋กœ ์ƒ์œ„ ํƒ€์ž…์„ ์ƒ์†ํ•ด์„œ ์žฌ์ •์˜ ํ–ˆ์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ์ด ๊นจ์ง€์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ISP(์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™): ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ์— ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ์œผ๋ฉด ์•ˆ๋˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค. ํŠน์ • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋ฒ”์šฉ ์ธํ„ฐํŽ˜์ด์Šค ํ•˜๋‚˜๋ณด๋‹ค ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋น„๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹จ ๋” ์ž‘๊ณ  ๊ตฌ์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

DIP(์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™): ์ถ”์ƒ์ ์ธ ๊ฒƒ์€ ์ž์‹ ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ๋ณ€ํ™”ํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ์›์น™์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋ก  ๊ตฌํ˜„ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ๋ง๊ณ , ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•ด์•ผ ํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์˜ ์ผ๋ จ๊ณผ์ • 

๋”๋ณด๊ธฐ
  • ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ(javac)๊ฐ€ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ(.java)๋ฅผ ์ฝ์–ด ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ๋ณ€ํ™˜์‹œํ‚ต๋‹ˆ๋‹ค.
  • Class Loader๋ฅผ ํ†ตํ•ด class ํŒŒ์ผ๋“ค์„ JVM์œผ๋กœ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๋”ฉ๋œ classํŒŒ์ผ๋“ค์€ Execution engine์„ ํ†ตํ•ด ํ•ด์„๋ฉ๋‹ˆ๋‹ค.
  • ํ•ด์„๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” Runtime Data Areas ์— ๋ฐฐ์น˜๋˜์–ด ์‹ค์งˆ์ ์ธ ์ˆ˜ํ–‰์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

- JVM ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ

๋”๋ณด๊ธฐ

-Method Area: ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๋Ÿฐํƒ€์ž„ ์ƒ์ˆ˜ํ’€, ๋ฉ”์„œ๋“œ, ํ•„๋“œ,์ƒ์„ฑ์ž,ํƒ€์ž… ์ •๋ณด, static ๋ณ€์ˆ˜ ,static๋ฉ”์„œ๋“œ ,๋ฐ”์ดํŠธ ์ฝ”๋“œ๋“ฑ์„ ๋ณด๊ด€ํ•œ๋‹ค. ์ „์ฒด thread์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ณ , ์‹œ์ž‘์‹œ์— ์ƒ์„ฑ๋˜์„œ ์ข…๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ์กด์žฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์“ฐ๊ฒŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ์œ„ํ—˜์ด ์žˆ๋‹ค.

 

-Heap Area: ๋ž˜ํผ๋Ÿฐ์Šค ํƒ€์ž…์„ ๊ฐ–๋Š” ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค),๋ฐฐ์—ด ๋“ฑ์ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜์„œ ์ €์žฅ๋˜๋Š” ๊ณณ์ด๋‹ค. new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด heap์˜์—ญ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ€์—ฌ๋ฐ›๊ณ  stack์˜์—ญ์— ์ฐธ์กฐ๋ณ€์ˆ˜์— ์‹ค์ œ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค ๊ฐ’์„ ๋ฆฌํ„ด๋ฐ›๋Š”๋‹ค. ์ด ๋ž˜ํผ๋Ÿฐ์Šค ๊ฐ’์„ ํ†ตํ•ด์„œ๋งŒ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

 

-Stack Area: ๊ฐ ์Šค๋ ˆ๋“œ ์‹œ์ž‘์‹œ์— ํ•˜๋‚˜์”ฉ ํ• ๋‹น๋˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋œ๋‹ค.๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ์— ํ”„๋ ˆ์ž„์„ ์ถ”๊ฐ€ํ•˜๊ณ (push) ์ข…๋ฃŒ๋˜๋ฉด ์ œ๊ฑฐํ•œ๋‹ค(pop). ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ ์ •๋ณด๋“ค์˜ ์ž„์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

primitiveํƒ€์ž… ๋ณ€์ˆ˜๋Š” ์Šคํƒ ์˜์—ญ์— ์ง์ ‘ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.reference ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋Š” ํž™ ์˜์—ญ์ด๋‚˜ ๋ฉ”์†Œ๋“œ ์˜์—ญ์˜ ๊ฐ์ฒด ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.

- ์ธํ„ฐํŽ˜์ด์Šค, ์ถ”์ƒํด๋ž˜์Šค

๋”๋ณด๊ธฐ

์ถ”์ƒํด๋ž˜์Šค : ํด๋ž˜์Šค ๋‚ด์— ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ํฌํ•จ๋˜๊ฑฐ๋‚˜ abstract๋กœ ์ •์˜๋œ ๊ฒฝ์šฐ. extends๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๊ณ  ํ™•์žฅํ•˜๋„๋ก ํ•˜๋Š” ํด๋ž˜์Šค

์ธํ„ฐํŽ˜์ด์Šค : ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ (์—ฌ๋Ÿฌ implements๊ฐ€ ๊ฐ€๋Šฅํ•ด ๋‹ค์ค‘ ์ƒ์† ๊ตฌํ˜„ ๊ฐ€๋Šฅ) ๋ผˆ๋Œ€๋งŒ ์žˆ์œผ๋ฉฐ, ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๊ฐ•์ œ์ ์œผ๋กœ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ๋งŒ๋“ฌ

- ์˜ค๋ฒ„๋ผ์ด๋”ฉ๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ

๋”๋ณด๊ธฐ

์˜ค๋ฒ„๋ผ์ด๋”ฉ: ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋˜, ๋Ÿฐํƒ€์ž„ ๋‹คํ˜•์„ฑ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฒ„๋กœ๋”ฉ: ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ ๋™์ผํ•œ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ๊ฐ€์ง€์ง€๋งŒ, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…, ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ปดํŒŒ์ผ ํƒ€์ž„ ๋‹คํ˜•์„ฑ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ

- TCP vs UDP (TCP, UDP ํŠน์„ฑ)

๋”๋ณด๊ธฐ

TCP

- ์—ฐ๊ฒฐ ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ

- ๊ฐ€์ƒ ํšŒ์„ ์„ ๋งŒ๋“ค์–ด ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋„๋ก(ํ๋ฆ„ ์ œ์–ด, ํ˜ผ์žก ์ œ์–ด, ์˜ค๋ฅ˜ ์ œ์–ด) ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

- ํŒŒ์ผ์ „์†ก๊ณผ ๊ฐ™์€ ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋จ

UDP

- ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๊ทธ๋žจ๋‹จ์œ„๋กœ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

- ๋”ฐ๋กœ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ๊ฐ€ ์—†์Œ

- ์ŠคํŠธ๋ฆฌ๋ฐ, RTP์™€ ๊ฐ™์ด ์—ฐ์†์„ฑ์ด ๋” ์ค‘์š”ํ•œ ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋จ

 

+) ํ•˜์ง€๋งŒ UDP๋„ ์‹ ๋ขฐ์„ฑ์„ UDP์ž์ฒด์—์„œ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๋ฟ์ด์ง€, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ HTTP/3์€ QUIC์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”๋ฐ, QUIC์€ UDP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, UDP ์ž์ฒด๋Š” ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์ง€๋งŒ, ์ถ”๊ฐ€์ ์ธ ์ •์˜๋ฅผ ํ†ตํ•ด ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- OSI ๊ณ„์ธต ๋งํ•˜๊ธฐ(๊ฐ๊ฐ ์•Œ๋ ค์ง„ ์œ ๋ช… ํ”„๋กœํ† ์ฝœ)

๋”๋ณด๊ธฐ

ํ†ต์‹  ์ ‘์†์—์„œ๋ถ€ํ„ฐ ์™„๋ฃŒ๊นŒ์ง€์˜ ๊ณผ์ •์„ 7๋‹จ๊ณ„๋กœ ์ •์˜ํ•œ ๊ตญ์ œ ํ†ต์‹  ํ‘œ์ค€ ๊ทœ์•ฝ

 

๋ฌผ๋ฆฌ : ์ „์†กํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต ( ํ†ต์‹  ์ผ€์ด๋ธ”, ํ—ˆ๋ธŒ )

๋ฐ์ดํ„ฐ๋งํฌ : ์†ก/์ˆ˜์‹  ํ™•์ธ. MAC ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ†ต์‹ ํ•จ ( ๋ธŒ๋ฆฟ์ง€, ์Šค์œ„์น˜ )

๋„คํŠธ์›Œํฌ : ํŒจํ‚ท์„ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ IP๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ( ๋ผ์šฐํŒ… )

์ „์†ก : ๋‘ host ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ๊ณต

์„ธ์…˜ : ํ†ต์‹  ์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ ๋ฐ ์„ค์ •ํ•จ

ํ‘œํ˜„ : ์„ธ์…˜ ๊ณ„์ธต ๊ฐ„์˜ ์ฃผ๊ณ ๋ฐ›๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ผ๊ด€์„ฑ์žˆ๊ฒŒ ์ œ๊ณต

์‘์šฉ : ์‚ฌ์šฉ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค ์ œ๊ณต

์ž๋ฃŒ๊ตฌ์กฐ

- ๋งต vs ํ•ด์‰ฌ๋งต / ๋ฆฌ์ŠคํŠธ vs ๋ฐฐ์—ด(์–ด๋ ˆ์ด) /์Šคํƒ vsํ ์ฐจ์ด

๋”๋ณด๊ธฐ

Map: ํ‚ค(Key)์™€ ๊ฐ’(Value)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ, Map์˜ ํ–‰๋™์„ ์ •์˜ํ•ด๋†“์€ ์ธํ„ฐํŽ˜์ด์Šค

HashMap: Map์˜ ๊ตฌํ˜„์ฒด, put(), get(), containsKey(), remove(), keySet(), size() ๋ฉ”์†Œ๋“œ ์ œ๊ณต

 

์Šคํƒ: LIFO

ํ: FIFO

- ์ •๋ ฌ์ข…๋ฅ˜ , ํ€ต์†ŒํŠธ

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

- DB ์ธ๋ฑ์Šค , ์ธ๋ฑ์Šค ๊ฑฐ๋Š”์ด์œ 

๋”๋ณด๊ธฐ
  • ๊ฒ€์ƒ‰์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰์„ฑ๋Šฅ์„ ์‹ค์งˆ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์ฟผ๋ฆฌ๊ฐ€ index๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์นด๋””๋„๋ฆฌํ‹ฐ, Selectivity ๊ฐ™์€ ์š”์†Œ๋“ค์ด ๊ณ ๋ ค๋œ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•จ
  • ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋น„์šฉ ์ฆ‰, ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ์—ฐ์‚ฐ์‹œ์— ์ธ๋ฑ์Šค๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋จ

- ์ธ๋ฑ์Šค์— ์™œ ํ•ด์‰ฌ ๋ณด๋‹ค B Tree๋ฅผ ์“ฐ๋Š”์ง€

๋”๋ณด๊ธฐ
  • ๋ฃจํŠธ์™€ ๋ฆฌํ”„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์—ฌ ๊ท ํ˜•์ด ์ž˜ ์žกํ˜€ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์•ˆ์ •์  (๋ฐ์ดํ„ฐ ์–‘์ด ์ฆ๊ฐ€ํ•ด๋„ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๊ฐ‘์ž๊ธฐ ์•…ํ™”๋˜๋Š” ์ผ์ด ์—†์Œ)
  • ํŠธ๋ฆฌ์˜ ๊นŠ์ด๋„ 3-4 ์ˆ˜์ค€์œผ๋กœ ์ผ์ •ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์ด๋ถ„ ํƒ์ƒ‰์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ ๋น„์šฉ ์ ˆ๊ฐ ๊ฐ€๋Šฅ
  • ์ง‘์•ฝ ํ•จ์ˆ˜ ๋“ฑ์—์„œ ์š”๊ตฌ๋˜๋Š” ์ •๋ ฌ์„ ํ•˜์ง€ ์•Š์€ ์ฑ„ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ๋“ฑํ˜ธ์™€ ๋ถ€๋“ฑํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ๋ฒ”์œ„ ๊ฒ€์ƒ‰ ๋ถˆ๊ฐ€๋Šฅ)

 

- DB ์ •๊ทœํ™”, ๋น„์ •๊ทœํ™”(์—ญ์ •๊ทœํ™”)

๋”๋ณด๊ธฐ

์ •๊ทœํ™”: ์ค‘๋ณต์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ

- DB ํŠธ๋žœ์žญ์…˜

๋”๋ณด๊ธฐ
  • ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„
  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์€ ์ˆ˜ํ–‰์ค‘์— ํ•œ ์ž‘์—…์ด๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ์ „๋ถ€ ์‹คํŒจํ•˜๊ณ , ๋ชจ๋‘ ์„ฑ๊ณตํ•ด์•ผ ์„ฑ๊ณต์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ํŠธ๋žœ์žญ์…˜ ํŠน์ง• 4๊ฐ€์ง€

๋”๋ณด๊ธฐ

ACID: ํŠธ๋žœ์žญ์…˜์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„ฑ์งˆ

  • Atomicity(์›์ž์„ฑ): ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์€ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์™„๋ฒฝํžˆ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํ•œ ์—ฐ์‚ฐ์ด๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์€ ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Consistency(์ผ๊ด€์„ฑ): ํŠธ๋žœ์žญ์…˜์€ ์œ ํšจํ•œ ์ƒํƒœ๋กœ๋งŒ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Isolation(๊ณ ๋ฆฝ์„ฑ): ํŠธ๋žœ์žญ์…˜์€ ๋™์‹œ์— ์‹คํ–‰๋  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Durability(๋‚ด๊ตฌ์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋œ ์ดํ›„์—๋Š” ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ปค๋ฐ‹๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ)

- DB ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€

๋”๋ณด๊ธฐ

๊ณ ๋ฆฝ๋„์™€ ์„ฑ๋Šฅ์˜ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๋ฅผ ์กฐ์ ˆ

  • READ UNCOMMITTED: ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋‚ด์šฉ๋„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • READ COMMITTED: ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ปค๋ฐ‹๋œ ๋‚ด์šฉ๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • REPEATABLE READ: ํŠธ๋žœ์žญ์…˜์— ์ง„์ž…ํ•˜๊ธฐ ์ด์ „์— ์ปค๋ฐ‹๋œ ๋‚ด์šฉ๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • SERIALIZABLE: ํŠธ๋žœ์žญ์…˜์— ์ง„์ž…ํ•˜๋ฉด ๋ฝ์„ ๊ฑธ์–ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•œ๋‹ค.(์„ฑ๋Šฅ ๋งค์šฐ ๋–จ์–ด์ง)

 

 

์ถœ์ฒ˜

https://gyoogle.dev/blog/

https://github.com/ksundong/backend-interview-question

https://garden1500.tistory.com/m/11

'Job > Interview' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ  (0) 2022.04.14
์šด์˜์ฒด์ œ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ •๋ฆฌ  (0) 2022.04.09

๋Œ“๊ธ€