Il temuto test del colloquio di programmazione C # - qualche consiglio? [chiuso]


21

Ho un possibile lavoro di sviluppo C # in fila ma prima di poter intervistare, devo superare un test con l'agenzia di collocamento.

Ora, anche se sono uno sviluppatore senior con oltre 10 anni di esperienza di programmazione e più di 3 di questi anni con c #, non vedo davvero l'ora di questo test e penso che ci siano buone probabilità di fallire.

Nella mia esperienza, questi test sono imprevedibili e ti chiedono cose che usi raramente nelle situazioni lavorative quotidiane.

Ho bisogno del tuo miglior consiglio su cosa dovrei rivedere, ad esempio un buon libro o sito Web. Ho meno di 1 settimana per prepararmi ed è essenziale che passi questo.

Grazie in anticipo.

EDIT: Per giustificare ulteriormente le mie preoccupazioni di scrivere tali test - Considera la seguente domanda:

12) Un evento è:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

La risposta corretta secondo il test è A, ma da quando ho fatto lo sviluppo della SOA (spesso quando gli eventi possono essere basati su eventi di sistema (non azioni dell'utente) sono sicuro al 100% che un evento non debba essere guidato da un'azione dell'utente. Questa era anche una domanda C # (non una domanda ASP.net). In base alla mia comprensione, non sono riuscito a individuare una risposta corretta ma B sembra il migliore del lotto (se la definizione di party è: any entità che può scatenare un evento. Questo tipo di domande mi spaventa.


4
Se sei uno "sviluppatore senior" e utilizzi C # quotidianamente da tre anni, dovresti essere a posto. Questi test normalmente hanno lo scopo di eliminare quelle persone che non conoscono la lingua o i suoi usi. Se lo usi quotidianamente da 3 anni, dovresti aver incontrato quasi tutte le insidie ​​in un determinato test.
George Stocker,

11
@GeorgeStocker - in realtà, ho dovuto sostenere alcuni di questi test (rivolti più al framework .NET completo) ed erano molto dettagliati. Li ho trovati piuttosto difficili perché prima sono entrati in aree del framework (come WCF) in cui non avevo molta esperienza, inoltre dovevi sapere cose come quale opzione di configurazione avresti usato in un file .config per attivare qualche opzione oscura. Era roba che raramente ti preoccupavi di memorizzare perché probabilmente lo avresti usato solo una volta e Google in quello. Ho trovato l'esperienza un po 'frustrante.
Scott Whitlock,

7
Oh, e una delle domande che ho sbagliato era: "in VB.NET, qual è la parola chiave usata per dichiarare una struttura? A) strutt b) Struct c) struttura d) Structure". Stavo pensando "intellisense lo sa, quindi non devo!" Ora, ovviamente, la risposta è bruciata nella mia memoria.
Scott Whitlock,

17
@ScottWhitlock: non c'è modo di prepararsi adeguatamente per un colloquio mal progettato. Ad un certo punto devi fidarti che sono abbastanza competenti da chiedere e giudicare in base alle aree in cui affermi di specializzarti, così come alcune abilità concettuali. Se non lo sono, probabilmente avresti comunque un momento miserabile di lavoro per loro.
Aaronaught,

2
È un test del linguaggio C # o un test di .NET Framework?
Formiche

Risposte:


24

Anche se un po 'vecchio, forse questo post del blog è utile per te: cosa dovrebbero sapere i grandi sviluppatori .NET (altre domande di intervista .NET)

Tutti coloro che scrivono codice

  • Descrivere la differenza tra un thread e un processo?
  • Che cos'è un servizio Windows e in che cosa differisce il suo ciclo di vita da un EXE "standard"?
  • Qual è la quantità massima di memoria che può essere gestita da ogni singolo processo su Windows? È diverso dalla memoria virtuale massima per il sistema? In che modo ciò influirebbe sulla progettazione di un sistema?
  • Qual è la differenza tra un EXE e una DLL?
  • Che cos'è la tipizzazione forte rispetto a quella debole? Quale è preferito? Perché?
  • Il prodotto di Corillian è un "contenitore di componenti". Denominare almeno 3 contenitori di componenti forniti ora con la famiglia di server Windows.
  • Che cos'è un PID? In che modo è utile per la risoluzione dei problemi di un sistema?
  • Quanti processi possono essere ascoltati su una singola porta TCP / IP?
  • Cos'è il GAC? Che problema risolve?

Sviluppatore .NET di medio livello

  • Descrivere la differenza tra programmazione orientata all'interfaccia, orientata agli oggetti e orientata agli aspetti.
  • Descrivi cos'è un'interfaccia e come è diversa da una classe.
  • Che cos'è la riflessione?
  • Qual è la differenza tra i servizi Web XML che utilizzano ASMX e .NET Remoting utilizzando SOAP?
  • Il sistema di tipi è rappresentato da XmlSchema e CLS isomorphic?
  • Concettualmente, qual è la differenza tra associazione anticipata e associazione ritardata?
  • L'utilizzo di Assembly.Load è un riferimento statico o dinamico?
  • Quando sarebbe appropriato utilizzare Assembly.LoadFrom o Assembly.LoadFile?
  • Che cos'è un nome qualificato per assemblaggio? È un nome di file? Come è diverso?
  • È valido? Assembly.Load ( "foo.dll");
  • In che modo un assembly con un nome sicuro è diverso da un assembly che non ha un nome sicuro?
  • DateTimes può essere nullo?
  • Cos'è la JIT? Che cos'è NGEN? Quali sono i limiti e i vantaggi di ciascuno?
  • In che modo il garbage collector generazionale nel CLR .NET gestisce la durata degli oggetti? Che cos'è la finalizzazione non deterministica?
  • Qual è la differenza tra Finalize () e Dispose ()?
  • In che modo è utile il modello using ()? Cosa è IDisposable? Come supporta la finalizzazione deterministica?
  • Cosa fa questa utile riga di comando? elenco attività / m "mscor *"
  • Qual è la differenza tra in-proc e out-of-proc?
  • Quale tecnologia consente la comunicazione out-of-proc in .NET?
  • Quando si esegue un componente in ASP.NET, in quale processo è in esecuzione su Windows XP? Windows 2000? Windows 2003?

Sviluppatori / architetti senior

  • Cosa c'è di sbagliato in una linea come questa? DateTime.Parse (myString);
  • Cosa sono i PDB? Dove devono trovarsi per far funzionare il debug?
  • Cos'è la complessità ciclomatica e perché è importante?
  • Scrivi un blocco standard () più un "doppio controllo" per creare una sezione critica attorno a un accesso variabile.
  • Che cos'è FullTrust? Gli assembly GAC hanno FullTrust?
  • Quali vantaggi riceve il tuo codice se lo decori con attributi che richiedono autorizzazioni di sicurezza specifiche?
  • Cosa fa questo? gacutil / l | trova / i "Corillian"
  • Cosa fa questo? sn -t foo.dll
  • Quali porte devono essere aperte per DCOM su un firewall? Qual è lo scopo di Port 135?
  • Contrasto OOP e SOA. Quali sono i principi di ciascuno?
  • Come funziona XmlSerializer? Quali autorizzazioni ACL richiede un processo che lo utilizza?
  • Perché catturare (eccezione) è quasi sempre una cattiva idea?
  • Qual è la differenza tra Debug.Write e Trace.Write? Quando dovrebbero essere usati ciascuno?
  • Qual è la differenza tra una build Debug e Release? C'è una differenza di velocità significativa? Perché o perché no?
  • JITting si verifica per assemblaggio o per metodo? In che modo ciò influisce sul set di lavoro?
  • Contrasta l'uso di una classe base astratta con un'interfaccia?
  • Qual è la differenza tra a.Equals (b) e a == b?
  • Nel contesto di un confronto, che cos'è l'identità dell'oggetto rispetto all'equivalenza dell'oggetto?
  • Come si farebbe una copia profonda in .NET?
  • Spiega le idee attuali su IClonable.
  • Che cos'è la boxe?
  • La stringa è un tipo di valore o un tipo di riferimento?
  • Qual è il significato del modello "PropertySpecified" utilizzato da XmlSerializer? Quale problema tenta di risolvere?
  • Perché i parametri di out sono una cattiva idea in .NET? Sono loro?
  • Gli attributi possono essere posizionati su parametri specifici di un metodo? Perché è utile?

Sviluppatori di componenti C #

  • Accostare l'uso di override con new. Che cos'è l'ombra?
  • Spiega l'uso di virtuale, sigillato, override e abstract.
  • Spiega l'importanza e l'uso di ciascun componente di questa stringa: Foo.Bar, Version = 2.0.205.0, Culture = neutral, PublicKeyToken = 593777ae2d274679d
  • Spiega le differenze tra pubblico, protetto, privato e interno.
  • Quali sono i vantaggi dell'utilizzo di un gruppo interoperabilità primaria (PIA)?
  • Con quale meccanismo NUnit sa quali metodi testare?
  • Qual è la differenza tra: catch (Exception e) {throw e;} e catch (Exception e) {throw;}
  • Qual è la differenza tra typeof (foo) e myFoo.GetType ()?
  • Spiega cosa sta succedendo nel primo costruttore: public class c {public c (string a): this () {;}; public c () {;}} In che modo è utile questo costrutto?
  • Che cos'è questo ? Questo può essere usato con un metodo statico?

Sviluppatori ASP.NET (UI)

  • Descrivi come un modulo POST basato su browser diventa un evento lato server come Button1_OnClick ...

1
Ogni risposta elencata qui è stata utile e buona, tuttavia ho esaminato tutte le domande del tuo elenco (mi ci sono volute 4 ore) e ho scritto un test di esempio online e superato. Incoraggerei qualsiasi sviluppatore .net a rispondere a queste domande almeno una volta e assicurarsi di aver compreso le risposte e di ottenere la 2a e la 3a opinione. Molte persone rispondono alle domande (trovate su Google), ma molte delle risposte non sono a volte concise, anche sbagliate. Perciò stai attento. Controlla le risposte che trovi.
JL01

2
Buon collegamento! Sono sorpreso dal numero di quelli che conoscevo. this.Ego ++;
Justin Self,

@justnS: lo stesso è successo a me quando ho scoperto il post. :-)
Konamiman,

Sono andato a un colloquio un paio di settimane fa e mi hanno stampato questo per rispondere. quale per me, riflettuto sull'intervistatore.
dbones,

1
Quando aggiungerai le risposte? ;)
Thijs van Dien il

10

Vattene, Renee

Ho fatto test come questo un paio di volte. Ora vado via. I test misurano i pezzi più banali di conoscenza della programmazione. Vuoi lavorare per qualcuno che pensa che questi test siano un buon modo per valutare i programmatori? Io non.


1
Sono un buon metodo come standard minimo , vale a dire una condizione necessaria , ma non una condizione sufficiente .
Sklivvz,

4
@Sklivvz: forse, se fossero buoni test. La maggior parte dei test commerciali sono esercizi sciocchi nelle curiosità: "Quale classe useresti per leggere un file di testo?" Un buon sviluppatore potrebbe essere in grado di parlare per dieci minuti delle differenze tra i flussi di byte e i flussi di caratteri e i dettagli delle codifiche UTF, e ancora perdere questa domanda. Quando le informazioni sono facilmente accessibili, non ha senso memorizzarle.
Kevin Cline,

2
Sono d'accordo con Kevin. Ci sono troppe informazioni irrilevanti per il tuo lavoro che possono essere nei test. Ecco perché hanno inventato Google e IntelliSense - quando abbiamo bisogno di risposte, le troviamo, sulla base della necessità di usarla
ADNow

2
Dipende dal test. Ci sono test da cui mi sarei allontanato, ma poi ci sono test che sono buoni. Abbiamo un semplice test di 3 domande di programmazione. La prima domanda è scrivere una semplice app C #. Il secondo chiede di scrivere 5 semplici query SQL. Il terzo è una domanda a cui non è possibile rispondere senza che chi effettua il test richieda ulteriori informazioni. La prima e la seconda domanda escludono programmatori completamente incompetenti. Questo ci fa risparmiare tempo dall'intervista a persone che non valgono la pena. La terza domanda ci dà un'idea di come un programmatore si avvicina alla risoluzione dei problemi. Roba molto preziosa.
Pete,

8

Sono stato in una situazione come la tua l'anno scorso. Era passato così tanto tempo che ero stato in un'intervista che lo temevo. Ho cercato domande per le interviste in C # e ho trovato diversi siti (molti dei quali elencati dagli altri poster) e li ho studiati. Con mia grande sorpresa, il 90% delle interviste proveniva da quel sito, alla lettera . Immagino che anche gli intervistatori utilizzino Google per trovare domande :)


6

Sono totalmente d'accordo con te su:

i test sono imprevedibili e ti chiedono cose che usi raramente nelle situazioni lavorative quotidiane.

..ma fanno parte del processo, quindi non c'è niente che possiamo davvero fare al riguardo. Sono qualcosa come te con circa 10 anni di esperienza di cui circa 5 in .NET C #. Ho trovato questi che questi due libri MOLTO buoni:

C # in profondità

C # in breve

dovrebbe coprire tutto ciò che devi sapere su C #. Il resto sono le tue abilità e le tue abilità che acquisisci su tecnologie specifiche basate su C # come ASP.NET ecc.


3
ma fanno parte del processo, quindi non c'è nulla che possiamo davvero fare al riguardo. Che ne dici di sostenere di non avere stupidi test di programmazione sul posto di lavoro come parte del processo di assunzione? I processi di assunzione dovrebbero mostrare la tua competenza, non che tu possa memorizzare oscure curiosità.
joshin4colours,

@ joshin4colours - ecco perché credo nella buona vecchia lunga conversazione sull'intervista ... ma sono buoni per l'eliminazione
TheBoyan,

2
In realtà ho intervistato l' autore di uno dei libri e l' ho rifiutato ...
Sklivvz,

3

Questi test sono diventati sempre più parte dei candidati pre-screening da società di reclutamento professionali e alcune aziende. Sono progettati per offrire agli intervistatori non tecnici un modo per valutare le capacità tecniche di qualcuno. Tuttavia, sono essenzialmente solo test di curiosità che non diranno nulla di significativo sulle capacità di un programmatore se non quello di eliminare quelli che davvero non sanno nulla. Sfortunatamente, alcune aziende / recruiter danno troppa importanza a questi risultati.

Il modo di studiare per loro è trovare siti di domande di interviste, siti legittimi e non quelli che cercano di venderti le risposte, ricoperti di annunci popup o altre assurdità e riempire le risposte. In questo modo otterrai un punteggio decente e salterai oltre l'ostacolo. Se la società sta dando troppo peso a questi risultati, probabilmente non sono la migliore compagnia per cui lavorare comunque.


2

Se si tratta di un test dell'agenzia per l'impiego non dovrebbe essere così difficile. Non è che abbiano specialisti delle lingue per sviluppare il test. Molto probabilmente tutto ciò che faranno è copiare / incollare domande da un sito Web.

Fintanto che sai come funziona il framework in generale, e gli spazi dei nomi / le librerie più comuni per le attività, quali cose devi usare per determinate attività, dovresti essere buono.


2

Con i test di intervista, molto dipende dalla cultura aziendale e dal creatore del test. Se sono intenzionati a porre domande oscure e cercare di farti inciampare, passerei a un'altra azienda o agenzia che è più interessata a persone di alta qualità che sono intelligenti e possono fare il lavoro.

Detto questo, mentre usi c # nel tuo lavoro quotidiano, ti concentrerei sugli sforzi di risoluzione dei problemi e sulla logica e meno sul lato dell'apprendimento del libro delle cose.

Il Project Euler è un ottimo posto per esercitarsi e affinare le abilità che molto probabilmente sono diventate un po 'arrugginite.

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.