Il colloquio tecnico di 10 minuti [chiuso]

37

Devo fare una rapida valutazione di dozzine di nuovi studenti molto rapidamente. Ho 30 minuti di incontro con ciascuno di loro (in due o tre giorni). Voglio usare la maggior parte del tempo per discutere aspetti non tecnici. Quindi ho intenzione di utilizzare 10 minuti per domande tecniche. Le stesse domande per tutti loro.

Sono già tutti assunti (sono studenti), quello che devo sapere è il livello medio per preparare un allenamento.

Idealmente, la difficoltà must be progressive per impostare un livello per ciascuno. Il livello I sarà nella media, e farò una media anche su ogni domanda.

Se avessi solo 10 minuti e 10 domande da porre a un candidato, quali sarebbero i tuoi primi 10?

    
posta user2567 04.11.2010 - 12:16
fonte

19 risposte

55

Tre domande, che elaborano alla fine della risposta di Eric Lippert qui :

Domanda 1:

On a scale of 1 - 10, where do you rate yourself in (name the skill here)? They answer [n], a number between 1 and 10.

Domanda 2:

What could you learn from someone at level [n+1] ?

Domanda 3:

What could someone at level [n-1] learn from you?

Il fattore più importante nella tua decisione è determinare dove uno studente (realisticamente) colloca se stesso e queste tre domande ti aiuteranno a determinarlo rapidamente. Aiuta anche a identificare le persone che potrebbero essere compromesse dall'effetto Dunning-Kruger (su entrambe le estremità) , ma questo è un altro argomento.

Se qualcuno può trovare il riferimento a questo metodo su SO e modificare questo post per includere un link, lo apprezzerei molto.

Ad ogni modo, dovrebbe andare bene sotto i dieci minuti.

    
risposta data 12.04.2017 - 09:31
fonte
28
  1. Che cos'è una classe?
  2. Che cos'è un metodo statico?
  3. Cos'è l'ereditarietà?
  4. Cos'è il polimorfismo?
  5. Che cos'è una chiave primaria?
  6. Che cos'è una chiave esterna?
  7. Qual è la differenza tra HTTP GET e HTTP POST?
  8. Che cos'è un servizio web?
  9. Assegna un nome alle strutture dati.
  10. Qual è lo scopo di un Object / Relational Mapper?

Sentiti libero di suggerire rimpiazzi, questa lista ha molto margine di miglioramento.

    
risposta data 04.11.2010 - 20:31
fonte
20
  1. Spiega i puntatori!
  2. Quali sono le chiusure?
  3. Quali lingue usi nel tempo libero e perché?
  4. Parla un po 'delle transazioni!
  5. Qual è la differenza tra un interprete e un JIT?
  6. Spiega le basi di un compilatore.
  7. Cosa succede a livello di memoria quando esegui la ricorsione (e cosa è diverso quando hai un TCO)
  8. Quali sono i concetti importanti della programmazione OO (e perché sono importanti)?
  9. Quali nuove cose stai guardando a casa e perché è interessante?
  10. Spiega la differenza tra un processo e un thread.
risposta data 04.11.2010 - 14:39
fonte
16

La mia esperienza con gli studenti mi piacerebbe ricominciare da zero - ho trovato ciò che le persone apprendono all'università e ciò che è utile sono due set piuttosto separati.

Ma dato che hai la possibilità di parlare con loro sarebbe sciocco non prenderlo.

La mia ipotesi è che ci sia poca comunanza nel loro background, quindi sto evitando le domande specifiche della lingua. L'unica eccezione che ho fatto a questo è l'ipotesi che abbiano fatto qualcosa sul web ma questa domanda potrebbe essere sottotitolata per qualcosa di equivalente se sono specialisti integrati o altro.

Hai chiesto loro di essere progressisti che ho tentato di fare, ma se la mia ipotesi di non comunanza è corretta, le domande giuste o sbagliate sono relativamente difficili e molte delle loro competenze deriveranno da quanto buone sono le loro risposte a domande più generali sono.

In ogni caso ...

1) A quali lingue e tecnologie sei stato esposto? Quanti di questi (e di quali) hai trascorso più di 50 ore di programmazione (non sono incluse le lezioni, i tempi di laboratorio e così via, compresi i progetti e gli incarichi in cui stavi codificando da solo).

2) Descrivi il programma più complesso che tu abbia mai scritto. Cosa lo ha reso complesso?

3) Cosa ti è stato insegnato all'università (in relazione alla programmazione) che davvero non pensi di aver capito bene? Se pensi di aver capito tutto (controlla i loro voti a questo punto) poi parla di un'applicazione o di un elemento di un'applicazione che hai visto che non sapresti come codificare e come potresti iniziare a pensarci. / p>

4) Quali sono i principi di base della programmazione orientata agli oggetti?

5) Parlami tanto dei database relazionali quanto puoi in 1 minuto

6) Per un'applicazione web descrivere un metodo per mantenere le informazioni sull'utente tra le pagine. Quali sono i vantaggi e gli svantaggi per il meccanismo che hai descritto.

7) Scegli un pezzo di funzionalità comunemente usata nel calcolo e spiega in modo molto sintetico come funziona a livello di programmazione (ad esempio crittografia, compressione). Spiega anche come hai dovuto usare quella funzionalità che avresti implementato (qui cercherò il fatto che, sebbene tu possa sapere come funziona qualcosa, probabilmente è meglio prendere una libreria per questo).

EDIT: Ristrutturato e aggiunto un paio di domande extra per renderlo più progressivo come originariamente richiesto.

    
risposta data 05.11.2010 - 10:40
fonte
8

Se questi sono studenti e stai cercando di essere in grado di valutare dove sono nei loro studi allora non ci dovrebbero essere domande o domande di trucco che li facciano riflettere a lungo. Il mio consiglio è di concentrarsi solo sugli elementi di base: non ha molto senso chiedergli di spiegare come funziona la riflessione se non sono ancora pienamente operativi sugli oggetti e sull'eredità.

Ecco alcune domande esemplificative che potrebbero essere utilizzate e potresti magari iniziare con qualcosa della categoria di conoscenza principale e poi spostarti sulla base di come rispondono alle domande, un po 'come come test di adattamento funziona.

Fundamentals

  1. Quali sono alcuni comandi di controllo del flusso di base del programma?
  2. Quali sono alcune operazioni logiche di base?
  3. Qual è la differenza tra while e for loops?

Nucleo

  1. Spiega brevemente la programmazione orientata agli oggetti.
  2. Spiega brevemente il concetto di ereditarietà.
  3. Spiega brevemente come funzionano i database.
  4. Qual è la parola chiave enum usata e quando la useresti?

Avanzate

  1. Cosa puoi dirmi sui generici C # o sui modelli C ++?
  2. Cosa puoi dirmi sull'overloading dell'operatore?
  3. Qual è la differenza tra una classe e una struttura?
  4. Cosa puoi dirmi sulla riflessione in .NET?
risposta data 04.11.2010 - 15:06
fonte
6

Senza una risposta al mio commento sopra, queste sono le cose che mi vengono in mente in generale, ma non sono sicuro che considererei queste tecniche.

  • Che tipo di controllo di versione hai usato?
  • Conoscete le metodologie di sviluppo del software come agile, waterfall, tdd?
  • Qual è lo scopo della documentazione nel software?
  • Differenza tra linguaggi tipizzati staticamente e dinamicamente?
risposta data 04.11.2010 - 12:29
fonte
4

Mi rendo conto che stai cercando di costruire un allenamento basato su ciò che non sanno, e che pensi di avere diversi "secchi" di formazione per diversi gruppi di studenti. Dal momento che hai solo dieci minuti assegnati, perché non fare un elenco di cose che stai pensando di includere nella formazione e porre domande specifiche. Quindi hai intenzione di insegnare loro C #. Chiedi se lo sanno bene. Chiedi se hanno utilizzato funzionalità più recenti (LINQ, tipi nullable, generici, ...). Se nella tua formazione sono presenti contenuti del database, fai alcune domande al riguardo. Alla fine potresti vedere che uno degli argomenti che hai programmato non è necessario, perché tutti lo sanno, e alcuni altri argomenti sono necessari a tutti, e così via. È più pratico che cercare di formulare domande che non sono correlate a ciò che si è in grado di addestrarle (tempo di cambio di contesto su linux?) O non correlate al lavoro che si intende fare fare dopo che sono state addestrate .

    
risposta data 04.11.2010 - 14:53
fonte
4

Chiedi loro la FizzBuzz domanda

Sapevano come codificarlo? Che lingua hanno usato? Perché lo hanno codificato come hanno fatto? Hanno usato la ricorsione? Loops? Altri metodi / funzioni? Puntatori?

Potresti anche usare la domanda come base per altre domande (ad esempio perché / non hai usato la ricorsione? Come scriveresti usando i puntatori?)

Non racchiude tutto, ma potrebbe darti un'idea delle loro capacità di codifica

    
risposta data 23.05.2017 - 14:40
fonte
4

Dieci domande:

  1. Mostra un ciclo for che somma i valori di un array. Chiedi allora che cosa fa il codice. [Possono leggere un ciclo di base?]

  2. Chiedigli di scrivere un ciclo for che stampi i numeri da 1 a 10, separati da virgole. [Oltre a "possono farlo?" puoi giudicare quanto è ripetitivo il loro codice.]

  3. Mostra un pezzo di codice con due riferimenti, a e b , che punta a due oggetti diversi con un campo intero x impostato su, ad esempio, 7 e 5 . Quindi riassegna: a = b; , b.z = 9; , quindi chiedi il valore di a.z . [Comprendono i riferimenti?]

  4. Mostra due loop nidificati (usando gli indici i e j ), accumulando valori da alcune espressioni. Nel ciclo più interno, hai due calcoli: double x = Math.pow(2.0, i) e double y = x * j . Chiedi loro di rendere il codice più efficiente. [Conoscono la dipendenza da ciclo semplice?]

  5. Chiedi loro cosa c'è di sbagliato nel codice di esempio A. (vedi sotto). [Possono pensare logicamente?]

  6. Chiedi loro cosa c'è di sbagliato nel codice di esempio B. (Vedi sotto). [Anche sul pensiero logico.]

  7. Chiedi loro di invertire questa condizione: (s != null && s.Length != 0) senza utilizzare ! . [Conoscono la legge di DeMorgan?]

  8. Mostra un pezzo di codice simile alle vecchie pubblicità di Lint nelle riviste: chiedi loro di trovare il bug. Ad esempio, sovraccaricando equals invece di sovrascriverlo. [Sono buoni avvocati linguistici? Questo tipo di domande è per lo più test per esperienza: hai visto questo prima?]

  9. Possono descrivere come eseguire una ricerca binaria attraverso un array ordinato?

  10. Possono descrivere come potrebbe essere implementato un metodo di ordinamento?

Potrebbero sembrare "troppo brevi", ma credo che per valutare gli studenti potresti scoprire che i dieci minuti sono piuttosto stretti. Vuoi davvero vederli fare un po 'di codice. (Sembra che farai FizzBuzz, basandoti su un commento.)

Se puoi assumere uno studente più strong, allora vorrai anche chiedere alcuni dei classici, come la ricorsione, l'inversione di una lista collegata, e forse una wild card avanzata come la spiegazione di una lista XOR, o quali intuizioni essi potrebbe avere perché ordinare un insieme di numeri rende più facile comprimere che non selezionati.

Esempio di codice A:

if (m != null)
    a = m;
else
    a = null;

Esempio di codice B:

if (x != 0 || x != 1) {
    ...
}
    
risposta data 22.11.2010 - 00:22
fonte
3

Sicuramente stai andando in questo modo nel modo sbagliato. Identifica i raggruppamenti in cui vuoi inserire ogni studente

per es.

No previous programming experience
Familiar with procedural constructs like variables, loops, branching
familiar with basic object orientated constructs like classes, interfaces, events, inheritance
familiar with using Generics/Templates
familiar with creating Generics/Templates

e così via. Dopo aver identificato i raggruppamenti adatti che dipenderanno dal materiale del corso, elaborando le domande da porre sarà banale.

    
risposta data 22.11.2010 - 00:19
fonte
3

Gli studenti sono già assunti e tu vuoi creare un programma di allenamento, quindi parte dell'affare è capire quanto velocemente possono imparare (e / o quello che sanno: a chi importa quale?). Perché non scegliere alcune domande facili, medie e difficili e dargliele in anticipo. Perché tendere loro delle domande che potrebbero non sapere, se possono essere facilmente apprese (da alcuni)?

Vedrai, contrariamente a quanto molti immaginano, che molti degli studenti non faranno molto bene anche con le domande in mano. In questo modo, imparerai a conoscere i tuoi studenti, i loro conoscenza e la loro capacità di apprendere.

    
risposta data 22.11.2010 - 01:36
fonte
2

Crea 5 semplici costrutti di diagramma di flusso e un elenco separato di risposte. Chiedi loro di abbinare l'immagine con la frase.

Disegna quanto segue:

  1. If Construct
  2. If Else Construct
  3. Effettua loop while
  4. Termina fino al ciclo
  5. Costruzione di istruzioni caso

Chiedi loro di spiegare la differenza tra 1 e 2.
Chiedi loro di spiegare la differenza tra 3 e 4.
Chiedete loro un esempio di quando sarebbe applicabile un Costrutto di Case Statement.

    
risposta data 06.11.2010 - 23:20
fonte
1

Non sono sicuro che sarebbe possibile farlo in 10 domande in 10 minuti. Forse dai loro 5 minuti per dirti quello che sanno su .net. Poi hai un elenco preparato di 20 argomenti e scegli 2 o 3 dalle cose che hanno menzionato e 2 o 3 da cose che non hanno.

Ad esempio potresti iniziare:

Tell me briefly (you have 5 minutes) how you would produce a simple C# project in Visual Studio from creating it to running it.

Quindi dopo:

OK, tell me a little more on the following. It's going to be quick-fire, 1 minute per answer, so don't try to be too detailed I just want a feel for what you're familiar with.

Poi fai 5 domande per questo dal seguente:

  • Spiega cos'è una classe.
  • Qual è la differenza tra una classe astratta e un'interfaccia?
  • Spiega brevemente come la garbage collection funziona in .Net

    ....

  • Come fai il debug di qualcosa se tu avere un problema?

  • Yadda-yadda - Sono sicuro che sarai in grado di scegliere una lunga lista tra le altre risposte
risposta data 04.11.2010 - 15:02
fonte
1

Credo in "autovalutazione"! Se spieghi alla persona la situazione esatta in cui si troverà, ad esempio: "dovrai codificare SQL ... con un database di oltre 100 tabelle e record di 500K +, che devono essere eseguiti in meno di 4 secondi ...". E se gli chiedi: "Pensi di riuscirci?" - riceverai una risposta corretta.

Ho trascorso 5 domande sulle aspettative degli studenti e 5 più tecniche:

  1. Che cosa ti aspetti da questo allenamento?
  2. Qual è il tuo livello (questo dovrebbe essere specifico per il dominio)?
  3. Cosa vuoi vedere / imparare durante questo allenamento (fai riferimento a 3 punti più importanti)?
  4. Se facciamo esercizi, cosa vedresti più utile per te? (workshop, scelta multipla)?
  5. Che cosa ti aspetti dall'insegnante?

Di quanto tu possa andare con alcune domande tecniche come (questo dovrebbe essere secondo l'argomento). per OOP ad esempio:

  1. Che cos'è l'incapsulamento?
  2. Cos'è l'interfaccia?
  3. Il polimorfismo?
  4. Sotto-tipizzazione?
  5. Associazione dinamica?
risposta data 20.11.2010 - 14:51
fonte
1

Sto cercando un problem solving, una strong abitudine all'apprendimento, uno sviluppo professionale e un'ampia conoscenza degli approcci.

  1. Posso vedere il tuo portfolio?
  2. Quali sono gli ultimi 3 libri tecnici che hai letto? Perché?
  3. Quale testo di programmazione ha cambiato il modo in cui pensi di più? Perché?
  4. Come definiresti chicken come oggetto? Come si relaziona con l'altro birds ? Che ne dici di mammals e animals ?
  5. Puoi spiegare uno qualsiasi di (REST, polimorfismo, algebra relazionale, progettazione del parser, MVC) in parole povere?
  6. Qual è il software più interessante (o migliore) che hai creato da solo?
  7. Puoi descrivere le lingue in cui sei esperto dal preferito al meno preferito? Cosa ti frustra delle tue lingue preferite?

Mi aspetto che gli sviluppatori:

  • Sii pieno di risorse e veloce
  • Afferrare correttamente i concetti di base
  • Imparerai ad arricchire concetti avanzati
  • Traccia successo e fallimento (imparando da esso)
  • Impara costantemente, con attenzione
  • Comunicare problemi complessi semplicemente
  • Mostra equilibrio e logica quando si discute comunemente di problemi dogmatici
risposta data 21.11.2010 - 23:16
fonte
1

La tassonomia di Bloom è utile qui. Volete colpire una varietà di livelli di conoscenza, che vanno dalla memorizzazione meccanica all'analisi. Questo ti dà la possibilità di scoprire dove si trova il loro livello di abilità. Dato che l'OP stava cercando domande da porre agli studenti, la lista qui sotto non suppone più conoscenze di quelle che uno studente di 3 ° o 4 ° anno potrebbe (spero) possedere.

concettuale

  1. Che cos'è un underflow dello stack?
  2. Qual è la differenza tra un oggetto e una classe?
  3. Qual è la differenza tra una funzione e un metodo?
  4. Identifica alcuni dei punti di forza e di debolezza di Quicksort e Insertion Sort.
  5. Descrivi come un programma che hai scritto mostrerà tutti i valori memorizzati in un albero binario.

Pratica

  1. Hai usato un sistema di controllo della versione? In che modo consente ai membri del team di collaborare in modo più efficace?
  2. Il tuo compilatore dice "simbolo non identificato". Cosa significa?
  3. Che cos'è una "violazione della segmentazione"?
  4. Assegna un nome alle strutture dati fornite dalla sintassi (inserisci qui la lingua) o dalla libreria standard.
  5. Come troveresti e visualizzerai tutti gli indirizzi email in 10.000 file?
risposta data 22.11.2010 - 00:58
fonte
1

Dal momento che sono già assunti, per una valutazione rapida penso che si dovrebbe (insieme alle domande di programmazione), uno dovrebbe chiedere loro

  1. Qual è la configurazione di sistema su cui hai lavorato (configurazione hardware del PC).
  2. Hai provato a testare il tuo codice (progetto se lavorato durante il college) su diversi sistemi operativi.
  3. Preferisci la codifica in Windows o Linux (se hanno funzionato su sistemi operativi diversi da quelli di Windows)
  4. la codifica è più veloce / più lenta / migliore dipende dai sistemi? (i sistemi più alti = sentono un buon fattore per la codifica poiché i sistemi lenti richiedono la compilazione e tutti)
  5. Anche se chiedi se sanno almeno formattare un'unità o installare il sistema operativo nel caso in cui si blocchi / non possa avviare l'installazione di fare affidamento sul responsabile IT per aiuto (questo è sapere se possono gestire correttamente una qualche situazione del sistema operativo)

Queste domande servono solo a scoprire la loro consapevolezza sul sistema che usano durante la programmazione,

    
risposta data 21.12.2011 - 20:02
fonte
0

Inizia dai livelli più bassi dello stack software e fino.

  1. Che cos'è il BIOS?
  2. Qual è il ruolo del sistema operativo?
  3. Che cos'è il multitasking? Che cos'è il collegamento dinamico?
  4. Descrivi come il codice sorgente viene trasformato in un programma funzionante per il linguaggio di scelta dello studente (esempio risposta per C: preprocessore - > compiler - > un gruppo di file oggetto - > linker - > eseguibile)
  5. Cos'è una cache? Stimare i tempi di accesso relativi alla cache L1, alla cache L2, alla RAM, al disco di rotazione (vale a dire, non SSD).
  6. Enumera le strutture di dati che potresti implementare senza consultare i dettagli in letteratura.
  7. Qual è il programma più complesso che hai scritto? Cosa lo ha reso complesso?
  8. Spiega la ricorsione su un esempio di tua scelta.
  9. Perché i programmi si bloccano?
  10. Spiega cosa è una sezione critica e fai un esempio dove verrebbe usata.
risposta data 20.11.2010 - 10:01
fonte
0
  1. È una stringa mutabile o immutabile?
  2. Qual è la differenza tra una classe e una classe statica?
  3. Che cos'è un puntatore?
  4. Descrivi la complessità.
  5. Qual è la differenza tra una matrice e una lista collegata.
  6. Qual è la differenza tra Merge Sort e Quick Sort?
  7. Dato un foglio di calcolo con colonne Nome, Indirizzo, Codice postale e Numero di telefono descrivi come convertire il foglio di calcolo in un database normalizzato.
  8. Descrivi le differenze tra i metodi asincroni e sincroni e i modi in cui devono essere gestiti.
  9. Come passare informazioni da un'applicazione lato server a un'applicazione web?
  10. Qual è la tua lingua preferita? Quali sono alcuni motivi per cui useresti quella lingua su X? (cioè perché vorresti usare Java su C # e quali sono alcune delle differenze fondamentali?)
risposta data 22.11.2010 - 16:27
fonte

Leggi altre domande sui tag