πŸ’»κΈ°μˆ /JavaScript

μ‹ μž… 개발자λ₯Ό μœ„ν•œ JavaScript 기초 λ©΄μ ‘μ§ˆλ¬Έ (2024λ…„)

DipokalHHJ 2024. 2. 28. 18:16
λ°˜μ‘ν˜•

 

 μ‹ μž… 개발자 취업을 ν•˜λ‹€ 보면 기초 지식에 λŒ€ν•œ μ§ˆλ¬Έμ„ 받기도 ν•©λ‹ˆλ‹€. μ•„λž˜ λ©΄μ ‘ μ§ˆλ¬Έμ€ 정말 자주 λ‚˜μ˜€λŠ” μœ ν˜•μ΄κΈ°λ„ ν•˜κ³  기초라고 ν•˜κΈ°μ—” κ³ κΈ‰ μ§ˆλ¬Έλ„ μ„žμ—¬μžˆκΈ° λ•Œλ¬Έμ— κ°œλ…μ μΈ μΈ‘λ©΄μ—μ„œλ„ 증λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ μ•„λž˜ μ§ˆλ¬Έμ— λŒ€ν•΄ λ§‰νž˜μ—†μ΄ μ„œμˆ μ΄ κ°€λŠ₯ν•˜λ‹€λ©΄ 적어도 면접은 μΆ©λΆ„νžˆ 톡과할 거라 λ―ΏμŠ΅λ‹ˆλ‹€. 

 

 κ·ΈλŸ¬λ‚˜ μš”μƒˆλŠ” ν”„λ‘œμ νŠΈ μžμ²΄μ— λŒ€ν•œ 질문이 λ§Žμ•„μ§€λŠ” μΆ”μ„Έμž…λ‹ˆλ‹€. 면접관이 κΉƒν—ˆλΈŒ 레포λ₯Ό ν•˜λ‚˜ν•˜λ‚˜ λ“€μ—¬λ‹€λ³΄λ©΄μ„œ 기술적 κ°œλ…μ— λŒ€ν•΄ λ¬Όμ–΄λ³΄κ²Œ λ©λ‹ˆλ‹€. μžμ‹ μ΄ μ–΄λ–€ κΈ°μˆ μ„ μ“°κ³  μžˆλŠλƒμ— 따라 닡변이 λ‹¬λΌμ§€λ‹ˆ μ‚¬μš©ν•œ κΈ°μˆ μ— λŒ€ν•΄ μ€€λΉ„ν•˜μ‹œλŠ”κ±Έ ꢌμž₯λ“œλ¦½λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ μ•„λž˜ λ‚˜μ™€μžˆλŠ” μ§ˆλ¬Έμ„ μ’…μ’… λ¬Όμ–΄λ³΄μ‹œκΈ° λ•Œλ¬Έμ— μ•Œμ•„λ‘μ‹œλ©΄ λ©΄μ ‘ν•˜λŠ” 데 μžˆμ–΄ μœ λ¦¬ν•˜κ²Œ μž‘μš©ν•˜μ‹€ κ²λ‹ˆλ‹€. 이 ν¬μŠ€νŠΈμ—μ„œλŠ” μ‹ μž… ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ 기초 λ©΄μ ‘μ§ˆλ¬Έμ— λŒ€ν•΄ μ•Œμ•„λ΄…λ‹ˆλ‹€.

 

 

 

I. 기초 λ©΄μ ‘ 질문

  1. μžλ°”μŠ€ν¬λ¦½νŠΈ μ–Έμ–΄κ°€ λ‹€λ₯Έ 언어와 λ‹€λ₯Έ νŠΉμ§•μ„ 3κ°€μ§€ μ„œμˆ ν•˜μ„Έμš”.
  2. λ³€μˆ˜μ— λŒ€ν•΄ μ„€λͺ…ν•˜κ³  let, const의 차이점을 μ„œμˆ ν•˜μ„Έμš”.
  3. ν˜Έμ΄μŠ€νŒ… κ°œλ…μ— λŒ€ν•΄ κ°„λž΅ν•˜κ²Œ μ„œμˆ ν•˜μ„Έμš”.
  4. ν΄λ‘œμ € κ°œλ…μ— λŒ€ν•΄ μ„œμˆ ν•˜μ„Έμš”.
  5. ==κ³Ό ===의 차이점을 μ„œμˆ ν•˜μ„Έμš”.
  6. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 비동기 처리 방법에 λŒ€ν•΄ λ§μ”€ν•΄μ£Όμ„Έμš”.
  7. ν”„λ‘œν† νƒ€μž…μ— λŒ€ν•΄ μ„œμˆ ν•˜μ„Έμš”.
  8. this ν‚€μ›Œλ“œμ˜ μž‘λ™ 방식에 λŒ€ν•΄ μ„œμˆ ν•˜κ³  this의 적용 λ²”μœ„μ— λŒ€ν•΄ 말씀해 μ£Όμ„Έμš”.
  9. μŠ€μ½”ν”„μ— λŒ€ν•΄ μ„€λͺ…ν•˜μ„Έμš”.
  10. μ½œλ°±μ§€μ˜₯에 λΉ μ§€μ§€ μ•ŠκΈ° μœ„ν•΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λŠ”μ§€ μ„œμˆ ν•˜μ„Έμš”.
  11. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ 엄격λͺ¨λ“œκ°€ ν•˜λŠ” 역할을 μ„œμˆ ν•˜μ„Έμš”.
  12. 심볼 νƒ€μž…μ— λŒ€ν•΄ μ„œμˆ ν•˜μ„Έμš”.
  13. μ›Ή μ›Œμ»€μ™€ μ„œλΉ„μŠ€ μ›Œμ»€μ˜ μž₯점과 단점에 λŒ€ν•΄ λ§ν•΄μ£Όμ„Έμš”.
  14. λ°μ½”λ ˆμ΄ν„° νŒ¨ν„΄μ— λŒ€ν•΄ μ„œμˆ ν•˜μ„Έμš”.
  15. var λ³€μˆ˜ νƒ€μž…μ„ μ§€μ–‘ν•΄μ•Ό ν•˜λŠ” 이유λ₯Ό λ§ν•΄μ£Όμ„Έμš”.
  16. 동기와 비동기에 λŒ€ν•΄ λ§ν•΄μ£Όμ„Έμš”.
  17. 이벀트 루프에 λŒ€ν•΄ μ„€λͺ…ν•˜μ„Έμš”.

 


 

 

II. λ‹΅λ³€

1. λ¨Όμ € 동적 νƒ€μž… μ‹œμŠ€ν…œμ„ κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. 이에 따라 number 값이라도 string νƒ€μž…μ˜ λ³€μˆ˜μ— ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμœΌλ‘œ ν”„λ‘œν† νƒ€μž… 기반의 상속 체계λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 클래슀 방식보닀 κ°„νŽΈν•˜κ³  μœ μ—°ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ„λ‘ λ•μŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•©λ‹ˆλ‹€. ES6의 async/awaitλ₯Ό 톡해 κ°„νŽΈν•˜κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

2. λ³€μˆ˜λŠ” 값을 μ €μž₯ν•˜κ³  뢈러였기 μœ„ν•œ μš”μ†Œμž…λ‹ˆλ‹€. letκ³Ό const의 차이점은 λ³€μˆ˜ μž¬ν• λ‹Ή 여뢀에 μžˆμŠ΅λ‹ˆλ‹€. let은 μž¬ν• λ‹Ήμ΄ κ°€λŠ₯ν•˜κ³  constλŠ” λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

 

3. ν˜Έμ΄μŠ€νŒ…μ€ λ³€μˆ˜λ‚˜ ν•¨μˆ˜κ°€ μŠ€μ½”ν”„μ˜ μƒλ‹ΉμœΌλ‘œ λŒμ–΄μ˜¬λ €μ§€λŠ” ν˜„μƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. 즉, μ–΄λŠ λ²”μœ„μ—μ„œλ“  접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

4. ν΄λ‘œμ €λŠ” 내뢀에 μžˆλŠ” ν•¨μˆ˜κ°€ μ™ΈλΆ€ ν•¨μˆ˜μ˜ μ»¨ν…μŠ€νŠΈμ— μ ‘κ·Όν•  수 μžˆλŠ” 것을 λœ»ν•©λ‹ˆλ‹€. ν•¨μˆ˜κ°€ 선언될 λ•Œ λ§Œλ“€μ–΄μ§€λ©° ν•¨μˆ˜λ‚˜ λ³€μˆ˜μ˜ μ ‘κ·Ό λ²”μœ„λ₯Ό μ œν•œν•˜κ³  μ½”λ“œλ₯Ό λͺ¨λ“ˆν™” ν•˜μ—¬ κΆκ·Ήμ μœΌλ‘œλŠ” λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό λ°©μ§€ν•˜λŠ” 데에도 도움이 λ©λ‹ˆλ‹€.

 

5. ==λŠ” 두 값이 λ™λ“±ν•œ μ§€λ₯Ό λœ»ν•©λ‹ˆλ‹€. "1" == 1 은 참이 λ©λ‹ˆλ‹€. ===λŠ” 두 값이 μΌμΉ˜ν•œ μ§€λ₯Ό λœ»ν•©λ‹ˆλ‹€. "1" === 1λŠ” 거짓이 되고 1 === 1은 참이 λ©λ‹ˆλ‹€. ===λŠ” νƒ€μž…μ²΄ν¬λ₯Ό ν•œλ‹€λŠ” μ μ—μ„œ λ³΄μ•ˆ μœ μ§€μ— 도움이 λ©λ‹ˆλ‹€.

 

6. μ—¬λŸ¬ κ°€μ§€ 방법이 μžˆμ§€λ§Œ λŒ€ν‘œμ μœΌλ‘œ ν”„λ‘œλ―ΈμŠ€μ™€ async/awaitκ°€ 주둜 μ“°μž…λ‹ˆλ‹€. 

 

7. ν”„λ‘œν† νƒ€μž…μ€ 상속을 κ΅¬ν˜„ν•˜λŠ”λ° μ€‘μš”ν•œ κ°œλ…μž…λ‹ˆλ‹€. λͺ¨λ“  κ°μ²΄λŠ” ν”„λ‘œν† νƒ€μž…μ„ κ°€μ§€κ³  μžˆλŠ”λ°, 이 경우 객체 κ°„ 상속을 κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

8. thisλŠ” ν˜„μž¬ μ‹€ν–‰ 쀑인 μ½”λ“œμ—μ„œ 객체λ₯Ό λΆˆλŸ¬μ˜€λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— 따라 λ™μ μœΌλ‘œ κ²°μ •λ˜κ³ , ν•¨μˆ˜κ°€ μ–΄λ–»κ²Œ ν˜ΈμΆœλ˜λŠ”μ§€μ— 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. 일반적으둜 thisλŠ” μ „μ—­ 객체λ₯Ό κ°€λ₯΄ν‚€μ§€λ§Œ, .call(), .bind() 을 톡해 thisλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

9. μŠ€μ½”ν”„λŠ” λ³€μˆ˜μ™€ ν•¨μˆ˜μ˜ 유효 λ²”μœ„λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν•œ ν•¨μˆ˜μ—μ„œ λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜μ§€ λͺ»ν•˜κ²Œ λ°©μ§€ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

 

10. 비동기 처리 방식을 μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

11. 엄격λͺ¨λ“œλŠ” μ˜λ„ν•˜μ§€ μ•Šμ€ μ „μ—­λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” κ±Έ λ°©μ§€ν•˜κ³ , eval ν•¨μˆ˜μ˜ μ œν•œμ„ 톡해 취약점 곡격을 사전에 λ°©μ–΄ν•©λ‹ˆλ‹€. 엄격λͺ¨λ“œλŠ” ν•¨μˆ˜μ˜ 첫 쀄 λ˜λŠ” μ½”λ“œμ˜ 첫 쀄에 "use strict";으둜 μ„ μ–Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

12. ES6μ—μ„œ μΆ”κ°€λœ κ°œλ…μœΌλ‘œ μœ μΌν•œ μ‹λ³„μžμ™€ λΆˆλ³€μ„±μ„ μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€. 객체 μ†μ„±μ˜ ν‚€ κ°’μœΌλ‘œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€.

 

13. μ›Ή μ›Œμ»€μ™€ μ„œλΉ„μŠ€ μ›Œμ»€ λͺ¨λ“œ λ°±κ·ΈλΌμš΄λ“œ λ™μž‘μ„ μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€. μ˜€ν”„λΌμΈ μƒνƒœμ—μ„œλ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ™μž‘ν•  수 μžˆλ‹€λŠ” μž₯점과, λ³„λ„μ˜ λ©”μ‹œμ§•μ„ μ‚¬μš©ν•˜κΈ°μ— 좔가적인 μ½”λ“œκ°€ ν•„μš”ν•˜κ³  λ³΄μ•ˆμƒ μœ„ν—˜μ΄ μ‘΄μž¬ν•œλ‹€λŠ” 단점이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

 

14. λ°μ½”λ ˆμ΄ν„°λŠ” 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. κΈ°μ‘΄ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λ„ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμ–΄ μœ μ—°ν•œ 개발이 κ°€λŠ₯ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

 

15. varλŠ” μ „μ—­λ³€μˆ˜λ₯Ό μ˜€μ—Όν•˜κ³ , μž¬ν• λ‹Ήμ΄ κ°€λŠ₯ν•΄μ„œ μŠ€μ½”ν”„ 지정이 λΆˆκ°€ν•©λ‹ˆλ‹€.

 

16. λ™κΈ°λŠ” 말 κ·ΈλŒ€λ‘œ 순차적으둜 μ‹€ν–‰λ©λ‹ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ λΉ„λ™κΈ°λŠ” ν•œ μž‘μ—…μ΄ μ™„λ£Œλ˜κΈ°λ₯Ό 기닀리지 μ•Šκ³  λ°”λ‘œ λ‹€λ₯Έ μž‘μ—…μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€. 주둜 파일 μ½κΈ°λ‚˜ μ‹œκ°„μ΄ 였래 κ±Έλ¦¬λŠ” μž‘μ—…μ— μ“°μž…λ‹ˆλ‹€.

 

17. 이벀트 λ£¨ν”„λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 처리 λͺ¨λΈμ„ κ΅¬ν˜„ν•˜λŠ” 핡심 κ΅¬μ‘°μž…λ‹ˆλ‹€. λ¨Όμ € 호좜 μŠ€νƒμ΄ λΉ„μ–΄μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , λΉ„μ–΄μžˆμœΌλ©΄ 이벀트 νμ—μ„œ μž‘μ—…μ„ 가져와 ν˜ΈμΆœμŠ€νƒμ— μΆ”κ°€ν•©λ‹ˆλ‹€. 이후 호좜 μŠ€νƒμ΄ λΉ„μ›Œμžˆμ§€ μ•ŠμœΌλ©΄ 호좜 μŠ€νƒμ΄ λΉ„μ›Œμ§ˆ λ•ŒκΉŒμ§€ λŒ€κΈ°ν•©λ‹ˆλ‹€. 

 

 

 

 μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ°˜μ‘ν˜•