Domande a cui ogni buon sviluppatore .NET dovrebbe essere in grado di rispondere? [chiuso]


246

La mia azienda sta per assumere sviluppatori .NET . Lavoriamo su una varietà di piattaforme .NET: ASP.NET, Compact Framework, Windowsforms, Web Services. Vorrei compilare un elenco / catalogo di buone domande, una sorta di standard minimo per vedere se i candidati hanno esperienza. Quindi, la mia domanda è:

Quali domande pensi che dovrebbe essere in grado di rispondere un buon programmatore .NET ?

Lo vedrei anche come una lista di controllo per me stesso, al fine di vedere dove sono i miei deficit (ce ne sono molti ...) .

testo alternativo

* AGGIORNAMENTO: Vuole chiarire che non stiamo testando solo le conoscenze di .NET e che le capacità di risoluzione dei problemi e le capacità generali di programmazione sono ancora più importanti per noi.

Risposte:


171

Le domande di base includono:

Penso che di solito sia utile chiedere ai candidati di completare un semplice esercizio di codifica come:

  • Scrivi la tua classe di elenco collegata senza utilizzare le classi integrate.
  • Scrivi la tua classe hashtable senza usare le classi integrate.
  • Scrivi una classe che rappresenta un albero binario. Scrivi un metodo che attraversa tutti i nodi dell'albero.
  • Scrivi un metodo per eseguire una ricerca binaria su un array senza usare i metodi integrati.
  • Disegna uno schema di database per un blog. Ogni utente ha un solo blog, ogni blog ha molte categorie, ogni categoria ha molti post e ogni post può appartenere a più di una categoria. Chiedere al richiedente di scrivere domande per estrarre informazioni specifiche.

Successivamente, cerca il know-how tecnico specifico:

  • (Gestori eventi) Crea una classe con un gestore eventi personalizzato, crea un'altra classe che si aggancia al gestore eventi personalizzato.
  • (XML) Carica un documento XML e seleziona tutti i nodi con le proprietà x, ye z.
  • (Programmazione funzionale) Creare una funzione che accetta un'altra funzione come parametro. Una funzione Mappa o Piega funziona davvero bene per questo.
  • (Riflessione) Scrivi una funzione che determina se una classe ha un attributo particolare.
  • (Regex) Scrivi un'espressione regolare che rimuove tutti i tag da un blocco di HTML.

Nessuna di queste sono domande particolarmente difficili a cui un abile programmatore C # può rispondere e dovrebbero darti una buona idea dei punti di forza dei tuoi candidati. Potresti anche voler lavorare su alcune domande / esempi di codice che fanno uso di schemi di progettazione specifici.

[Modifica per chiarimenti] :

Sembra che molte persone non capiscano perché dovrei fare questo tipo di domande. Permettetemi di toccare alcuni commenti di alcuni popoli (non sto citando direttamente, ma parafrasando):


D: Quando è stata l'ultima volta che qualcuno ha usato volatili o riferimenti deboli?

A: Quando do interviste tecniche, cerco di capire se una persona comprende le funzionalità di alto e basso livello di .NET. Volatili e riferimenti deboli sono due funzionalità di basso livello fornite da .NET - anche se queste funzionalità non vengono utilizzate spesso in pratica, le risposte a queste domande sono estremamente rivelatrici:

  • Una buona conoscenza dei volatili dimostra che una persona comprende come le ottimizzazioni del compilatore cambiano la correttezza del codice, in che modo i thread mantengono copie locali dello stato condiviso che possono non essere sincronizzate in un dato momento ed è minimamente consapevole di alcune complessità del codice multithread .

  • Una buona comprensione dei riferimenti deboli dimostra che una persona conosce i dettagli intimi del Garbage Collector e come decide quando liberare memoria. Certo, potresti chiedere ai candidati "come funziona un garbage collector", ma chiedere riferimenti deboli ottiene una risposta molto migliore e più ponderata.

.NET è un linguaggio abbastanza astratto, ma gli sviluppatori stellari hanno quasi sempre una conoscenza approfondita del CLR e dei dettagli di basso livello del runtime di .NET.


D: Perché qualcuno dovrebbe implementare la propria lista hash o collegata?

A: Non sto insinuando che la classe del Dizionario sia inferiore o che le persone debbano tirare la propria tabella hash. Questa è una domanda di base che verifica se una persona ha una conoscenza minima delle strutture dati. Ecco a cosa servono queste domande: comprensione minima.

Apprendi questi hashtable e questi elenchi collegati il ​​primo giorno di Data Structures 101. Se qualcuno non può scrivere da zero un elenco hashtable o collegato, allora ha un enorme divario nelle loro conoscenze tecniche.


D: Perché queste domande sono così orientate al greggio?

A: Perché il titolo di questo thread è "domande che ogni buon sviluppatore .NET dovrebbe conoscere". Ogni sviluppatore .NET inizia la propria carriera scrivendo app crude e il 90% di tutte le persone che si occupano dello sviluppo di applicazioni si occupa di applicazioni line-of-business.

Penso che nella maggior parte dei casi le domande che testano una conoscenza delle app line-of-business siano appropriate, a meno che tu non stia cercando sviluppatori in nicchie molto specifiche, come sviluppo di compilatori, sviluppo di motori di gioco, dimostrazione di teoremi, elaborazione di immagini, ecc. .


8
Penso che la tua lista sia un buon modo per sondare i punti di forza e di debolezza ma non è una conoscenza "di base". Come sottolinea Greg, sono stato inciampato da operatori "in cortocircuito" anche se sono semplici e li uso spesso: avevo appena dimenticato il nome. Questo mi squalificherà?
Mark Brittingham,

33
Allo stesso modo, non ho mai dichiarato una variabile "Volatile" e faccio molto poco con XML e quindi non ho potuto completare l'attività di programmazione. Eppure, sono un autore pubblicato, ho vinto un importante concorso di programmazione e ho scritto 4 prodotti di successo che hanno vinto importanti premi.
Mark Brittingham,

24
Pertanto, non sono necessariamente in disaccordo con il tuo elenco, ma non sono d'accordo con la tua caratterizzazione degli elementi della conoscenza come "Di base". Nessuno dei concetti è difficile , ma alcuni sono abbastanza specifici e non saranno familiari a un buon numero di candidati. Ancora - ancora - per favore, accetta le mie scuse.
Mark Brittingham,

39
La metà degli articoli in questo elenco sono domande trivia. Questo non aiuterà a trovare brave persone, ma potrebbe infastidire alcuni di loro abbastanza da lasciar perdere l'intervista.
Jason Kester,

15
(Regex) Write a regular expression which removes all tags from a block of HTML.- I
SMELL

135

Ho trovato queste liste su Scott Hanselman 's blog :

Ecco cosa penso siano le domande più importanti di questi post suddivisi in categorie. Li ho modificati e riorganizzati. Fortunatamente per la maggior parte di queste domande c'è già una buona risposta su Stack Overflow. Segui i link (li aggiornerò tutti al più presto) .

Domande .NET indipendenti dalla piattaforma

ASP.NET


8
Conosco sviluppatori che sanno tutto questo e non riesco ancora a vedere oltre il libro. Open-Minded è molto importante, inoltre, non cercare di ottenere troppe risposte dettagliate, ma assicurati solo che comprendano il concetto.
Saif Khan,

Sono d'accordo, Saif. D'altra parte, se non conosci i dettagli, non sarai in grado di applicare correttamente i "concetti".
splattne il

2
Alcune domande sono davvero stupide, come la differenza tra Debug e Release build. Sì, Visual Studio ha predefinito alcune configurazioni di build ma questa non è una domanda indipendente dalla piattaforma. Qualcuno che compila dalla riga di comando o usando Mono, potrebbe non avere idea di cosa stai parlando.
Lubos Hasko,

3
Sei in grado di descrivere concetti che di solito richiedono 2 pagine o anche un capitolo di un libro, in modo articolato in una situazione di intervista. Non posso senza provarli in anticipo
Chris S,

1
Cerca di non chiedere alle persone di definire termini. Ti ritroverai con le major CS che dovevano memorizzarle per i test, ma perdere persone che sanno davvero come programmare. Ricordo che una volta mi fu chiesto quale fosse il "differimento". Non avevo il primo indizio, anche se allora l'ho fatto 30 volte al giorno.
Jason Kester,

94

Questo potrebbe non essere quello che vuoi sentire, ma consiglierei di non concentrarsi su tecnologie ristrette, ma su capacità generali di programmazione e di risoluzione dei problemi. Gli sviluppatori solidi possono imparare tutto ciò che vuoi che facciano rapidamente.

Io, ad esempio, non sono un ragazzo del Compact Framework, quindi potrei fallire la tua intervista se andassi in quella direzione. Ma se avessi bisogno di usarlo, potrei fare qualche ricerca ed entrare subito.

Il libro di Joel, Smart and Gets Things Done , offre ottimi consigli per l'assunzione di sviluppatori e ci sono ampie sezioni succose sul tipo di domande da porre. Lo consiglio vivamente.


Forse parte del processo di assunzione dovrebbe essere un problema in Cardspace o qualcosa che non hanno mai visto !!
Jennifer,

Forse, ma c'è il problema della ricerca, quindi penso che potrebbe essere ingiusto. Sono più interessato a vedere come pensano attraverso i problemi e forse a vederli codificare qualcosa di astratto in modo da poter scoprire se parlano in modo nativo o meno.
Brian MacKay,

Se potessi scegliere due persone che hanno entrambe competenze generali di programmazione e di risoluzione dei problemi, per motivi pratici DEVO scegliere quella con una migliore conoscenza ed esperienza .NET.
splattne,

Conoscenza .NET sicuramente, ma quando si tratta di tecnologie più ristrette penso che tu possa andare con il programmatore con le capacità di problem solving.
Jennifer,

5
Sì, tutti dobbiamo conoscere tonnellate di "tecnologie ristrette". Ma per tutti quelli che conosciamo, ci sono un gruppo che non conosciamo (di solito perché non ne abbiamo avuto bisogno). Sto dicendo che non vuoi perdere un grande sviluppatore per non conoscere SharePoint, perché molto presto potrebbe essere il tuo miglior ragazzo di SharePoint.
Brian MacKay,

66

Penso che se fossi intervistando qualcuno che aveva esperienza di LINQ, avrei forse solo chiedere loro di spiegare LINQ. Se riescono a spiegare l'esecuzione differita, lo streaming, le interfacce IEnumerable / IEnumerator, foreach, blocchi iteratore, alberi delle espressioni (per punti bonus, comunque) probabilmente possono far fronte al resto. (Devo ammettere che potrebbero essere sviluppatori "ok" e non "ottenere" ancora LINQ - sto davvero pensando al caso in cui hanno affermato di conoscere abbastanza LINQ da renderlo una domanda equa.)

In passato ho posto alcune delle domande già elencate e alcune altre:

  • Differenza tra tipi di riferimento e tipi di valore
  • Passa per riferimento vs passa per valore
  • IDisposable e finalizzatori
  • Stringhe, immutabilità, codifica dei caratteri
  • Virgola mobile
  • I delegati
  • Generics
  • Tipi nullabili

1
Sì, volevo vedere questo tipo di risposta. Buon candidato per essere accettato. Qualcuno di meglio?
splattne,

5
@splattne: non essere sciocco, questa è una risposta di Jon Skeet, quindi accettala. È inevitabile
Steven A. Lowe,

3
Stavo per dire ... wt ... non metti in discussione Skeet!
Saif Khan,

1
Questa è una risposta molto migliore di quella accettata. Ti aiuta a capire se qualcuno ha una conoscenza approfondita in un'area di presunta competenza e allo stesso tempo sondare la conoscenza delle funzionalità linguistiche che eseguono una gamma abbastanza ampia.
Mark Brittingham,

1
Questa risposta batte i pantaloni del "progetta la tua lista collegata," analizza HTML con regexp ", o" Quanto sai dell'Assemblea, GAC, ecc ... "perché affronta gli strumenti e i concetti che avresti effettivamente utilizzare durante lo sviluppo. Anche la conoscenza intima di LINQ è essenziale. Ho visto molti casi in questo sito in cui le persone stanno cercando di distribuire la propria versione di Union Distinct e Concat per le raccolte perché non capiscono LINQ.
Evan Plaice,

42

Sono con i ragazzi che sono alla ricerca di capacità di risoluzione dei problemi piuttosto che del genere di cose che puoi cercare e memorizzare da "101 domande e risposte su interviste .NET di alto livello".

Solo per citare me stesso come esempio, tendo a "conoscere" le cose che devo usare di giorno in giorno. Tendo a dimenticare (e in seguito devo cercare di nuovo) le cose che uso raramente.

Se volessi farmi inciampare in un'intervista, sarebbe molto facile.

Tuttavia, ho progettato e codificato gran parte dell'infrastruttura per un sistema che utilizza identici livelli Business Objects e Data per le sue incarnazioni WinForms e ASP.NET, e la nostra base di codice è abbastanza solida e riutilizzabile da consentirci di supportare e sviluppare oltre 20 versioni diversamente configurate del sito Web, nonché un numero crescente (attualmente 5) dell'applicazione WinForms ...

... con un team di sviluppo di due.

Lavoravo in team come responsabile tecnico e il mio lavoro comportava parecchie assunzioni e interviste. Il mio errore più spettacolare è stato quello di assumere un ragazzo che sapeva di più sulla tecnologia che stavamo usando di tutti gli altri messi insieme, incluso me, e mi sono considerato un esperto. Sapeva tutto ...

... tranne come scrivere codice che soddisfacesse i requisiti o che possa essere compreso da chiunque tranne se stesso. Quando alla fine persuasi il PM a non rinnovare il suo contratto, ogni singola cosa che scrisse doveva essere riscritta.

Struttura saggiamente le tue interviste ...


1
È un'osservazione davvero interessante. Abbiamo avuto la situazione opposta: una piccola cricca di sviluppatori che conosceva meno degli altri ma che ha convinto il management di sapere di più. Mi hanno proposto una classe di astrazione dei dati che ho ritenuto impossibile (sono stato criticato per non essere un "giocatore di squadra").
Mark Brittingham,

-continuato - dopo 4 mesi di lavoro "skunk works" hanno presentato al team .... i loro documenti di trasferimento in un altro reparto - e NESSUN codice. Il resto della squadra ha dovuto raccogliere i pezzi.
Mark Brittingham,

1
In conclusione, mi piace molto la tua osservazione secondo cui la conoscenza specifica dei costrutti di codifica non è una garanzia della capacità di creare software funzionante che soddisfi le esigenze dei clienti.
Mark Brittingham,

34

Chi è Jon Skeet?


11
O meglio: sei Jon Skeet? ;-)
splattne il

questa è in realtà una buona domanda per le posizioni C #. Considerando che Jon Skeet ora possiede ricerche stackoverflow / google relative a C #. Se ormai non sai chi sia, o sei Jon Skeet o non stai programmando in C #.
Lubos Hasko,

2
Senza offesa per Jon Skeet - ma penso che Rick Strahl tende a presentarsi con le risposte più frequentemente per i tipi di problemi che incontro.
Andrew Theken

1
@ [Andrew Theken]: giocherò le percentuali su quello ;-) google per "Rick Strahl" produce 38.500 successi, "jon skeet" produce 144.000. Inoltre, Rick Strahl non pubblica su SO AFAIK.
Steven A. Lowe,

1
entrambi i ragazzi sono bravi in ​​quello che fanno ... il nostro guadagno.
GR7,

33

Le buone domande che mi sono state poste sono

  • Cosa pensi sia buono di .NET?
  • Cosa pensi sia negativo di .NET?

Sarebbe interessante vedere che cosa farebbe un candidato e sicuramente imparerai un po 'su come usa il framework.


18

Cercherei sempre da solo le soft skills - nessun gioco di parole inteso. Quindi un buon design OO, sviluppo test-driven, un buon background multilingue (di programmazione) e un'intelligenza generale a tutto tondo (e le cose da fare immagino!).

Uno sviluppatore intelligente non dovrebbe avere problemi ad apprendere le singole tecnologie che è necessario conoscere anche se non le hanno mai esaminate prima, quindi non mi preoccuperei troppo di domande specifiche relative al framework WCF / compatto e simili.

Vorrei che scrivessero del codice - il modo migliore per scoprire cosa sanno e come funzionano. Chiunque può memorizzare la risposta in "Qual è la differenza tra un tipo di riferimento e un tipo di valore?"


2
Spot on. Fare domande automatiche è chiedere problemi. La compagnia per cui lavoro fa la vecchia domanda tecnica ma soprattutto è: ho questi problemi, ecco una lavagna, mi mostra come li risolveresti. Spaventoso ma efficace.
Chris Brooks,

4
... ma se non li risolvi come si aspetta l'intervistatore, fallisci.
gbjbaanb,

1
@gbjbaanb a volte. Ma in tal caso potresti non voler lavorare lì comunque. Ricorda, stai intervistando anche la compagnia. Ho conosciuto alcune aziende che hanno fallito l'intervista!
Tony Ennis,

13

Onestamente?

"Che cos'è .NET?"

Se possono darti una risposta chiara su cosa sia .NET e cosa non è, come viene utilizzato, di quali elementi è composto, ecc ... Se riescono a convincerti di sapere cos'è, allora è probabile che lo siano lo so abbastanza bene.

Il fatto è che molte persone non sanno davvero cosa sia .NET. Anche quelli che scrivono programmi per questo.


11

Nessuno, davvero. Probabilmente ci sono domande molto semplici a cui le persone più intelligenti del mondo non conoscono le risposte. Non perché sono difficili, ma semplicemente perché non l'hanno mai incontrato. Dovresti guardare l'intero pacchetto e l'abilità dello sviluppatore, non se possono rispondere a una domanda arbitraria.

Se la domanda è abbastanza facile da rispondere in una o due frasi brevi, è abbastanza facile dirlo a qualcuno che non lo sa. Dovresti cercare la loro comprensione dei concetti e la capacità di ragionamento, non la loro capacità di rispondere alle domande "ogni sviluppatore .NET dovrebbe essere in grado di rispondere".


10

Conoscere la differenza tra tipi di riferimento e di valore.

Sappi che gli eventi vengono memorizzati come riferimenti reali (ad esempio, ricorda di annullare la registrazione degli eventi o l'applicazione perderà la memoria).

Le stringhe sono immutabili.



4

Suggerisco di informarsi sui blog che leggono regolarmente e sui progetti di programmazione personale a cui hanno lavorato in quanto ciò mostrerà una volontà di apprendere e una passione per la programmazione.


3

Ecco alcuni che ho usato per filtrare i programmatori che fanno domanda per lavori come programmatori C #:

Qual è la differenza tra un tipo di riferimento e un tipo di valore?

Spiega l'interfaccia IDisposable, che il costrutto del linguaggio C # lo richiede e come lo implementeresti.

Quale eccezione lanceresti se un null viene passato come argomento a un metodo che ha un contratto che non consente null per quel parametro?


Il mio codice di solito generava una NullReferenceException.
Joshua,

5
@Joshua, ArgumentNullException hai fallito.
Nicolas Dorier,

3

"Quale degli ASP: quali controlli useresti mai in produzione e perché?"

Questo ti dirà rapidamente se il tuo soggetto ha mai effettivamente costruito e mantenuto un progetto di grandi dimensioni abbastanza a lungo da essere bruciato da DataGrids e LinkButtons, o se è ancora nella fase di "Insegnati in 21 giorni".

(la risposta è asp: Repeater, asp: PlaceHolder, asp: Literal e asp: Content)



2

Questa è una domanda un po 'variabile, e non proprio una a cui dovresti essere in grado di rispondere completamente ora, ma una a cui dovresti essere in grado di rispondere quando appropriato:

"Cosa offre .NET framework per eseguire l'attività X?"

O più specificamente:

"Il framework .NET include un oggetto con X?"

Ad esempio, di recente ho trascorso alcune ore a sviluppare un oggetto che è ottimizzato per archiviare un array di booleani e operarci su di esso, come ad esempio fare un NOT, OR, XOR, AND in termini di raccolta, impostare tutti i valori, ecc. Non era Fino a quando ho finito di scrivere tutti i miei test unitari e di modificarli per ottenere le migliori prestazioni possibili, ho realizzato che il mio oggetto "BoolArray" esisteva già nel framework .NET con il nome "BitArray".

Questo può essere difficile a cui rispondere poiché molte volte la migliore risposta su quale oggetto / aiutanti usare è quella che non conosci o non capisci completamente. Come sarebbe meraviglioso il mondo .NET se tutti conoscessero davvero anche il semplice StringBuilder, uno strumento di base che può aumentare le prestazioni in modo significativo.


2

Suggerirò alcune domande incentrate sulla comprensione dei concetti di programmazione usando dotnet like

Qual è la differenza tra ambiente gestito e non gestito? Pro e contro del GC Pro e contro del JIT Se dobbiamo sviluppare l'applicazione X possiamo usare dotnet? Perché? (questo identificherà come vede la dotnet)

Suggerisco anche di scrivere piccoli metodi e chiedergli di riscriverli con prestazioni migliori usando classi dotnet o metodi standard migliori. Scrivi anche metodi errati (in termini di qualsiasi) logici o altro e chiedigli di correggerli.


2

Sono un fan di quanto segue oltre ad alcune delle domande già menzionate:

  • Che cos'è un delegato?
  • Qual è il dominio dell'app?
  • Quando useresti la parola chiave lock?
  • Le classi di raccolta generiche della libreria standard sono sicure?
  • Che cos'è un metodo di estensione?
  • Qual è la differenza tra XmlDocument e XmlReader?
  • Come leggi le impostazioni di configurazione dal file di configurazione dell'applicazione?

2

Questo è interessante, e a rischio di essere votato in basso per aver messo la mia opinione, dato che sono sordo, fare una domanda del genere richiederebbe uno sforzo maggiore nel comunicare personalmente i miei pensieri da parte mia.

Per essere sinceri, non vorrei davvero leggere troppe domande tipiche, dato che il paradigma sottostante è ' Quanto riesci a vocalizzare i tuoi pensieri e la tua comprensione? ', è proprio quello che sta cercando l'intervistatore. Comunicare è sempre la mia più grande debolezza a causa di come sono e può essere frustrato abbastanza facilmente.

Sarebbe l'ideale avere la conoscenza ed essere il tipo di sapere tutto ma sfortunatamente, ci sono alcune cose che non so, ma non aver paura se in realtà non conosci la risposta e ammetti piuttosto che bluff attraverso esso. Se un intervistatore mi ponesse una domanda come una delle precedenti, di cui non sarei sicuro o fraintendere / interpretare male la domanda, la direi in anticipo, il che può essere personalmente imbarazzante, ma ho imparato a gestirlo.

Sareste sorpresi di quanti effettivamente si crogiolerebbero e blufferebbero attraverso di esso in cui alla fine della giornata vengono sorpresi metaforicamente parlando con i loro "pantaloni giù".

I miei 2 centesimi, i migliori saluti, Tom.


2

Un po 'di più:

  1. Classi parziali. E i suoi limiti?
  2. Classi sigillate
  3. Come si può fare la localizzazione in .NET?
  4. Connettività al database
  5. Vari file di configurazione
  6. Delegati vs eventi
  7. Accesso dll non gestito
  8. Riflessi
  9. Classi generiche
  10. Più caldo in .NET 3.5
  11. Framework di unit test che hai usato.

2

Non vorrei porre quelle domande "sapere qualcosa dal libro di testo", ma piuttosto chiedere alcune cose di armeggiamento come:

  • Cosa fa il ciclo foreach in C # semplice? (Aspettandosi che scriva un ciclo iteratore.)
  • Che cos'è un singleton?
  • Lascia che analizzi una stringa in Datetime (aspettandosi che utilizzi TryParse invece di try / catch)
  • Implementa i modelli singleton, di strategia e di comando
  • Lascia che sia Refactor un pezzo di codice per il test. Aspettandosi che lui / lei estragga i servizi esterni dall'Unità sotto Test e realizzi il proprio Test-double del servizio (fornendo nessuna struttura beffarda)

Questi non sono sicuri al 100%, a seconda della persona che posso chiedere loro:

  • lasciargli proteggere un metodo dall'input nullo (aspettandosi che utilizzi più ritorni per ridurre l'annidamento)
  • come funziona un inizializzatore di oggetti (aspettandosi che scriva il compito thread-safe)

Inoltre gli chiederei come ha imparato le sue cose e cosa sta leggendo (quali blog, libri).


1

Un po 'di più:

Quali sono i limiti della raccolta dei rifiuti.

Conoscere finalizzatori e IDisposable.

Essere consapevoli del pool di thread e quando usarlo.

Se stai utilizzando applicazioni GUI, tieni presente che la GUI di Windows è a thread singolo.

Usa foreach (vedo molte persone che fanno MoveNext ecc.)


1
Non lo sapevo, quindi ho cercato i limiti della raccolta dei rifiuti .
MSpeed

1

Penso che non dovrebbero essere solo domande, conosco alcuni ragazzi che sono geniali quando li intervisti, ma una volta arrivati ​​alla cosa reale sono troppo perfezionisti, direi che non riescono a codificare miseramente il compito.

Una volta sono stato intervistato e mi è piaciuto un po 'l'approccio in cui il primo datore di lavoro mi ha dato un questionario tecnico da compilare in 30 minuti. Se uno ha successo, verrà chiamato per un'intervista di 1 ora che copre domande sulla valutazione del personaggio e sul personaggio e gerghi tecnici.

Quindi mi è stato chiesto di sviluppare un'applicazione Web di tre pagine in 6 ore. I vincoli imposti nell'applicazione riguardavano in modo intelligente l'aspetto principale dello sviluppo di applicazioni come un piccolo ERD, Layerd Design, coerenza dell'interfaccia utente, controlla problemi specifici come l'utilizzo dei pulsanti di opzione in GridView e il recupero e la visualizzazione di tipi di immagini dal DB su una pagina Web, uno sviluppo dell'algoritmo, sicurezza, crittografia, hash, rappresentazione e manipolazione dei dati.

Quindi il giorno successivo hanno seguito una discussione di 30 minuti sull'applicazione sviluppata che copre le aree di collo di bottiglia delle prestazioni e miglioramenti sulla progettazione e sugli algoritmi utilizzati. E test opzionale di 1 ora per migliorare il tuo algoritmo sviluppato nel passaggio precedente con una condizione specifica.

Quindi ci è voluto un bel po 'di tempo, ma in questo modo puoi assicurarti che la persona che stai assumendo conosca almeno quei concetti che sono essenziali per essere un buon sviluppatore.


0

Preferirei dargli un problema e chiedergli di risolverlo utilizzando le funzionalità di .net che conosci e perché pensi che sia la soluzione migliore.

Ciò spezzerà quasi tutte le capacità di un candidato in termini di capacità tecniche, analitiche e di risoluzione dei problemi insieme al suo approccio per risolvere un problema.

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.