Concetti e interviste di programmazione orientata agli oggetti [closed]

4

Sono un fanatico della programmazione orientata agli oggetti. Ho sempre creduto nella modellazione di soluzioni in termini di oggetti. È qualcosa che mi viene naturale. Lavoro con l'avvio di servizi che funziona essenzialmente sullo sviluppo di applicazioni usando i linguaggi OOP. Quindi tendo a testare la comprensione dell'OOP nel candidato intervistato.

Per il mio shock, ho trovato pochissimi sviluppatori che hanno veramente capito l'OOP. La maggior parte dei candidati sputano senza enfasi le definizioni che hanno rubato da un libro accademico sulla programmazione orientata agli oggetti, ma non sanno cosa fare per quello che stanno dicendo. Inutile dire che rifiuto questi candidati. Tuttavia, nel corso del tempo, ho finito col rifiutare quasi il 98% dei candidati. Ora questo mi fa pensare se sono troppo critico sulle loro abilità OOP. Continuo a credere che l'OOP sia fondamentale e che ogni programmatore DEVE OTTENERLO. La conoscenza e l'esperienza linguistica sono secondarie.

Pensi di essere troppo critico o, per sfortuna, intervengo solo sui programmatori cattivi?

Modifica

Di solito intervengo i programmatori con 2-5 anni di esperienza. La posizione che intervengo di solito è lo sviluppatore di applicazioni Ruby / Ruby on Rails.

    
posta Chirantan 24.11.2010 - 06:24
fonte

8 risposte

11

non hai immaginato che OOP potrebbe non essere l'apice di tutta la conoscenza? ci sono sono altri modi di pensare, dopo tutto. Ancor di più, ci sono molti problemi là fuori dove OOP non è la migliore risposta.

    
risposta data 24.11.2010 - 06:28
fonte
2

OOP è solo un modo di codificare. Ci sono molte lingue di programmazione multi-paradigm che non hanno bisogno di OOP per funzionare. In effetti, devi anche vedere qual è la natura del lavoro. Ad esempio, gli analisti di sistema che fanno poca programmazione non possono conoscere OOP, ma fanno bene nel suo lavoro.

D'altro canto, c'è una prova (leggila da qualche parte, non ricordo dove - probabilmente sul blog Stack Overflow o Joel on Software) che ci sono molti laureati o matricole nel settore che difficilmente conoscono l'OOP o buone pratiche di programmazione. Queste persone sono probabilmente le pecore nere della tua squadra che codificheranno male, avranno una cattiva documentazione e una cattiva comprensione del codice.

    
risposta data 24.11.2010 - 07:56
fonte
2

Chi stai intervistando?

Se la risposta è appena uscita dalle scuole, allora è previsto. A scuola uno studente apprende molte nozioni teoriche sull'OOP e gli incarichi associati non sono abbastanza lunghi da far capire loro i vantaggi dell'uso di OOP rispetto a Procedural.

    
risposta data 24.11.2010 - 08:06
fonte
2

Disclaimer: non sono un grande fan di questo test. Ma devo ammettere che fallire è un'indicazione abbastanza buona che non conosciamo OO abbastanza da dire sul nostro curriculum che sappiamo OO.

Un piccolo esercizio che richiede solo pochi minuti per essere completato da qualcuno che conosce OO.

La domanda è: "Qual è l'output sul seguente codice?"

using System;

namespace Polymorphism
{
    class Animal
    {
        public void MakeSound() { Console.WriteLine("bip"); }
        public virtual void MakeSound2() { Console.WriteLine("bip"); }
        public void MakeSound3() { Console.WriteLine("bip"); }
    }

    class Dog : Animal
    {
        public void MakeSound() { Console.WriteLine("woof"); }
        public override void MakeSound2() { Console.WriteLine("woof"); }
        public new void MakeSound3() { Console.WriteLine("woof"); }
    }

    class Test
    {
        static void Main(string[] args)
        {
            Animal animal;
            Dog dog;

            animal = new Animal();
            dog = new Dog();
            animal.MakeSound();
            dog.MakeSound(); 

            animal = new Dog();
            animal.MakeSound();

            animal = new Animal();
            dog = new Dog();
            animal.MakeSound2();
            dog.MakeSound2();

            animal = new Dog();
            animal.MakeSound2();

            animal = new Animal();
            dog = new Dog();
            animal.MakeSound3();
            dog.MakeSound3();

            animal = new Dog();
            animal.MakeSound3();

            Console.ReadKey();
        }
    }
}

Oh e se sei un vero inferno, puoi aggiungerlo appena prima dell'istruzione Console.ReadKey(); :

    dog = new Animal();
    dog.MakeSound3();

E se l'essere un ate ole non è abbastanza, aggiungi questo:

    dog = (Dog)new Animal();
    dog.MakeSound3();
    
risposta data 24.11.2010 - 09:42
fonte
2

Vorrei rispondere alla sezione EDIT della tua domanda

I usually interview programmers with 2 to 5 years of experience.

Se un intervistato ha da 2 a 5 anni di esperienza, i fondamentali OOP sono una cosa che ci si aspetta e non penso che tu sia eccessivamente critico, ma solo avendo una ragionevole aspettativa.

    
risposta data 01.02.2012 - 06:11
fonte
1

Se hai intervistato un neolaureato, allora sei assolutamente troppo critico.

Penso che ciò che è importante per un neolaureato in relazione a OOP sia: conoscenza OOP medio-profonda, interesse per la programmazione e OOP, duro lavoro e qualche incarico per il college OOP. Alcuni neolaureati sono carenti di esperienza OOP in progetti di dimensioni medio-grandi. Quindi penso che una conoscenza media e l'interesse per l'OOP saranno sufficienti.

    
risposta data 24.11.2010 - 09:11
fonte
1
  • È importante scoprire quali altre competenze l'intervistato ha da offrire
  • Lavorando in un grande team di sviluppo software ho imparato di più in tre mesi, poi ho imparato in 2 anni in un'azienda più piccola. Penso che l'esperienza dovrebbe essere misurata in progetti di successo, piuttosto che anni.
  • È probabile che i laureati universitari ragionevoli rispondano alla maggior parte delle domande relative a OO, ma è probabile che abbiano poca o poca esperienza industriale da offrire.

A causa di questi punti, penso che potresti essere ipercritico con i tuoi intervistati.

    
risposta data 23.04.2012 - 00:35
fonte
0

Tra tutte le domande di intervista che hai letto là fuori, sono abbastanza sicuro che solo pochi erano un vero problema di OO e nel loro caso era probabilmente una semplice questione di provare fatti su OOP.

Chiamalo un sentimento personale, ma gli sviluppatori là fuori che sono più interessati al design del software probabilmente si sentono delusi dal fatto che non dovranno mai prendere una specifica astratta e perfezionarla in una soluzione di oggetti che comunicano con la nozione di soddisfare il requisiti delle specifiche.

Per la maggior parte dei candidati là fuori, abuseranno di ciò a cui è stato ridotto il sistema di interviste e generalmente si concentreranno sulla preparazione della struttura dei dati e delle implementazioni degli algoritmi.

    
risposta data 23.04.2012 - 01:44
fonte

Leggi altre domande sui tag