Pro JavaScript 프로그래머 인터뷰 질문 (답변 포함)
신청자가 실제로 JavaScript (브라우저 측) 개발자인지 확인하기위한 좋은 질문은 무엇입니까?
누군가가 특별 JavaScript 프로그래머가 아닌지, 실제로 전문 JavaScript 개발, 객체 지향, 재사용 및 유지 관리가 가능한지 구별 할 수있는 질문입니다.
답변을 제공해주십시오 . 중급 및 임시 자바 스크립트 프로그래머가 더 많은 경험이있는 사람을 인터뷰 할 수 있으며, 이러한 고급 질문 중 몇 가지에 대한 답변을 얻을 수 없습니다. 공개 질문은 피하십시오 .
더 나은 독서 경험과 쉬운 인터뷰 준비를 위해 SO 답변 당 하나의 인터뷰 질문 / 답변을 유지하십시오 .
JavaScript는 매우 작은 언어이지만 매우 복잡하기 때문에 상대적으로 기본적인 질문을하고 답변을 바탕으로 그 질문이 실제로 좋은지 알아볼 수 있어야합니다. 예를 들어, 나머지 인터뷰를 측정하기위한 표준 첫 번째 질문은 다음과 같습니다.
JavaScript에서
var x = 1
와 의 차이점은 무엇x = 1
입니까? 편안하다고 느끼는만큼 자세하게 대답하십시오.
초보 JS 프로그래머 는 현지인과 세계인에 대한 기본적인 대답을 할 수 있습니다. 중간 JS 사람들은 분명히 그 대답을 가지고 있어야하며 아마도 기능 수준 범위를 언급해야합니다. 자신을 "고급"JS 프로그래머라고 부르는 사람은 지역, 내재 된 전역, window
객체, 함수 범위, 선언 호이 스팅 및 범위 체인에 대해 이야기 할 준비가되어 있어야합니다 . 또한,, [[DontDelete]]
게양 우선 (매개 변수 대 var
vs 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 두통을 모두 겪을 이유가 없습니다.
사용자가 자바 스크립트를 사용 중지했거나 자바 스크립트를 사용할 수없는 경우 페이지를 계속 사용할 수있는 방법을 물어보십시오.
하나의 진정한 답변은 없지만 진보적 향상을 위한 몇 가지 전략에 대한 답변을 찾고 있습니다.
프로그레시브 향상은 다음과 같은 핵심 원칙으로 구성됩니다.
- 모든 브라우저에서 기본 컨텐츠에 액세스 할 수 있어야합니다.
- basic functionality should be accessible to all browsers
- sparse, semantic markup contains all content
- enhanced layout is provided by externally linked CSS
- enhanced behavior is provided by [[Unobtrusive JavaScript|unobtrusive]], externally linked JavaScript
- end user browser preferences are respected
Ask how accidental closures might cause memory leaks in IE.
Ask "What unit testing framework do you use? and why?"
You can decide if actually using a testing framework is really necessary, but the conversation might tell you a lot about how expert the person is.
intermediate programmers should have technical mastery of their tools.
if he's passed the technical phone screen-esque questions above, make him sketch out something stupid on the spot, like an ajax url shortner. then grill him on his portfolio. no amazing portfolio = intermediate developer in this domain and not the guy you want in charge of your shiny new project.
'Programing' 카테고리의 다른 글
페이스 북 데이터베이스 디자인? (0) | 2020.07.02 |
---|---|
롬복은 어떻게 작동합니까? (0) | 2020.07.02 |
== 연산자를 재정의합니다. (0) | 2020.07.02 |
조치 필터 속성에서 경로 재 지정 (0) | 2020.07.02 |
Android Studio 프로젝트를 빌드 할 때 Stacktrace 또는 디버그 옵션을 추가하는 방법 (0) | 2020.07.02 |