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. 멘티의 질문에 대한 참고 자료
- 멀티 패러다임 언어 - 객체지향 프로그래밍, 절차지향 프로그래밍, 함수형 프로그래밍 등에 대한 개념
- 인터프리터 언어 vs 컴파일 언어
- https://www.youtube.com/watch?v=nrxtQcCLHo4
- https://www.boostcourse.org/cs112
- 하버드 대학교 CS50 강의인데, 4~6챕터가 기초를 쌓는 데 특히 중요하다 생각해서 추천드렸다. 보니까 나도 중간에 듣다가 만 것이 보인다.(하얀색 동그라미는 아직 수강하지 않은 것) 이것도 시간을 내서 한 번 싹 학습해줘야겠다.
4. 다음 주 멘티 과제
- JavaScript Deep Dive 1~18장 공부해오기
5. 회고
JavaScript에 대해서 잘 아는 JavaScript 개발자가 되자
- 물론 이론적으로 잘 안다고 해서 코드 구현까지 잘 하는가? 그건 다른 문제라 생각하는 것은 맞지만, 코드 구현을 제대로 하려면 이론적으로도 잘 알아야 한다고 생각한다.
- 자바스크립트라는 언어가 무엇이고, 어떤 특징을 가지고 있고, 어떻게 실행되는지에 대해서 알고 있어야 실제 구현을 할 때 이게 왜 이렇게 동작하는지 알 수 있어서 흔들리지 않고 나아갈 수 있는 토대가 될 수 있을 것이다.
- 멘티분에게 질문할 질문지를 준비하면서 Deep Dive 책을 다시 한 번 훑어보게 되었고 스스로도 답할 수 있는지 다시 한 번 곱씹게 되었다. 나도 잊어버린 부분이 있었고 그런 부분들을 잘 보충해서 확실하고 선명하게 알아야겠다고 생각했다.
학습한 것을 오래도록 내 것으로 남기기 위한 최고의 방법, 멘토링 ✨
- 오늘 우연히 ‘공부한 내용을 100% 내 것으로 만드는 방법’이라는 아티클을 보게 되었다. 공부를 분명 열심히 한 것 같은데, 돌아서면 까먹은 적이 하루 이틀이 아니다. 그 이유가 이 글에 나와있는데, 바로 뇌가 기억할 수 있는 저장 공간에는 한계가 있기 때문에 중요한 정보만 남겨 두고 다른 정보는 대뇌에서 망각되기 때문이라고 한다.
- William Glasser라는 미국의 정신과 의사는 위와 같은 학습 방법에 따른 기억률을 제시했다. 읽고, 듣고, 보는 방법으로 공부했을 때는 많아봤자 30%라는 저조한 수치만 기억되는 것을 볼 수 있다.
- 반면 남들과 토론했을 때, 직접 내가 경험했을 때, 다른 사람을 가르쳤을 때와 같이 보다 능동적인 방식으로 학습을 했을 때는 기억률이 95%까지 높게 올라가는 것을 볼 수 있다. 이것을 보고, 내가 지금 진행하는 멘토링이 정말 오래 기억에 남기기에 좋은 방식이라는 것을 다시 한 번 느낄 수 있었다.
'Mentoring' 카테고리의 다른 글
프론트엔드 멘토링 2기를 시작하며 (1) | 2023.08.24 |
---|