2009-07-07 8 views
29

Una domanda molto aperta. Ho programmato in C# per gli passati 5 mesi facendo piccoli progetti che ho completato con successo .Quale conoscenza di C# dovrei avere?

Oggi sono andato a un'intervista per un ruolo in C#. La prima domanda era "Parlami di boxe". Data la mia esperienza, non avevo idea di cosa intendesse il ragazzo. Inutile dire che l'intervista non è andata così bene. Altre domande erano 'perché non è consiglia di utilizzare un ArrayList di int', 'dimmi quello che sai di filettatura', ecc

Non voglio davvero che questo accada di nuovo, quindi sono pianificando di dedicare un po 'di tempo a leggere (ea esercitarsi) di più su C#. I capisco che il miglior modo di imparare è tramite la codifica ma la codifica non mi avrebbe davvero aiutato a rispondere alla domanda su 'boxing' ad esempio.

Non ti sto chiedendo di rispondere alle domande tecniche di cui sopra. In effetti, ora conosco la loro risposta mentre sono andato direttamente a Google dopo l'intervista ed è come ho capito che la mia conoscenza di C# è alquanto limitata.

La mia domanda è: secondo lei, quale conoscenza dovrebbe avere uno sviluppatore C# ? Idealmente sarebbe meglio se potessi categorizzarlo con (Conoscenza di base che chiunque dovrebbe possedere senza l'eccezione , Conoscenza avanzata, Conoscenza di esperti, ecc.). Non è necessario il per entrare nei dettagli. Fare ricerche su qualsiasi cosa tu elencherai sarà essere un buon esercizio per me.

+1

Non scrivere una risposta elaborata per questo, ma potresti essere interessato al seguente elenco di funzioni utili di C#, alcune delle quali sono leggermente sotto il radar: http://stackoverflow.com/questions/9033/hidden- features-of-c – mquander

+2

Dovrebbe anche taggare questo come soggettivo e considerare una wiki della comunità. Inoltre, sarei disposto a scommettere che l'intervistatore stava solo cercando di capire cosa tu sapessi contro ciò che non sapevi, invece di aspettarti di conoscerli dalla testa. Solo un'ipotesi però. –

+5

Se si desidera approfondire C#, si consiglia di leggere con precisione il titolo "C# in Depth". Ero il revisore tecnico; è eccellente. –

risposta

11
+4

Ho notato che questo è stato pubblicato nel 2005. È ancora rilevante? –

+0

È ancora rilevante per le funzionalità C# fino a C# 2.0 ... ma ovviamente non ti dirà nulla delle funzionalità C# 3.0 e 4.0;) –

+0

Questa è solo una raccolta di domande (senza le risposte corrette fornite) per controllare il tuo Conoscenza di .NET - come scegli di procedere da lì è la tua scelta. Se sei un principiante, non sarà di grande aiuto. BTW un tentativo di rispondere alla maggior parte delle domande di scelta può essere trovato qui: http://ayende.com/Blog/archive/2005/02/22/WhatAGreatNETDevelopersOughtToKnowAnswers.aspx – Josip

-11

Cinque mesi senza alcuna conoscenza della boxe? Mio caro, caro, ragazzo. Esiterei ad essere nella tua posizione Perchè, ricordo quei giorni alquanto in cui io, come te adesso, mancava anche una parte della conoscenza di base degli strumenti del mio mestiere. Ma, non disperare, ragazzo! Hai tempo e voglia di imparare. Lasciaci, immediatamente, dispensare alcune conoscenze che puoi usare per il tuo futuro beneficio! Huzzah!

Leggi CLR Via C# copertina a copertura. Prendi un libro di Linq (non posso consigliarlo in cima alla mia testa). Scrivi un'applicazione usando WPF (per l'xaml). Queste tre cose penso che ti daranno il più grande successo per il tuo dollaro in questo momento.

+6

Questo è un po 'duro, non è vero? È possibile aver usato un concetto senza sapere cosa sia, dopotutto. – Raithlin

+0

È uno dei principi fondamentali. Cinque mesi sono un tempo lungo per non ottenere la differenza tra riferimenti e tipi di valore. – Will

+0

concordato. È del tutto possibile capirlo in termini di upcasting e downcasting senza alcuna nozione di box. È solo una questione di terminologia. –

11

mi sarei aspettato che qualcuno di andare per un C# lavoro professionale da sapere su:

  • Generics e collezioni generici
  • Interfaces (generali)
  • Interfaces (specifici), vale a dire -
    • IDisposable: come è integrato nella lingua e perché
    • IEnumerable: inclusi i metodi di estensione comuni, i blocchi iteratori, un d esecuzione differita
  • Panoramica di serializzazione in .Net (forse non lo hanno fatto, ma capire che cosa è e sapere dove cercare nella gerarchia dello spazio dei nomi e documentazione)
  • Panoramica di XML in .NET (stesso come serializzazione)
  • Panoramica dei concetti di thread (come xml/serializzazione). Punti bonus per capire perché la maggior parte delle collezioni thread-safe non lo sono.
  • Hanno utilizzato delegati/lambda anonimi in almeno un progetto e quindi hanno anche un'idea di base sulle chiusure.
  • confortevole spiegare alcuni concetti di base da almeno una delle WinForms, WPF, webforms, o MVC
  • Essere in grado di rispondere ad alcune semplici domande su specifici classi comuni in .NET BCL: vale a dire dal System.Data (si pensi query parametrizzate!) e System.IO (filestreams, path).
  • Raccolta differenziata: quando si dovrebbe chiamare GC.Collect (suggerimento: praticamente mai) e perché
+0

È richiesta la conoscenza dei nuovi aspetti funzionali di C# per * qualsiasi * posizione di programmazione? La tua area deve essere a filo con i candidati. La maggior parte delle persone non ha esperienza lì. – quillbreaker

+0

No. Avrei bisogno di _awareness_ dello stato attuale della piattaforma. Principalmente voglio vedere un certo interesse per il continuo miglioramento personale e la conoscenza di ciò che è disponibile dagli strumenti disponibili. –

0

dipende anche il ruolo. Se questo è stato pubblicizzato come un ruolo di jnr, allora una domanda di threading è un po 'dura ... a volte agenzie/datori di lavoro hanno aspettative non realistiche.

7

La mia esperienza personale da molto tempo fa quando ero a scuola.

Sono andato a vedere mio padre al lavoro in una banca. A quel tempo, la maggior parte della sua giornata si occupava dei conti e si assicurava che ogni cosa funzionasse. Quello che ho visto era che stava cercando di calcolare/calcolare grandi numeri e calcolare (aggiunte/moltiplicazioni di base ...).

Dopo averlo notato, gli ho chiesto: papà, se tutto quello che devi fare è aggiungere e moltiplicare di base, perché preoccuparsi di studiare fino alla laurea?

La sua risposta è stata: mentre non è necessario utilizzare tutte le conoscenze acquisite, tale conoscenza potrebbe aiutarti a prendere decisioni apprese.

Venendo alla tua domanda: mentre non devi usare l'intera serie di concetti, sapendo che esistono ti aiuteranno a prendere buone decisioni mentre codifichi.

Il mio suggerimento insieme agli altri postati sarebbe quello di provare a passare un po 'di tempo sullo stackoverflow ogni giorno.

Buona fortuna.

0

Una cosa simile è successo al mio altro significativo che ha fatto un esame di guida. La truppa di stato ha detto "fai una rotonda" e non sapeva di cosa stesse parlando. Entrambi pensiamo che una rotonda sia un tipo di tracciato stradale con un grande cerchio, non un inversione di marcia come intendeva l'istruttore. Quindi so cosa intendi.

Le interviste di lavoro di programmazione variano molto. Alcune persone pensano che in un colloquio non si possa davvero giudicare un programmatore e sono disposti a dare a chiunque riesca a dare una buona impressione. Altri sono estenuanti cose che passerebbero solo quelle troppo qualificate per la posizione, e probabilmente rimarrete sorpresi dalla frequenza con cui ricevete una chiamata da quelli.

2

avrei dovuto dire che se un intervistatore può essere ingannato a pensare che qualcuno ha più NET/C# esperienza da lui o lei in visita una pagina web, quindi la l'intervistatore sta fallendo. Ho intervistato personalmente un certo numero di persone, e mi piace molto l'approccio di dare loro un problema facile da capire da risolvere e chiedendo loro di scrivere del codice su una lavagna bianca. Anche se hanno memorizzato le risposte a tutte le domande sul blog di Scott Hanselman, vorrei imparare molto su quanto sono confortevoli nella lingua e su come risolvono i problemi. Sto cercando uno sviluppatore, non un partner per Trivial Pursuit, .NET Developer Edition.

Detto questo, al passo con i blog come Hanselman di è un modo fantastico per tenere il passo con il gergo. È possibile codificare C# nel vuoto per anni, comprendere appieno il vantaggio di una lista fortemente tipizzata <int> su ArrayList, ma mai effettivamente utilizzare il termine "boxing". Ma richiede molto più tempo in un'intervista per chiedere: "Descrivi il vantaggio di iterare attraverso un elenco <int> invece di un ArrayList di int", piuttosto che chiedere, "Parlami del pugilato." Inoltre, la ricerca delle risposte alle domande di intervista su .NET di Hanselman (soprattutto se si esplorano i dettagli e si chiede "Perché?") Diventerà uno sviluppatore migliore. Quindi, assolutamente, continuando a leggere Hanselman.

E un'altra nota ... Se chiedo a qualcuno se una stringa è un tipo di riferimento o di un tipo di valore, e semplicemente dire "Hmmm ... Tipo di riferimento," Non ho intenzione di essere quasi felice come vorrei se la risposta fosse, "Hmmm ... Tipo di riferimento, ma questa è una domanda interessante." "Perché è così?", Dico ... "Perché la stringa è implementata in modo che la stringa sia immutabile, permettendoti di fare le cose con esso come usarla tranquillamente come chiave di hash o passarla a un metodo, conoscendo il valore non può essere cambiato, quindi in un certo senso, le stringhe possono comportarsi molto come i tipi di valore ... "E sarebbe una bella conversazione, che mi porta a chiedere:" Allora dimmi di più sul perché le chiavi di hash dovrebbero essere immutabili ... "

non è solo la differenza tra rispondendo a una domanda 50/50 correttamente e tutte le informazioni supplementari nella seconda risposta. Avere una conversazione intelligente con un intervistato mi porta a pensare che avrò conversazioni intelligenti del genere su base regolare una volta che l'intervistato diventerà il mio collega.Ed è qualcosa che sto sicuramente cercando.

4

Un buon intervistatore non ti licenzierà per curiosità. Ecco perché abbiamo Google. Un buon intervistatore troverà delle aree che non conosci e ti farà delle domande lì, dato che è il posto migliore per scoprire come reagisci di fronte a qualcosa che non ti piace.

Il miglior consiglio che posso dare per le interviste è di non preoccuparsi troppo della curiosità tecnica. Invece, in un'intervista, concentrati sulle capacità di risoluzione dei problemi. Se non sai qualcosa, non provare a nasconderlo, ammettilo. Se pensi di sapere, va bene dire "Non ne sono sicuro, ma penso che sia così". E non lasciarti abbindolare - a quel punto, di solito l'intervistatore ti darà un suggerimento. Questo non ti dà solo la risposta, è un'altra parte del test - per vedere se, dato un colpo nella giusta direzione, puoi estrapolare da lì.

Per le domande boxing/ArrayList/int, se stavo intervistando e non capivi il pugilato, ti darei una descrizione di base di ciò che ha fatto la boxe. Poi ti chiederei, sapendo cosa ti ho appena detto, perché potresti pensare di usare gli ints in una lista di array potrebbe essere una cattiva idea.

Una cosa che andrà lontano in qualsiasi intervista si concentra sui requisiti, il risultato desiderato e condizioni limite o casi limite. Come la maggior parte delle domande di intervista di programmazione rientrano nella categoria "scrivere questo metodo", assicuratevi di avere il seguente corretta:

1) Gli ingressi al metodo 2) Il risultato atteso del metodo 3) casi limite e bordo .

Questo suona incredibilmente semplice, ma è incredibile come molti sviluppatori, anche quelli con esperienza, non si preoccupino di pensare a queste cose. Il codice risolve un problema: se non si capisce correttamente il problema, non è possibile risolverlo correttamente.

Problemi correlati