Quali sono le abilità OO più importanti da mettere in mostra nella caccia al lavoro? [chiuso]

3

Sono nel mercato per un nuovo impiego e ho trovato una posizione in cui mi hanno chiesto di creare un campione di programmazione basato su un incarico. Ho fatto esplodere il campione cercando di farlo rapidamente una notte, e sono stato rifiutato - solo per avere una seconda possibilità di recente.

La preoccupazione era che non avessi realmente dimostrato la conoscenza orientata agli oggetti. Ho ripensato il mio approccio, ma immagino che valga la pena chiedermelo: se assumi qualcuno per una posizione OO, quali competenze vorresti vedere per dimostrare di avere una solida padronanza?

Voglio essere sicuro che mi manchi qualcosa di importante questa volta.

    
posta Kat 10.03.2012 - 17:07
fonte

4 risposte

10

Quando intervengo le persone cerco persone che produrranno soluzioni che saranno estensibili e mantenibili per tutta la durata della loro vita. Come le mappe di OO sono collegate alle domande che chiedo quando intervisto.

Comincio con le domande sulla lingua. Hai familiarità con tutti i costrutti e le sottigliezze del linguaggio (principalmente C #). Se passi che passiamo ai pattern.

Potrebbe sembrare una strana scelta andare su schemi prima dei principi OO, ma mi dà la possibilità di esplorare la loro esperienza in diverse aree. Modelli dell'interfaccia utente, modelli aziendali, pattern GoF, ecc. Questo includerà alcuni princìpi OO, come è possibile descrivere alcuni, se non più, come modelli. SOLID è importante per me, D è il principio di iniezione di dipendenza, questo è uno schema. quindi è un bel segway per ...

Come strutturare le applicazioni per la manutenibilità, l'estensibilità e la testabilità. È una discussione abbastanza aperta, so cosa sto cercando e dirigo la discussione. Non credo che il codice legacy debba diventare una pietra miliare al collo, quindi voglio sapere come strutturare il codice in un modo che lo renda vero.

La cosa più importante è che per tutto il tempo non chiedo solo a COME, chiedo PERCHÉ. Perché è una domanda molto usata nelle interviste che trovo.

    
risposta data 10.03.2012 - 17:59
fonte
2

Quelli che risolvono elegantemente il problema che pongono nell'intervista.

Non si preoccupano delle tue abilità OO (beh, a loro importa alcuni ). Ciò a cui si preoccupano è che puoi risolvere i loro problemi. Se hai inserito settimane di lavoro di 105 ore, dovresti comunque conoscere OO.

Il problema non è analizzare le abilità OO che vogliono vedere, è abbastanza disciplinato da mostrare loro il tipo di soluzioni di cui hanno bisogno (qualunque sia l'aspetto).

In altre parole, non mostrare loro l'ereditarietà se l'esempio di programmazione richiesto non lo richiede.

    
risposta data 10.03.2012 - 17:26
fonte
-2

Consentitemi di aggiungere alcune delle mie domande OOP preferite.

Di solito, comincio con una semplice domanda e procedo da lì a seconda dell'abilità del candidato.

Come qualcuno ha detto, le domande più importanti sono COME e PERCHÉ e scelgo gli argomenti seguenti per chiederli!

1.How to choose between Abstract Class and Interfaces

Inizia con la differenza, quindi chiedi alle Q in una situazione di progettazione che userete? . L'obiettivo è verificare la conoscenza dell'uso corretto di entrambi.

2.How to choose between inheritance and Composition?

Qui il candidato dovrebbe essere in grado di distinguere le relazioni has-a, is-a . E dovrebbe essere in grado di scegliere quello giusto nella situazione data.

3.Can you be the compiler and JRE

Ho questo semplice snippet di codice;

class A {

}

class B extends A {

}

Da quanto sopra, comincio con il codice seguente,

A a = new B();
B b = new A();

Qui ci sono molte domande come quali di loro verranno compilate? PERCHÉ? PERCHÉ NON? Cosa possiamo fare per compilare ciò che accadrà in fase di esecuzione.

Quindi, nello stesso esempio, aggiungi metodi in entrambe le classi e puoi passare al metodo di override e sovraccarico ecc.

Come ho detto all'inizio, questi sono solo titoli, puoi approfondire tutti questi argomenti.

    
risposta data 11.03.2012 - 14:34
fonte
-4

Immagino che alcune delle poche cose che devi dimostrare siano:

  • Comprendi il problema
  • Design di buona classe
  • Utilizza i modificatori di classe appropriati, preferisci nascondere le informazioni
  • Utilizza le caratteristiche come ereditarietà, classi astratte, interfacce corrette se possibile
  • Preferisci i generici sugli elenchi non tipizzati
  • Utilizza la gestione delle eccezioni
  • Crea una buona (e semplice) architettura di almeno 2 livelli
  • Utilizza le costanti anziché le proprietà con valori letterali quando applicabile
  • Organizza il tuo codice in spazi dei nomi e cartelle
  • Utilizza standard di denominazione validi
  • Sii sensibile all'uso dei tipi statici
  • Sicurezza del codice
  • Convalida gli input
  • Nascondi stringhe di connessione
  • Fornire, se possibile, le opzioni di configurazione
  • Fornisci funzionalità di guida anche se non completamente implementate in questa versione
  • Prepara il documento per requisiti, architettura, diagramma di classe e altra documentazione il più possibile
  • Includere eccezioni per i metodi non codificati, se presenti (nel caso non si abbia tempo per loro)
  • Progetta il tuo database bene
  • Tentativo di creare una buona GUI
risposta data 10.03.2012 - 17:31
fonte

Leggi altre domande sui tag