The journey to becoming a developer

My future is created by what I do today, not tomorrow.

Mentoring

프론트엔드 멘토링 2회차 회고

Millie 2023. 8. 31. 16:48

1. 2주차 멘티 과제

  • JavaScript Deep Dive 1장부터 15장까지 공부해 온 후, 면접 형식으로 질문했을 때 답할 수 있도록 하기
  • 답변 정답률 체크 방식
    • 제대로 설명했을 시 🟢
    • 절반 정도 제대로 설명했을 시 🟠
    • 틀린 답변 혹은 제대로 설명하지 못했을 시 🔴

 

2. 과제 질문들

  • 총 59개의 질문 중, 멘티는 10개의 질문을 통과함(정답률 약 17%)
    • 정답률이 낮은 만큼, 다음 주에 같은 질문으로 한 번 더 진행하기로 했다.
    • 멘티분이 조금 더 열심히 하실 수 있도록 파격적인(!) 조건을 걸었다. 다음번엔 정답률이 70% 미만일 경우, 멘토링을 바로 종료하는 것으로.

1. What is Programming?

  • 프로그래밍이란? 🟢

2. What is JavaScript?

  • 자바스크립트의 특징을 설명해주세요. (왜 멀티 패러다임 프로그래밍 언어라고 하는지?) 🔴
  • 컴파일러 언어와 인터프리터 언어의 차이는? 🔴

3. JavaScript 개발 환경

  • Node.js란 무엇인가? 🟠
  • npm이란? (왜 생겼는지 & 왜 유용한지) 🔴

4. 변수

  • 변수란 무엇인가? 🟢
  • 변수는 왜 필요한가? 🟢
  • 식별자란 무엇인가?(변수와 식별자의 차이?) 🔴
    • 식별자가 기억하고 있는 값은? 🔴
  • 자바스크립트 엔진은 변수 선언을 어떻게 수행하는가? 🟢
    • 변수의 이름은 어디에 등록되는가? 🔴
  • 선언하지 않은 식별자에 접근하면 어떻게 되는가? 🟢
  • 다음 코드는 어떻게 동작하는가? console.log의 결과는? 그 이유는? 🔴
  • console.log(score); var score;
  • Garbage collector란 무엇인가? 🟠
  • unmanaged language vs. managed language 🔴
  • 네이밍 컨벤션이란? 🟠
    • 자바스크립트에서는 네이밍 컨벤션을 어떻게 이용하는가?

5. 표현식과 문

  • 값(value)란 무엇인가? 🟢
  • literal이란 무엇인가? 🟢
  • 표현식(expression) vs. 문(statement)의 차이는 무엇인가? 🔴
  • token이란? 🔴
  • 표현식인 문과 표현식이 아닌 문의 차이 🔴

6. Data Type

  • 자바스크립트에서 데이터 타입이 어떻게 구성되어 있는가? 🔴
  • template literal이란? 🔴
  • 프로그래밍에서 null은 언제 사용하는가? 🟠
    • null과 undefined와 어떻게 다른가? 🟠
  • symbol이 무엇인가? 🔴
  • 데이터 타입이 필요한 이유는 무엇인가? 🔴
  • 동적 타입 언어와 정적 타입 언어의 차이는? 🔴
  • 변수를 사용할 때 어떤 점을 주의해야 할까?(데이터 타입과 연관지어서) 🔴

7. 연산자

  • 연산자와 피연산자는 무엇인가? 🔴
  • 이항 산술 연산자와 단항 산술 연산자의 차이는? 🔴
  • ==와 ===의 차이는? 🔴
    • 왜 주로 === 연산자를 쓰는가? 🔴

8. 제어문

9. 타입 변환과 단축 평가

  • type casting이란 무엇인가? 🔴
  • 타입 강제 변환(type coercion)이란 무엇인가? 🔴
  • ?. 연산자와 ?? 연산자는 무엇인가? 🔴
  • 단축 평가(short-circuit evaluation)이란 무엇인가? 🔴

10. 객체 리터럴

  • 객체란 무엇인가? (객체는 어떻게 구성되어 있는가?) 🟢
  • 객체에 프로퍼티에 접근하는 방법에 대해 설명 (프로퍼티 값을 사용하기 위해서) 🔴

11. 원시 값과 객체의 비교 🔴

  • 데이터 타입을 원시 타입과 객체 타입으로 구분하는 이유는?
    • pass by value와 pass by reference의 차이는?
    • immutable value란 무슨 뜻인가?
  • immutability란 무엇인가?
  • 유사 배열 객체란?
  • shallow copy vs. deep copy (객체)

12. 함수

  • 함수 선언문과 표현식의 차이는? 🔴
  • 화살표 함수는 일반적인 함수와 무엇이 다른가? 🔴
  • 매개변수는 몇 개까지 만드는 것이 좋을까? 🔴
  • 함수의 반환문을 생략하면 어떻게 되는가? 🔴
  • 즉시 실행 함수란 무엇인가? 🔴
    • 언제 사용하면 유용할까?
  • 재귀 함수는 무엇인가? 🟢
    • 언제 사용하면 유용한가? 🔴
  • 콜백 함수와 고차 함수는 무엇인가? 🔴

13. 스코프

  • 스코프란 무엇인가요? 🟢
  • 스코프가 왜 유용한가요? 프로그래밍 언어에서 왜 이런 개념이 있을까요? 🔴
  • 전역 스코프와 지역 스코프의 차이는? 🔴
  • 스코프 체인 🔴
  • 렉시컬 환경 🔴
  • 함수 레벨 스코프와 블록 레벨 스코프의 차이 🔴
  • 렉시컬 스코프 vs 동적 스코프 🔴

14. 전역 변수의 문제점 🔴

  • 전역 변수를 사용하는 것은 왜 위험한가?
  • 변수의 생명 주기란 무엇인가?

15. let, const 키워드와 블록 레벨 스코프 🔴

  • var 키워드로 변수를 선언했을 때 어떤 문제가 있는가?
  • 함수 레벨 스코프 vs 블록 레벨 스코프 차이
  • var와 비교해서 let, const의 특징
    • TDZ란 무엇인가? 어떻게 동작하는가?
  • const로 객체를 선언해도 객체의 프로퍼티에 재할당이 가능한 이유는?

 

3. 멘티의 질문에 대한 참고 자료

 

4. 다음 주 멘티 과제

  • JavaScript Deep Dive 1~18장 공부해오기

 

5. 회고

JavaScript에 대해서 잘 아는 JavaScript 개발자가 되자

  • 물론 이론적으로 잘 안다고 해서 코드 구현까지 잘 하는가? 그건 다른 문제라 생각하는 것은 맞지만, 코드 구현을 제대로 하려면 이론적으로도 잘 알아야 한다고 생각한다.
  • 자바스크립트라는 언어가 무엇이고, 어떤 특징을 가지고 있고, 어떻게 실행되는지에 대해서 알고 있어야 실제 구현을 할 때 이게 왜 이렇게 동작하는지 알 수 있어서 흔들리지 않고 나아갈 수 있는 토대가 될 수 있을 것이다.
  • 멘티분에게 질문할 질문지를 준비하면서 Deep Dive 책을 다시 한 번 훑어보게 되었고 스스로도 답할 수 있는지 다시 한 번 곱씹게 되었다. 나도 잊어버린 부분이 있었고 그런 부분들을 잘 보충해서 확실하고 선명하게 알아야겠다고 생각했다.

 

학습한 것을 오래도록 내 것으로 남기기 위한 최고의 방법, 멘토링 ✨

  • 오늘 우연히 ‘공부한 내용을 100% 내 것으로 만드는 방법’이라는 아티클을 보게 되었다. 공부를 분명 열심히 한 것 같은데, 돌아서면 까먹은 적이 하루 이틀이 아니다. 그 이유가 이 글에 나와있는데, 바로 뇌가 기억할 수 있는 저장 공간에는 한계가 있기 때문에 중요한 정보만 남겨 두고 다른 정보는 대뇌에서 망각되기 때문이라고 한다.

  • William Glasser라는 미국의 정신과 의사는 위와 같은 학습 방법에 따른 기억률을 제시했다. 읽고, 듣고, 보는 방법으로 공부했을 때는 많아봤자 30%라는 저조한 수치만 기억되는 것을 볼 수 있다.
  • 반면 남들과 토론했을 때, 직접 내가 경험했을 때, 다른 사람을 가르쳤을 때와 같이 보다 능동적인 방식으로 학습을 했을 때는 기억률이 95%까지 높게 올라가는 것을 볼 수 있다. 이것을 보고, 내가 지금 진행하는 멘토링이 정말 오래 기억에 남기기에 좋은 방식이라는 것을 다시 한 번 느낄 수 있었다.

'Mentoring' 카테고리의 다른 글

프론트엔드 멘토링 2기를 시작하며  (1) 2023.08.24