Domande per l'intervista al programmatore Pro JavaScript (con risposte) [chiuso]


131

Quali sono le buone domande per determinare se il richiedente è davvero uno sviluppatore JavaScript pro (lato browser)?

Domande che possono distinguere se qualcuno non è un programmatore JavaScript ad hoc, ma sta davvero facendo uno sviluppo JavaScript professionale, orientato agli oggetti, riutilizzabile e mantenibile.

Fornisci le risposte , in modo che un programmatore JavaScript intermedio e ad hoc possa intervistare qualcuno di più esperto, trovando risposte a parecchie domande avanzate mi sfuggiranno. Si prega di evitare domande aperte .

Conservare una domanda / risposta per un colloquio per ogni risposta SO per una migliore esperienza di lettura e una più facile preparazione dell'intervista.


21
Non fare mai intervistare uno sviluppatore JS intermedio a qualcuno che dovrebbe essere più avanzato! È semplicemente pazzo. Chiedi a qualcuno qualificato di fare il colloquio.
James,

22
@JP - quindi se il tuo sviluppatore senior smette, allora sei solo fregato?
tvanfosson,

15
@JP Sto cercando di assumere qualcuno meglio di me. È una piccola startup, quindi non ho una scelta migliore, a meno che non utilizzi un aiuto esterno ... ma poi dovrei intervistarlo;)
Janusz Skonieczny

13
@JP: Se stai solo assumendo persone che siano al massimo buone come te, un giorno sarai circondato da stupidi idioti. Cerca sempre di assumere qualcuno che è migliore di te.
Gumbo,

1
@Nick: il problema è che questa domanda ha una portata troppo ampia e non ha una risposta corretta (vedere i commenti delle faq sull'argomento). È adatto per un post sul blog, ma non così adatto per questo formato di domande e risposte. In passato potremmo essere passati all'ingegneria del software , ma dopo numerose minacce di danni fisici causati dalle mod dei programmatori abbiamo dovuto cambiare i nostri modi.
Michael Myers

Risposte:


118

Poiché JavaScript è un linguaggio così piccolo, ma con un'incredibile complessità, dovresti essere in grado di porre domande relativamente semplici e scoprire se sono davvero così buone in base alle loro risposte. Ad esempio, la mia prima domanda standard per valutare il resto dell'intervista è:

In JavaScript, qual è la differenza tra var x = 1e x = 1? Rispondi con la stessa quantità di dettagli che ritieni più a tuo agio.

I programmatori inesperti JS potrebbero avere una risposta di base sui locali rispetto ai globali. I ragazzi di JS intermedi dovrebbero sicuramente avere quella risposta e probabilmente dovrebbero menzionare l'ambito a livello di funzione. Chiunque si definisca un programmatore JS "avanzato" dovrebbe essere pronto a parlare dei locali, dei globi impliciti, windowdell'oggetto, dell'ambito delle funzioni, del sollevamento delle dichiarazioni e delle catene dell'ambito. Inoltre, mi piacerebbe sentirne parlare [[DontDelete]], sollevando la precedenza (parametri vs varvs function) e undefined.

Un'altra buona domanda è di chiedere loro di scrivere una sum()funzione che accetta un numero qualsiasi di argomenti e restituisce la loro somma. Quindi, chiedi loro di usare quella funzione (senza modifiche) per sommare tutti i valori in un array. Dovrebbero scrivere una funzione simile a questa:

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

E dovrebbero invocarlo sul tuo array in questo modo (il contesto per applypuò essere qualunque, di solito lo uso nullin quel caso):

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

Se hanno queste risposte, probabilmente conoscono il loro JavaScript. Dovresti quindi procedere a chiedere loro cose non specifiche su JS come test, flussi di lavoro, controllo della versione, ecc. Per scoprire se sono un buon programmatore .


4
Buona domanda. Piccolo nitpick: credo che intendi "risultato di ritorno" invece di "ritorno i". Suggerimento: imposta un piccolo ambiente di prova per testare il codice prima di pubblicare ;-)
MisterMister

4
wow, è un errore sciocco. Ho testato la maggior parte del mio codice su jsFiddle prima di pubblicare, ma non ho provato questo. Grazie :)
bcherry

5
La funzione di somma deve essere resiliente ai tipi non numerici senza generare errori. Inoltre, dovrebbe essere in grado di gestire i numeri come stringhe per ulteriore credito.
Abadaba,

2
+1 per grande menzione e distinzione nello scoprire se sono un buon programmatore.
Demonslay335,

3
Questa riga: for (i = 0, l = argument.length; i <l; i ++) è errata perché Argomenti.lunghezza verrà valutata ad ogni iterazione. Se si assegna l = argomenti.length prima del ciclo for, è meglio. Destra?
thomallen,

94

Programmazione JS di base

  • Scope of variable
  • Che cosa è Associative Array? Come lo usiamo?

OOPS JS

  • Difference between Classic Inheritance and Prototypical Inheritance
  • Che cosa è difference between private variable, public variable and static variable? Come lo realizziamo in JS?
  • Come add/remove properties to objectin tempo di esecuzione?
  • Come raggiungere inheritance?
  • Come extend built-in objects?
  • Perché extending array is bad idea?

DOM e JS

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

Varie

  • Graceful Degradation V/s Progressive Enhancement

17
questo è per assumere JS Gurus.
Andreas,

22
Preparati per uno sviluppatore JS a dire qualcosa del genere: JavaScript non ha array associativi. JavaScript, tuttavia, ha letterali di oggetti, che possono essere usati come array associativi. Inoltre, è possibile accedere alle proprietà degli oggetti utilizzando la notazione punto o le parentesi quadre e le stringhe.
Christopher Parker,

8
Queste sono le basi per qualcuno che si definirebbe uno "sviluppatore JavaScript". Penso che la profondità della risposta sia come li giudicheresti o no come un Guru.
Ryan Ore,

8
Intendi "Eredità Prototipica". Errore comune.
Wizzard,

4
@wizzard intendevi "errore tipico": p
Nick,


17

(Suppongo che intendi JavaScript lato browser)

Chiedigli perché, nonostante la sua infinita conoscenza di JavaScript, è comunque una buona idea usare framework esistenti come jQuery, Mootools, Prototype, ecc.

Risposta: buon codice per i programmatori, ottimo riutilizzo dei programmatori. Migliaia di ore di lavoro sono state riversate in queste librerie per sottrarre le funzionalità DOM alle implementazioni specifiche del browser. Non c'è motivo di affrontare tutti i diversi mal di testa DOM del browser solo per reinventare le correzioni.


5
@Tim Down: certamente, ma se trovi un pacchetto affidabile, quasi tutte le parti del pacchetto saranno state riviste da persone capaci. E come utente di un pacchetto open source, puoi inviare correzioni quando trovi errori, aggiungendo anche la tua esperienza.
PanCrit

È vero, conosci la ruota, ma non usare sempre le stesse gomme su terreni diversi. Per esempio. Perché usare l'intera libreria jQuery quando tutto ciò di cui hai bisogno è il trasporto Ajax ecc. (Per il tuo progetto) - microjs.com
Ali

1
La risposta a questa domanda è una domanda in sé: perché utilizziamo un IDE e non un semplice blocco note per modificare il nostro codice? :)
Navin Israni,

11

Chiedi loro come assicurano che le loro pagine continuino a essere utilizzabili quando l'utente ha disattivato JavaScript o JavaScript non è disponibile.

Non esiste una sola risposta vera, ma stai cercando una risposta che parli di alcune strategie per il miglioramento progressivo .

Il miglioramento progressivo è costituito dai seguenti principi fondamentali:

  • il contenuto di base dovrebbe essere accessibile a tutti i browser
  • le funzionalità di base dovrebbero essere accessibili a tutti i browser
  • markup semantico e scarso contiene tutto il contenuto
  • il layout ottimizzato è fornito da CSS collegati esternamente
  • il comportamento avanzato è fornito da [[JavaScript discreto | discreto]], JavaScript collegato esternamente
  • le preferenze del browser dell'utente finale sono rispettate

1
LA
MIGLIORE

Prima di tutto, convincimi che vale la pena investire una persona con JS disattivata nella rete reale e non nella rete oscura. quegli utenti sono probabilmente eccessivamente paranoici o all'oscuro dell'uso di un browser e hanno disattivato JS per errore, in entrambi i casi, le loro possibilità di conversione sono ridotte a nessuno.
vsync,


6

Chiedi "Quale framework di test unitari usi? E perché?"

Puoi decidere se effettivamente utilizzare un framework di test è davvero necessario, ma la conversazione potrebbe dirti molto su quanto sia esperta la persona.


1
Come riferimento, QUnit è sorprendente: docs.jquery.com/QUnit
Goyuix

0

i programmatori intermedi dovrebbero avere padronanza tecnica dei loro strumenti.

se ha superato le domande tecniche sullo schermo del telefono sopra, fagli disegnare qualcosa di stupido sul posto, come un accorciatore di URL ajax. quindi griglialo sul suo portafoglio. nessun portafoglio straordinario = sviluppatore intermedio in questo dominio e non il ragazzo che desideri responsabile del tuo nuovo brillante progetto.


4
Nel migliore dei casi, i portafogli sono una metrica scadente: nel mondo di oggi, JS è uno strumento perfettamente accettato nel mondo aziendale, dove i progetti probabilmente superano qualsiasi portafoglio che si possa vedere e in cui i repository pubblici non fanno parte.
Ilya Ayzenshtok,

1
@IlyaAyzenshtok QUESTO fa parte del mio dilemma. Difficile per me mostrare un portafoglio quando il 99% del mio lavoro è di proprietà / dietro un muro di paga / interno ...
Spartacus,

1
@Spartacus: puoi prendere screenshot e spiegare all'intervistatore la tua regola e ostacoli lungo il percorso. per quanto riguarda i progetti open source, sono un ottimo modo per valutare una persona prima di un colloquio per adattare le domande relative al livello di codifica della persona visto nei progetti.
vsync,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.