Jakie są dobre pytania, aby ustalić, czy kandydat jest naprawdę programistą JavaScript (po stronie przeglądarki)?
Pytania, które pozwalają odróżnić, czy ktoś nie jest ad-hoc programistą JavaScript, ale tak naprawdę zajmuje się profesjonalnym programowaniem JavaScript, zorientowanym obiektowo, wielokrotnego użytku i możliwym do utrzymania.
Proszę o udzielenie odpowiedzi , aby średniozaawansowani i ad-hoc programiści JavaScript mogli przeprowadzić rozmowę z kimś bardziej doświadczonym, wymyślając odpowiedzi na kilka z tych zaawansowanych pytań. Unikaj otwartych pytań .
Proszę zachować jedno pytanie / odpowiedź do rozmowy kwalifikacyjnej na każdą odpowiedź SO, aby uzyskać lepsze wrażenia z czytania i łatwiejsze przygotowanie do rozmowy kwalifikacyjnej.
źródło
Odpowiedzi:
Ponieważ JavaScript jest tak małym językiem, ale ma niesamowitą złożoność, powinieneś być w stanie zadać stosunkowo podstawowe pytania i dowiedzieć się, czy są one naprawdę dobre, na podstawie ich odpowiedzi. Na przykład moje standardowe pierwsze pytanie do oceny reszty wywiadu brzmi:
Początkujący programiści JS mogą mieć podstawową odpowiedź na temat lokalnych i globalnych. Faceci od średniozaawansowanych JS zdecydowanie powinni mieć tę odpowiedź i prawdopodobnie powinni wspomnieć o zakresie na poziomie funkcji. Każdy, kto nazywa siebie „zaawansowanym” programistą JS, powinien być przygotowany na rozmowę o lokalizacjach, domniemanych globalnych,
window
obiekcie, zakresie funkcji, podnoszeniu deklaracji i łańcuchach zasięgu. Ponadto chciałbym usłyszeć o[[DontDelete]]
pierwszeństwie podnoszenia (parametry vsvar
vsfunction
) iundefined
.Innym dobrym pytaniem jest poproszenie ich o napisanie
sum()
funkcji, która przyjmuje dowolną liczbę argumentów i zwraca ich sumę. Następnie poproś, aby użyli tej funkcji (bez modyfikacji) do zsumowania wszystkich wartości w tablicy. Powinni napisać funkcję, która wygląda następująco: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
I powinni wywołać to na twojej tablicy w ten sposób (kontekst
apply
może być dowolny, zwykle używamnull
w tym przypadku):var data = [1,2,3]; sum.apply(null, data); // 6
Jeśli mają te odpowiedzi, prawdopodobnie znają swój JavaScript. Następnie powinieneś zapytać ich o rzeczy niezwiązane z JS, takie jak testowanie, przepływy pracy, kontrola wersji itp., Aby dowiedzieć się, czy są dobrym programistą .
źródło
Podstawowe programowanie w JS
Scope of variable
Associative Array
? Jak tego używamy?OOPS JS
Difference between Classic Inheritance and Prototypical Inheritance
difference between private variable, public variable and static variable
? Jak to osiągamy w JS?add/remove properties to object
w czasie wykonywania?inheritance
?extend built-in objects
?extending array is bad idea
?DOM i JS
Difference between browser detection and feature detection
DOM Event Propagation
Event Delegation
Event bubbling V/s Event Capturing
Różne
Graceful Degradation V/s Progressive Enhancement
źródło
Zapytaj o „to”. To dobre pytanie, które może być prawdziwym testem programisty JavaScript.
źródło
(Zakładam, że masz na myśli JavaScript po stronie przeglądarki)
Zapytaj go, dlaczego pomimo jego nieskończonej znajomości JavaScript, nadal dobrym pomysłem jest korzystanie z istniejących frameworków, takich jak jQuery, Mootools, Prototype itp.
Odpowiedź: Dobry kod dla programistów, świetne ponowne wykorzystanie przez programistów. Tysiące roboczogodzin zostało przelanych na te biblioteki, aby wyodrębnić możliwości DOM z dala od implementacji specyficznych dla przeglądarki. Nie ma powodu, aby samodzielnie przechodzić przez wszystkie różne problemy DOM przeglądarki, aby na nowo wymyślić poprawki.
źródło
Zapytaj ich, w jaki sposób zapewniają, że ich strony będą nadal użyteczne, gdy użytkownik ma wyłączony JavaScript lub gdy JavaScript jest niedostępny.
Nie ma jednej prawdziwej odpowiedzi, ale szukasz odpowiedzi mówiącej o niektórych strategiach progresywnego ulepszania .
źródło
Zapytaj, jak przypadkowe zamknięcie może spowodować wycieki pamięci w IE.
źródło
Zapytaj „Jakiego frameworka testowania jednostkowego używasz? I dlaczego?”
Możesz zdecydować, czy rzeczywiście korzystanie z frameworka testowego jest naprawdę konieczne, ale rozmowa może ci wiele powiedzieć o tym, jak ekspertem jest dana osoba.
źródło
średniozaawansowani programiści powinni posiadać biegłość techniczną w zakresie swoich narzędzi.
jeśli zdał powyższe pytania techniczne dotyczące ekranu telefonu, niech od razu naszkicuje coś głupiego, na przykład skracacz adresu URL Ajax. następnie grilluj go w swoim portfolio. brak niesamowitego portfolio = średniozaawansowany programista w tej domenie, a nie facet, którego chcesz zarządzać swoim nowym, błyszczącym projektem.
źródło