Quora의 How do you judge a JavaScript programmer by only 5 questions?에 대한 Joel Phelan님의 답변입니다.


먼저, 펜과 종이를 잡으세요.

  1. 저는 5개의 셀을 가진 HTML 테이블을 가지고 있다고 합시다. 각 셀은 버튼과 하나의 필드를 가지고 있습니다. 당신은 HTML이나 ID와 같은 별칭(naming conventions) 등을 제어할 수 없습니다. 각 버튼에 클릭되었을 때 함수를 실행하고 필드에 그 결과를 작성하는 이벤트 핸들러를 작성하세요. 테이블의 셀을 중복하여 반복(Iterate)하지 말기 바랍니다.
  2. JavaScript에서 OOP(객체 지향 프로그래밍)가 어떻게 작동하는 설명하세요. 이것은 프로토타입의 상속과 클로저(문법) 그리고 문법적 스코핑으로 이야기가 이어질 것입니다.
  3. 클로저의 한 가지 예를 제시하고 그 예를 설명하세요.
  4. 어떻게 프레임워크없이 SPA(단일 페이지 애플리케이션)를 개발할 것인지 설명하세요(이것은 Dean님이 언급하신대로 어떻게 성능과 메모리 누수 문제를 해결할 것인지 한 번 더 생각하게 만들 것입니다).
  5. JavaScript는 함수형 프로그래밍 언어입니다. For 또는 While 루프를 사용하지 않고 고차함수를 사용하여 배열의 모든 요소에 함수를 적용하는 방법에 대한 예를 들어보시기 바랍니다.
  6. 저는 다른 컨테이너 객체로 옮겨진 LATER 이벤트에 기반한 DOM 객체를 저장할 수 있습니다. 예를 들어서 제가 OL(Ordered List) 또는 UL(Unordered List)에서 LI(List Item)를 제거하는 버튼을 만들어야 한다고 합시다. 객체는 동작하기 위해 현재 세션을 저장되어서 다른 이벤트의 결과에 기반하여 두 번째 컨테이너에 첨부되거나 첫 번째 컨테이너로 다시 이동하거나 버릴 수 있습니다. (저는 세션 스코핑에 관한 지식에 관심이 있습니다.. 만약 그들이 전역 범위를 추천한다면 저는 괜찮다고 말하겠지만 만약 저희가 전역 변수를 사용하지 않겠다면 다른 방법은 무엇이 있을까요? 이것은 어려운 질문이 아닙니다, 그러나 명확한 질문이 최고의 선택이 될 수 없다고 생각될 경우 당신이 어떻게 생각하는지 말하게 해줍니다.)

저는 그들이 (특히 5번 문항을) 모든 문항에서 완벽한 답을 얻을 것이라고 생각하지 않습니다. 저는 그들이 이런 기술들을 어느정도 사용가능한 정도에서 이러한 상황을 이해했는지 알고 싶습니다. 제 질문은 모두 클라이언트 쪽에 집중되어 있습니다. 만약 인터뷰가 서버 사이드를 위한 것이여야만 한다면 저는 각각 1번과 4번 그리고 6번 문항에 다른 질문을 사용할 것입니다. 만약 그것이 서버 사이드 자바스크립트를 사용하는 풀스택 포지션을 위한 것이라면 저는 5개가 아닌 10개의 질문을 원합니다. 당신은 5개의 질문만으로 두 영역을 모두 대응할 수 없습니다. (저는 진심으로 모든 경우에 10개의 질문을 원했지만 당신이 5개의 질문을 원했으므로 🙂 ).