[javascript] Pro JavaScript 프로그래머 인터뷰 질문 (답변 포함) [닫기]

신청자가 실제로 JavaScript (브라우저 측) 개발자인지 확인하기위한 좋은 질문은 무엇입니까?

누군가가 임시 JavaScript 프로그래머가 아닌지, 실제로는 전문 JavaScript 개발, 객체 지향, 재사용 및 유지 관리가 가능한지를 구별 할 수있는 질문입니다.

답변을 제공해주십시오 . 중급 및 임시 자바 스크립트 프로그래머가 더 많은 경험이있는 사람과 인터뷰 할 수 있으며, 이러한 고급 질문 중 일부에 대한 답변이 나오지 않을 것입니다. 공개 질문은 피하십시오 .

더 나은 독서 경험과 쉬운 인터뷰 준비를 위해 SO 답변하나의 인터뷰 질문 / 답변을 유지하십시오 .



답변

JavaScript는 매우 작은 언어이지만 매우 복잡하기 때문에 상대적으로 기본적인 질문을하고 답변을 바탕으로 실제 질문이 좋은지 알아볼 수 있어야합니다. 예를 들어, 나머지 인터뷰를 측정하기위한 표준 첫 번째 질문은 다음과 같습니다.

JavaScript에서 var x = 1와 의 차이점은 무엇 x = 1입니까? 편안하다고 느끼는만큼 자세하게 대답하십시오.

초보 JS 프로그래머 현지인과 세계인에 대한 기본적인 대답을 할 수 있습니다. 중간 JS 사람들은 분명히 그 대답을 가지고 있어야하며 아마도 기능 수준 범위를 언급해야합니다. 자신을 “고급”JS 프로그래머라고 부르는 사람은 지역, 내재 된 전역, window객체, 함수 범위, 선언 호이 스팅 및 범위 체인에 대해 이야기 할 준비가되어 있어야합니다 . 또한,, [[DontDelete]]게양 우선 순위 (매개 변수 대 varvs function) 및에 대해 듣고 싶습니다 undefined.

또 다른 좋은 질문은 sum()여러 인수를 허용하고 합계를 반환 하는 함수 를 작성하도록 요청하는 것 입니다. 그런 다음 해당 함수를 수정없이 사용하여 배열의 모든 값을 합하도록 요청하십시오. 다음과 같은 함수를 작성해야합니다.

function sum() {
  var i, l, result = 0;
  for (i = 0, l = arguments.length; i < l; i++) {
    result += arguments[i];
  }
  return result;
}
sum(1,2,3); // 6

그리고 그들은 다음과 같이 배열에서 호출해야합니다 (문맥은 apply내가 일반적으로 사용하는 것이 무엇이든 가능합니다 null).

var data = [1,2,3];
sum.apply(null, data); // 6

그들이 그 답을 얻었다면 아마도 그들의 JavaScript를 알고있을 것입니다. 그런 다음 테스트, 워크 플로, 버전 관리 등과 같은 비 JS 관련 사항에 대해 계속 질문하여 이들이 훌륭한 프로그래머인지 확인해야 합니다.


답변

기본 JS 프로그램

  • Scope of variable
  • 무엇입니까 Associative Array? 우리는 그것을 어떻게 사용합니까?

OOPS JS

  • Difference between Classic Inheritance and Prototypical Inheritance
  • 무엇입니까 difference between private variable, public variable and static variable? JS에서 어떻게 이것을 달성합니까?
  • add/remove properties to object런타임에 어떻게 ?
  • 달성하는 방법 inheritance?
  • 하는 방법 extend built-in objects?
  • extending array is bad idea?

DOM과 JS

  • Difference between browser detection and feature detection
  • DOM Event Propagation
  • Event Delegation
  • Event bubbling V/s Event Capturing

기타

  • Graceful Degradation V/s Progressive Enhancement

답변

“this”에 대해 물어보십시오. 이것은 JavaScript 개발자의 진정한 테스트가 될 수있는 좋은 질문입니다.


답변

(브라우저 측 JavaScript를 의미한다고 가정합니다)

왜 JavaScript에 대한 무한한 지식에도 불구하고 jQuery, Mootools, Prototype 등과 같은 기존 프레임 워크를 사용하는 것이 좋은지 물어보십시오.

답변 : 좋은 코더 코드, 훌륭한 코더 재사용. 브라우저 특정 구현에서 DOM 기능을 추상화하기 위해 수천 개의 인력 시간이이 라이브러리에 쏟아졌습니다. 수정 사항을 다시 발명하기 위해 다른 브라우저 DOM 두통을 모두 겪을 이유가 없습니다.


답변

사용자가 자바 스크립트를 사용 중지했거나 자바 스크립트를 사용할 수없는 경우 페이지를 계속 사용할 수있는 방법을 물어보십시오.

하나의 진정한 답변은 없지만 진보적 향상을 위한 몇 가지 전략에 대한 답변을 찾고 있습니다.

프로그레시브 향상은 다음과 같은 핵심 원칙으로 구성됩니다.

  • 모든 브라우저에서 기본 컨텐츠에 액세스 할 수 있어야합니다
  • 모든 브라우저에서 기본 기능에 액세스 할 수 있어야합니다.
  • 스파 스, 시맨틱 마크 업에 모든 내용이 포함됨
  • 외부 적으로 연결된 CSS로 향상된 레이아웃 제공
  • 외부에서 연결된 JavaScript [[Unobtrusive JavaScript | unobtrusive]]에 의해 향상된 동작이 제공됩니다.
  • 최종 사용자 브라우저 환경 설정이 존중됩니다

답변

우발적 인 폐쇄로 인해 IE에서 메모리 누수가 어떻게 발생할 수 있는지 묻습니다 .


답변

“어떤 단위 테스트 프레임 워크를 사용합니까? 왜?”

실제로 테스트 프레임 워크를 사용해야하는지 여부를 결정할 수 있지만 대화를 통해 해당 전문가가 얼마나 전문가인지 알 수 있습니다.