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


131

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

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

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

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


21
중급 JS 개발자가 더 고급 인 사람을 인터뷰하지 마십시오! 그건 미친 짓이야 자격을 갖춘 누군가에게 인터뷰를하도록하십시오.
James

22
@ JP-수석 개발자가 종료하면 방금 망했습니까?
tvanfosson

15
@JP 저는 나보다 더 나은 사람을 고용하려고합니다. 소규모 신생 기업이므로 외부의 도움을받지 않으면 더 나은 선택을 할 수 없습니다 ...하지만 그를 인터뷰해야합니다.)
Janusz Skonieczny

13
@ JP : 당신이 가장 좋은 사람을 고용하고 있다면 언젠가 바보 바보에 둘러싸 일 것입니다. 항상 당신보다 나은 사람을 고용하십시오.
Gumbo

1
@ Nick : 문제는이 질문의 범위가 너무 넓고 정답이 없다는 것입니다 ( 주제에 대한 FAQ 의 의견 참조 ). 블로그 게시물에는 적합하지만이 Q & A 형식에는 적합하지 않습니다. 예전에는 우리는 Software Engineering으로 마이그레이션했을 수도 있지만, 프로그래머 모드로 인한 신체적 상해의 수많은 위협 후에 우리는 우리의 길을 바꿔야했습니다.
Michael Myers

답변:


118

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 관련 사항에 대해 계속 질문하여 이들이 훌륭한 프로그래머인지 확인해야 합니다.


4
좋은 질문. 작은 nitpick : 나는 당신이 "return i"대신 "return result"를 의미한다고 생각합니다. 전문가 팁 : 게시하기 전에 코드를 테스트 할 멋진 작은 테스트 환경 설정 ;-)
MisterMister

4
와우, 그건 바보 같은 실수 야. 게시하기 전에 jsFiddle에서 대부분의 코드를 테스트했지만 테스트하지는 않았습니다. 감사합니다 :)
bcherry

5
합계 함수는 오류가 발생하지 않고 숫자가 아닌 유형으로 복원되어야합니다. 또한 추가 크레딧을 위해 숫자를 문자열로 처리 할 수 ​​있어야합니다.
Abadaba

2
그들이 좋은 프로그래머인지 알아내는 데 대한 언급과 욕구를 높이기 위해 +1.
Demonslay335

3
이 줄 : for (i = 0, l = arguments.length; i <l; i ++)는 arguments.length가 반복 될 때마다 평가되므로 잘못되었습니다. for 루프 전에 l = arguments.length를 할당하면 더 좋습니다. 권리?
thomallen

94

기본 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

17
이것은 JS Gurus를 고용하기위한 것입니다.
Andreas

22
JS 개발자가 다음과 같이 말할 수 있도록 준비하십시오 : JavaScript에는 연관 배열이 없습니다. 그러나 JavaScript에는 객체 배열이있어 연관 배열처럼 사용할 수 있습니다. 또한 점 표기법 또는 대괄호와 문자열을 사용하여 객체의 속성에 액세스 할 수 있습니다.
Christopher Parker

8
이것은 '자바 스크립트 개발자'라고 부르는 사람을위한 기준입니다. 대답의 깊이는 전문가로 평가하는 방법입니다.
Ryan Ore

8
"Prototypal Inheritance"를 의미합니다. 일반적인 실수.
wizzard

4
@wizzard 당신은 '전형적인 실수'를 의미했습니다 : p
Nick


17

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

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

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


5
@Tim Down : 확실하지만, 평판이 좋은 패키지를 찾으면 유능한 사람들이 패키지의 거의 모든 부분을 검토했을 것입니다. 또한 오픈 소스 패키지 사용자는 실수를 발견했을 때 수정 사항을 제출하여 전문 지식을 추가 할 수 있습니다.
PanCrit

사실, 바퀴를 알고 있지만 다른 지형에 항상 같은 타이어를 사용하지는 않습니다. 예 : 프로젝트에 Ajax 전송 등이 필요한 경우 전체 jQuery lib를 사용하는 이유 -microjs.com
Ali

1
이 질문에 대한 답은 질문 자체입니다. 왜 코드를 편집하기 위해 간단한 메모장이 아닌 IDE를 사용합니까? :)
Navin Israni

11

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

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

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

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

1
건축가 수준의 JS 사람을 고용하는 가장 좋은 질문 :)
Navin Israni

우선, JS를 끈 사람이 다크 웹이 아닌 실제 웹에 투자 할 가치가 있다고 확신하십시오. 이러한 사용자는 아마도 편집증에 대해 과도하게 편집증이 있거나 실마리가 없으며 실수로 JS를 전환했습니다. 어쨌든 전환 가능성은 거의 없습니다.
vsync


6

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

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


1
참고로 QUnit은 놀랍습니다. docs.jquery.com/QUnit
Goyuix

0

중급 프로그래머는 도구에 대한 기술을 숙달해야합니다.

위의 기술 전화 화면과 같은 질문을 통과 한 경우 아약스 URL 단축기와 같이 어리석은 것을 스케치하십시오. 그의 포트폴리오에 그를 그릴. 놀라운 포트폴리오 =이 분야의 중간 개발자가 아니며 반짝이는 새 프로젝트를 담당하려는 사람이 아닙니다.


4
포트폴리오는 최상의 측정 기준이 아닙니다. 오늘날 세계에서 JS는 프로젝트가 볼 수있는 포트폴리오를 능가하고 공개 리포지토리가 중요하지 않은 엔터프라이즈 세계에서 완벽하게 수용되는 도구입니다.
Ilya Ayzenshtok

1
@IlyaAyzenshtok 이건 내 딜레마의 일부입니다. 내 작품의 99 %가 독점적
Spartacus

1
@ 스파르타쿠스-스크린 샷을 찍고 면접관에게 규칙을 설명하고 그 과정에서 장애물을 극복 할 수 있습니다. 오픈 소스 프로젝트에 대한, 그들은 사람을 평가할 수있는 좋은 방법입니다 전에 인터뷰 프로젝트에서 본 사람의 코딩 수준을 기준으로 질문을 조정합니다.
vsync
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.