it's better to check their website as there're more positions there.
Tell us about one of the most interesting technical challenges youโve had to solve. How did you go about it and what was the outcome?
What is the latest technology that you learned, what inspired you to learn it, and how was it useful?
https://github.com/JaeYeopHan/Interview_Question_for_Beginner
immediately-invoked function expression
// IIFE๋ฅผ ์ฌ์ฉํ๋ฉด
// i is not defined๊ฐ ๋ฌ๋ค.
(function() {
// var ๋ณ์๋ ์ฌ๊ธฐ๊น์ง hoisting์ด ๋๋ค.
for(var i=0; i<10; i++) {
console.log('i', i)
}
})()
console.log('after loop i is', i) // ReferenceError: i is not defined
// var i ์ ์ญ๋ณ์ํ ๋จ IIFE
(function() {
for(i=0; i<10; i++) {
console.log('i', i)
}
})()
console.log('after loop i is', i) // after loop i is 10
// 'use strict' i is not defined๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
(function() {
'use strict'
for(i=0; i<10; i++) {
console.log('i', i)
}
})()
console.log('after loop i is', i) // ReferenceError: i is not definedTemporal Dead Zone(TDZ) const์ let์ ๋ฒ์๊ฐ ์ง์ ๋ ๋ณ์๋ฅผ ๊ฐ๋๋ค. ์ด ๋์ ํธ์ด์คํ ์ด ์คํ ๋๊ธฐ์ ๊น์ง ์ก์ธ์ค ํ ์ ์๋ ๊ฒ์ TDZ๋ผ ํ๋ค. ์ฆ, let/const์ ์ธ ๋ณ์๋ ํธ์ด์คํ ๋์ง ์๋ ๊ฒ์ด ์๋๋ค. ์ค์ฝํ์ ์ง์ ํ ๋ ๋ณ์๊ฐ ๋ง๋ค์ด์ง๊ณ TDZ(Temporal Dead Zone)๊ฐ ์์ฑ๋์ง๋ง, ์ฝ๋ ์คํ์ด ๋ณ์๊ฐ ์ค์ ์๋ ์์น์ ๋๋ฌํ ๋๊น์ง ์ก์ธ์คํ ์ ์๋ ๊ฒ์ด๋ค. let/const๋ณ์๊ฐ ์ ์ธ๋ ์์ ์์ ์ ์ดํ๋ฆ์ TDZ๋ฅผ ๋ ๋ ์ํ๊ฐ ๋๋ฉฐ, ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
NodeJS๋ ํฌ๋กฌ V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JS Runtime Node.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ API๋ ๋ชจ๋ ๋น๋๊ธฐ ๋จ์ผ ์ฐ๋ ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ , ์ด๋ฒคํธ ๋ฉ์ปค๋์ฆ์ ํตํด ์๋ฒ๊ฐ ๋ฉ์ถ์ง ์๊ณ ๋ฐ์ํ ์ ์์ด ํ์ฅ์ฑ์ ํค์์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ Chrome์ V8 JavaScript ์์ง์ ์ฌ์ฉํ์ฌ ๋น ๋ฅธ ์ฝ๋ ์คํ์ ์ ๊ณตํ๋ฉฐ, ๋ฒํผ๋ง์ด ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ค๋ฃจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์ฑ๊ธํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA), ์ ์ถ๋ ฅ์ด ์ฆ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ๋ฐ์ด๋ ํจ์จ์ฑ์ ๋ฐํํฉ๋๋ค. ์ฑ๊ธ ์ฐ๋ ๋ ๋ชจ๋ธ์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ์์ ์์ฒด๊ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ฉด ์ ์ฒด ์์คํ ์ ์ฑ๋ฅ์ด ์์ฃผ ๊ธ๊ฒฉํ๊ฒ ๋๋น ์ง๋ฏ๋ก CPU ์ฌ์ฉ๋ฅ ์ด ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ Node.js ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
foreach()์ map()ํจ์์ ์ฐจ์ด์ .foreach() ๊ฐ์ ๋ฐํ ํ์ง ์๋๋ค. ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ์ ์คํํฉ๋๋ค.(ํ์ฌ ๋ฐฐ์ด์ ๋ณ๊ฒฝํด์ ๋ฐํ)
.map() ๊ฐ์ ๋ฐํ ํ๋ค. ๊ฐ ์์์์ ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฒฐ๊ณผ๋ก ์ ๋ฐฐ์ด์ ์์ฑํ์ฌ ๊ฐ ์์๋ฅผ ์ ์์์ ๋งคํํฉ๋๋ค.
Speed = $.each < map < filter < forEach < reduce < for loop
Closure
A closure is the combination of a function and the lexical environment within which that function was declared.
ํด๋ก์ ๋ ํจ์์ ๊ทธ ํจ์๊ฐ ์ ์ธ๋์ ๋์ ๋ ์์ปฌ ํ๊ฒฝ(Lexical environment)๊ณผ์ ์กฐํฉ์ด๋ค. -MDN-
์ ์ ์์์ ๋งํ๋ โํจ์โ ๋ ๋ฐํ๋ ๋ด๋ถํจ์๋ฅผ ์๋ฏธํ๊ณ โ๊ทธ ํจ์๊ฐ ์ ์ธ๋ ๋์ ๋ ์์ปฌ ํ๊ฒฝ(Lexical environment)โ๋ ๋ด๋ถ ํจ์๊ฐ ์ ์ธ๋์ ๋์ ์ค์ฝํ๋ฅผ ์๋ฏธํ๋ค.
์ฆ, ํด๋ก์ ๋ ๋ฐํ๋ ๋ด๋ถํจ์๊ฐ ์์ ์ด ์ ์ธ๋์ ๋์ ํ๊ฒฝ(Lexical environment)์ธ ์ค์ฝํ๋ฅผ ๊ธฐ์ตํ์ฌ ์์ ์ด ์ ์ธ๋์ ๋์ ํ๊ฒฝ(์ค์ฝํ) ๋ฐ์์ ํธ์ถ๋์ด๋ ๊ทธ ํ๊ฒฝ(์ค์ฝํ)์ ์ ๊ทผํ ์ ์๋ ํจ์๋ฅผ ๋งํ๋ค.
-
Virtual DOM์ ๋ฌด์์ธ๊ฐ์? Virtual DOM is replication of HTML DOM Elements in the memory. When Component is re rendered, Virtual DOM์ ์ ํ๋ฆฌ์ผ์ด์ ์ UI๋ฅผ ๊ตฌ์ฑํ๋ HTML ์๋ฆฌ๋จผํธ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ๊ตฌํํ ๊ฒ์ ๋๋ค. ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋ ๋, virtual DOM์ ์ ๋ฐ์ดํธํ ์์์ ๋ชฉ๋ก์ ๋ง๋ค๊ธฐ ์ํด ๊ธฐ์กด์ DOM ๋ชจ๋ธ์์ ๋ณ๊ฒฝ๋๋ ์ฌํญ์ ๋น๊ตํฉ๋๋ค. DOM ์ ์ฒด๋ฅผ ๋ค์ ๋ ๋๋งํ ํ์ ์์ด ์ค์ DOM์ ํ์ํ ์ต์ํ๋ง ๋ณ๊ฒฝํ์ฌ ํจ์จ์ฑ์ด ๋๋ค๋ ๊ฒ์ด ํฐ ์ฅ์ ์ ๋๋ค.
-
JSX๋ ๋ฌด์์ธ๊ฐ์? JSX๋ HTML์ฒ๋ผ ๋ณด์ด๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ํ์ฅ์ ๋๋ค. JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์ ํธ์ถ ๋ฐฉ์์ผ๋ก ์ปดํ์ผ๋์ด ์ปดํฌ๋ํธ์ ๋ํ ๋งํฌ์ ์ ๋ง๋ค ์ ์๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
-
ํด๋์ค ์ปดํฌ๋ํธ์ ํจ์ํ ์ปดํฌ๋ํธ์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์? React 16.8(hooks ๋์ ) ์ด์ ์๋ ๋ด๋ถ state๋ฅผ ์ ์งํ๋ ๋ฐ ํ์ํ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋(lifecycle methods)(์ฆ, componentDidMount ๋ฐ shouldComponentUpdate)๋ฅผ ํ์ฉํ๊ธฐ ์ํด ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ๋ ๋ฆฌ์กํธ์ Component ํด๋์ค๋ฅผ ํ์ฅํ๋ ES6 ํด๋์ค์ ๋๋ค. ๋ํ ์ต์ํ render() ๋ฉ์๋๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
-
key๋ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์? ๋ฆฌ์กํธ์์ collection์ ๋ ๋๋งํ ๋ ์๋ฆฌ๋จผํธ์ ๋ฐ์ดํฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ถ์ ํ๊ธฐ ์ฝ๋๋ก ๋ฐ๋ณต๋๋ ๊ฐ ์๋ฆฌ๋จผํธ์ key๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํค๋ ๊ณ ์ ํ ID(์ด์์ ์ผ๋ก๋ UUID ๋๋ ๊ธฐํ ๊ณ ์ ๋ฌธ์์ด)๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง, ๋ง์ง๋ง ์๋จ์ผ๋ก Array index๊ฐ ๋ ์ ์์ต๋๋ค.
-
state์ props์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์? props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋๋ ๋ฐ์ดํฐ์ ๋๋ค. props๋ ์์ ๋ ์ ์์ผ๋ฉฐ ํ์๋๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ ๊ณ์ฐํ๋๋ฐ๋ง ์ฌ์ฉ๋ฉ๋๋ค. state๋ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ ๋์ ์์ ๋ ์ ์๋ ๋ด๋ถ ๋ฐ์ดํฐ๋ก, ๋ค์ ๋ ๋๋งํด๋ ์ ์ง๋ฉ๋๋ค.
-
์ state๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ setState๋ฅผ ์ด์ฉํ๋์? ๋ง์ฝ ์ปดํฌ๋ํธ์ state๋ฅผ ์ง์ ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ๋ค๋ฉด, ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํด์ผ ํ๋์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. setState() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ์ UI๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
-
React context๋ ๋ฌด์์ธ๊ฐ์? ๋ฆฌ์กํธ๋ ํ๋์ ์ฑ ์์์ ๋ณต์์ ์ปดํฌ๋ํธ๋ค์ด state๋ฅผ ๊ณต์ ํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด context API๋ฅผ ์ ๊ณตํฉ๋๋ค. context๊ฐ ๋์ ๋๊ธฐ ์ ์๋ Redex์ ๊ฐ์ ๋ณ๋์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ ์ผํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ (ํนํ ์์ ์ฑ์์) Redux๊ฐ ๋ถํ์ํ ๋ณต์ก์ฑ์ ์ ๋ฐํ๋ค๊ณ ๋๊ผ์ต๋๋ค.
-
Redux๋ ๋ฌด์์ธ๊ฐ์? Redux๋ React๋ฅผ ์ํ ์จ๋ํํฐ state ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, context API๊ฐ ๊ฐ๋ฐ๋๊ธฐ ์ ๋ถํฐ ์กด์ฌํ์ต๋๋ค. Redux๋ store๋ผ๊ณ ๋ถ๋ฆฌ๋ state ์ปจํ ์ด๋์ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋๋ฐ, store ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ๋ฅผ props๋ก ๋ฐ์ ์ ์์ต๋๋ค. store๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ reducer๋ฅผ ํตํด ์ ๋ฌ๋๋ store์ action์ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค. reducer๋ action๊ณผ ํ์ฌ์ state๋ฅผ ๋ฐ๊ณ , ์๋ก์ด state๋ฅผ ๋ฐํ(return)ํ๊ณ , ๊ตฌ๋ ๋(subscribed) ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๊ฒ ๋ง๋ญ๋๋ค.
-
React ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ผ๋ง(styling)ํ๋ ๋ณดํธ์ ์ธ ๋ฐฉ์์ ๋ฌด์์ธ๊ฐ์? ์ธ๋ผ์ธ ์คํ์ผ๋ง(Inline styling) : ํ๋กํ ํ์ ์ ๋ง๋ค ๋ ํ๋ฅญํ์ง๋ง ํ๊ณ๊ฐ ๋ง์ต๋๋ค (์๋ก, pseudo-classes๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค) ํด๋์ค ๊ธฐ๋ฐ CSS ์คํ์ผ : ์ธ๋ผ์ธ ์คํ์ผ๋ง๋ณด๋ค ์ ์ฉํ๊ณ React์ ์ต์ํ์ง ์์ ๊ฐ๋ฐ์๋ค๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. CSS in JS ์คํ์ผ๋ง : ์ปดํฌ๋ํธ ์์์ ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ ์ธํ์ฌ ์คํ์ผ๋งํ ์ ์๊ฒ ํด์ฃผ๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
-
์ ์ด ์ปดํฌ๋ํธ์ ๋น์ ์ด ์ปดํฌ๋ํธ์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์? HTML ๋ฌธ์์์ ๋ง์ form ์๋ฆฌ๋จผํธ๋ค(, <textarea>, ๋ฑ)์ ๊ณ ์ ํ state๋ฅผ ์ ์งํฉ๋๋ค. ๋น์ ์ด ์ปดํฌ๋ํธ๋ DOM์ ์ด๋ฌํ input๋ค์ state์ ๋ํ ์ง์ง ๊ทผ์(source of truth for the state of these inputs)์ผ๋ก ์ทจ๊ธํฉ๋๋ค. ์ ์ด ์ปดํฌ๋ํธ์์ ๋ด๋ถ state๋ ์๋ฆฌ๋จผํธ์ ๊ฐ(value)๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. input์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ฆฌ์กํธ๋ input์ ๋ค์ ๋ ๋๋งํฉ๋๋ค. ๋น์ ์ด ์ปดํฌ๋ํธ๋ non-React ์ฝ๋์ ํฉ์น ๋(์๋ฅผ ๋ค์ด jQuery ํ๋ฌ๊ทธ์ธ์ ์ผ๋ถ๋ฅผ ์ง์ํด์ผ ํ ๋) ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
-
์๋ช ์ฃผ๊ธฐ(lifecycle) ๋ฉ์๋๋ ๋ฌด์์ธ๊ฐ์? ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ๋ ๊ทธ๋ค์ด mount(DOM์ ๋ ๋๋ง)๋์์ ๋, unmount๋ ๋ ๋ฑ๊ณผ ๊ฐ์ด ๊ทธ๋ค์ ์๋ช ์ฃผ๊ธฐ ์ค ํน์ ํ ์์ ์ ํธ์ถ๋๋ ํน๋ณํ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ์ด๋ ์๋ฅผ ๋ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ํ์๋ก ํ๋ ๊ฒ์ ์ ํ ๋ฐ ํด์ ํ๊ฑฐ๋, ํ์ด๋จธ๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ์ ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์๋์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ค์ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
React hooks๋ ๋ฌด์์ธ๊ฐ์? Hooks๋ ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ์ ์ฅ์ (์๋ฅผ ๋ค๋ฉด ๋ด๋ถ state์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋)์ ํจ์ํ ์ปดํฌ๋ํธ๋ก ๊ฐ์ ธ์ค๋ ค๋ ๋ฆฌ์กํธ์ ์๋์ ๋๋ค.
-
React hooks์ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ์? ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ, lifecycle hooks, this์ ํ์์ฑ์ด ์ฌ๋ผ์ง๋๋ค ๊ณตํต ๊ธฐ๋ฅ์ ์ปค์คํ hook๋ก ๋ง๋ค์ด์ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ฌ์์ง๋๋ค. ์ปดํฌ๋ํธ ์์ฒด์์ ๋ก์ง์ ๋ถ๋ฆฌํ ์ ์์ด์ ์ฝ๊ธฐ ์ฝ๊ณ ํ ์คํธํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.