Jieunny์˜ ๋ธ”๋กœ๊ทธ

Section 4. [๊ธฐ์ˆ  ๋ฉด์ ‘] ๋ณธ๋ฌธ

CodeStates/learning contents

Section 4. [๊ธฐ์ˆ  ๋ฉด์ ‘]

Jieunny 2023. 4. 10. 12:00

๐Ÿ“Œ JavaScript

Q. Hoisting๊ณผ Temporal Dead Zone์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜์„ธ์š”.

A. ํ˜ธ์ด์ŠคํŒ…์€ var, let, const, funtion, class ํ‚ค์›Œ๋“œ ๋“ฑ์„ ์‚ฌ์šฉํ•ด ์„ ์–ธํ•˜๋Š” ์‹๋ณ„์ž๋“ค์ด ์ฝ”๋“œ์˜ ๋งจ ์œ„๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

let, const์™€ var์˜ ํ˜ธ์ด์ŠคํŒ… ๋ฐฉ์‹์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ, var์˜ ๊ฒฝ์šฐ ์„ ์–ธ ๋‹จ๊ณ„์™€ ํ•จ๊ป˜ undefined๋กœ ์ดˆ๊ธฐํ™” ๋˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๋งŒ๋‚˜๊ธฐ ์ „๋ถ€ํ„ฐ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— let, const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ฝ”ํ”„์—๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋“ฑ๋ก๋˜์ง€๋งŒ, ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ ์ฝ”๋“œ์— ๋„๋‹ฌํ•˜๊ธฐ ์ด์ „์— ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ฐธ์กฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์Šค์ฝ”ํ”„์˜ ์‹œ์ž‘ ์ง€์ ๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™” ์‹œ์ž‘ ์ง€์ ๊นŒ์ง€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ Temporal Dead Zone ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

let๊ณผ const๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์€ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋ฅผ ๋งŒ๋‚˜๊ธฐ ์ „์—๋Š” ์ฐธ์กฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€์ธ TDZ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง

Q. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง '๋ฐฉ์‹'์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

A. ๋ธŒ๋ผ์šฐ์ €๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋ Œ๋”๋ง ํ•ฉ๋‹ˆ๋‹ค. 

์ฒซ๋ฒˆ์งธ๋Š” Sever Side Rendering, ๋‘๋ฒˆ์งธ๋Š” Client Side Rendering ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค.

SSR์€ ์„œ๋ฒ„ ์ชฝ์—์„œ ๋ Œ๋”๋ง ์ค€๋น„๋ฅผ ๋งˆ์นœ ์ƒํƒœ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ์š”์ฒญ์‹œ๋งˆ๋‹ค ์ƒˆ๋กœ๊ณ ์นจ ํ•ด์•ผํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

CSR์€ ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ HTML๊ณผ JS๋ฅผ ๋ณด๋‚ด์ฃผ๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ ๋˜๊ณ  ๋ Œ๋”๋ง์ด ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Q. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง '๊ณผ์ •'์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

A. ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML, CSS, JS ๊ฐ™์€ ์›น์‚ฌ์ดํŠธ์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋ Œ๋”๋ง ์—”์ง„์€ ์ „๋‹ฌ๋ฐ›์€ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ DOM Tree๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , CSS ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํฌํ•จ๋œ ์Šคํƒ€์ผ ์š”์†Œ๋ฅผ ํŒŒ์‹ฑํ•ด CSSOM Tree๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

DOM Tree ์™€ CSSOM Tree๋ฅผ ๊ฒฐํ•ฉํ•ด Render Tree๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , ๋ ˆ์ด์•„์›ƒ ๊ณผ์ •์„ ๊ฑฐ์ณ ๊ฐ ์š”์†Œ๋ฅผ ์–ด๋””์— ๋ฐฐ์น˜ํ•  ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ์ด์•„์›ƒ ๊ณผ์ •์ด ๋๋‚˜๋ฉด Render Tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์†Œ๋“ค์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” Paint ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

 

Q. ๋ฆฌํ”Œ๋กœ์šฐ์™€ ๋ฆฌํŽ˜์ธํŠธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

A. ์›น ์ธํ„ฐ๋ž™์…˜์œผ๋กœ ์ธํ•ด ๋ Œ๋”๋ง ๊ณผ์ •์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ฐ˜๋ณตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฆฌํ”Œ๋กœ์šฐ, ํŽ˜์ธํŠธ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฆฌํŽ˜์ธํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Q. ๋ฐ˜์‘ํ˜• ์›น์€ ๋ฌด์—‡์ด๊ณ  ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

A. ๋ฐ˜์‘ํ˜• ์›น์ด๋ž€ PC, ์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ ๋“ฑ ์ ‘์†ํ•˜๋Š” ๋””์Šคํ”Œ๋ ˆ์ด์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํ™”๋ฉด์˜ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ๋ณ€ํ•˜๋„๋ก ๋งŒ๋“  ํ•˜๋‚˜์˜ ์›น ์‚ฌ์ดํŠธ ์ž…๋‹ˆ๋‹ค. 

์žฅ์ ์œผ๋กœ๋Š” ํ•˜๋‚˜์˜ URL์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”์— ์œ ๋ฆฌํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์›นํŽ˜์ด์ง€๋กœ ์šด์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ ์œผ๋กœ๋Š” ๋””์ž์ธ์˜ ์ž์œ ๋„๊ฐ€ ๋–จ์–ด์ง€๋ฉฐ 100% ๋งž์ถค ๋””์ž์ธ์ด ์–ด๋ ต๊ณ , ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ๊ณ  ๋ ˆ์ด์•„์›ƒ์ด ๋ณต์žกํ•  ์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Q. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ฝœ ์Šคํƒ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

A. ์ฝœ ์Šคํƒ์ด๋ž€ ์—”์ง„์ด ๊ตฌ๋™๋˜๋ฉด์„œ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ๊ธฐ๋กํ•˜๋Š” ์Šคํƒ์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ฝœ ์Šคํƒ์— ์ถ”๊ฐ€๋˜๊ณ  ์‹คํ–‰์ด ๋๋‚˜๋ฉด ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๋ฒˆ๋“ค๋ง๊ณผ ์›นํŒฉ

Q. ๋ฒˆ๋“ค๋ง์€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

A. ๋ฒˆ๋“ค๋ง์€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ๋ฌถ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

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

๋Œ€ํ‘œ์ ์œผ๋กœ ์›นํŒฉ์ด ์กด์žฌํ•˜๋ฉฐ, ์›นํŒฉ์€ ๋ฐฐํฌํ•˜๊ธฐ ์ „ ๋ฒˆ๋“ค๋ง ํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ ์ž…๋‹ˆ๋‹ค.

 

๐Ÿ“Œ React

Q. Virtual DOM์ด ๋ฌด์—‡์ด๊ณ , Virtual DOM์ด ์–ด๋–ค ๋ฉด์—์„œ ์ข‹์€๊ฐ€์š”?

A. virtual DOM์€ React์— ์žˆ๋Š” ๊ฐ€์ƒ์˜ DOM ๊ฐ์ฒด๋กœ, ์‹ค์ œ DOM์˜ ์‚ฌ๋ณธ ๊ฐ™์€ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ๋Š” ์‹ค์ œ DOM์— ์ ‘๊ทผํ•ด์„œ ์กฐ์ž‘ํ•˜๋Š” ๋Œ€์‹  ๊ฐ€์ƒ์˜ DOM ๊ฐ์ฒด์— ์ ‘๊ทผํ•ด์„œ ๋ณ€ํ™” ์ „๊ณผ ํ›„๋ฅผ ๋น„๊ตํ•˜๊ณ  ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์‹ค์ œ DOM์ฒ˜๋Ÿผ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๊ณ , ๋น„์šฉ๋„ ์ ๊ฒŒ ๋“ญ๋‹ˆ๋‹ค.

 

Q. Class Component์™€ Function Component์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

A. ์„ ์–ธ ๋ฐฉ์‹์˜ ์ฐจ์ด, ๊ธฐ๋Šฅ์  ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋Š” class ํ‚ค์›Œ๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋ฉฐ Component๋กœ ์ƒ์†๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ render() ๋ฉ”์†Œ๋“œ๊ฐ€ ๋งŒ๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜ ์ฒ˜์—„ ์„ ์–ธ์ด ๋งค์šฐ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ณด๋‹ค ๋” ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

(๋ฐ‘์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ •๋ฆฌํ•ด์•ผ ์ž˜ ๋‹ต๋ณ€ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค..)

https://heeeming.tistory.com/entry/React-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%98%95-vs-%ED%95%A8%EC%88%98%ED%98%95-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8-%EC%B0%A8%EC%9D%B4-class-vs-function-component

 

Q. React Hook์˜ ์‚ฌ์šฉ ๊ทœ์น™์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

A. ์ฒซ๋ฒˆ์งธ๋กœ, ๋ฆฌ์•กํŠธ ํ›…์€ ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜์˜ ์ตœ์ƒ์œ„์—์„œ๋งŒ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” ํ›…์„ ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•ด๋†“๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. 

๋‘๋ฒˆ์งธ๋กœ, ๋ฆฌ์•กํŠธ ํ›…์€ ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ›…์€ ๋ฆฌ์•กํŠธ์˜ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ๋ฉ”์†Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌด์— ๊ทผ๋ณธ์ ์œผ๋กœ ์ผ๋ฐ˜ jsํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ ์šด์˜์ฒด์ œ

์ด ๋ถ€๋ถ„์€ ๋” ์ค€๋น„๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

Q. Node.js๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ธ๊ฐ€์š”?

A. node.js ์ž์ฒด๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ๋งŒ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๊ณ , ์ด ๋•Œ์˜ ์ž‘์—… ๋™์‹œ์„ฑ์€ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” call stack์ด ๋‹ค ๋น„์›Œ์ง€๋ฉด callback queue์— ์กด์žฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ call stack์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

Q. JavaScript๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋น„๋™๊ธฐ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

A. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„์—์„œ๋Š” ๋น„๋™๊ธฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ๊ตฌ๋™ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ(๋ธŒ๋ผ์šฐ์ €, Node.js)์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•  ๋ฟ, ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์Šค์ผ€์ค„ํ•ด์ฃผ๊ณ  ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

Q. Event Loop์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

A. JavaScript๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋Œ์•„๊ฐ€์ง€๋งŒ ์‹ค์ œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ตฌ๋™๋˜๋Š” ํ™˜๊ฒฝ(๋ธŒ๋ผ์šฐ์ €, Node.js๋“ฑ)์—์„œ๋Š” ์ฃผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ์žฅ์น˜๊ฐ€ ์ด๋ฒคํŠธ ๋ฃจํ”„์ž…๋‹ˆ๋‹ค. 

JavaScript event loop๋Š” call stack์ด ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ, task queue์—์„œ ๋Œ€๊ธฐํ•˜๋˜ callback์„ call stack์œผ๋กœ ์˜ฎ๊ฒจ์„œ callback์„ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

Q. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๊ฐ€์ง„ ์–ธ์–ด์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

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

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์–ธ์–ด์—๋Š” ์ž๋ฐ”, C#, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ ์ž๋ฃŒ๊ตฌ์กฐ

Q. Stack๊ณผ Queue์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A. ์Šคํƒ์€ top ํ•œ ๊ณณ์—์„œ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด ์ง€๋ฉฐ ํ›„์ž…์„ ์ถœ๋กœ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

ํ๋Š” ์ž‘์—… ๊ตฌ์—ญ์ด ํ•œ ๊ณณ์ธ ์Šคํƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํ•œ์ชฝ ๋์—์„œ ์‚ฝ์ž…, ๋‹ค๋ฅธ ์ชฝ ๋์—์„œ ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ํ›„์ž…์„ ์ถœ์ด ์•„๋‹Œ ์„ ์ž…์„ ์ถœ๋กœ ๊ฐ€์žฅ ๋จผ์ € ์‚ฝ์ž…๋œ ์ž๋ฃŒ๊ฐ€ ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

 

Q. Tree์™€ Graph์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A. ๊ทธ๋ž˜ํ”„๋Š” ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์™€ ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์ˆœํ™˜ ํ˜น์€ ๋น„์ˆœํ™˜ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ์ˆœํ™˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ทธ๋ž˜ํ”„๋Š” ๋ฃจํ”„ ๊ฐœ๋…์ด ์—†์œผ๋ฉฐ ํŠธ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ํŠธ๋ฆฌ๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ, ๊ทธ๋ž˜ํ”„๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

Q. ์ด์ง„ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

A. ์ด์ง„ ํƒ์ƒ‰์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด์—์„œ ํŠน์ •ํ•œ ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์— ์žˆ๋Š” ์ž„์˜์˜ ๊ฐ’์„ ์„ ํƒํ•ด์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•˜๊ณ , ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ด ํฌ๋ฉด ์šฐ์ธก ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ, ์ž‘์œผ๋ฉด ์ขŒ์ธก ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋‹ค์‹œ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

๋งค๋ฒˆ ํƒ์ƒ‰ ๋Œ€์ƒ์„ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์—ฌ๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฐ’์„ ํƒ์ƒ‰ํ•ด ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋น ๋ฅด๋ฉฐ, O(logN)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.