Cosa posso fare quando l'intervistatore non conosce la risposta alla sua domanda? [chiuso]


48

Ieri ho avuto una terribile esperienza in un'intervista.

L'intervistatore mi ha chiesto della pura funzione virtuale. Ho detto, può o meno avere una definizione nella classe base, ma le classi derivate dovrebbero fornire una definizione a meno che non vogliano anche essere una classe astratta.

Ma l'intervistatore continuava a chiedere che "Può la pura definizione virtuale avere !!! ???" ... Ho detto di sì.

Ancora una volta ha detto "Puro?"

Ho detto di sì. È consentito, le classi derivate possono chiamare esplicitamente quella funzione se vogliono quel comportamento particolare.

Mi ha mandato fuori. Sono sicuro che non sa che la pura funzione virtuale può avere una definizione.

Come affrontare questo tipo di intervistatori?

Dopo aver chiesto la seconda volta, dovrei mentire sul fatto che non può avere una definizione? :)

O dovrei attenermi alle mie parole e perdere l'opportunità di lavoro?


51
Dovresti contattarli con un esempio di pura funzione virtuale con una definizione, in modo che lo sappiano.
GManNickG

22
Il suggerimento di GMan è un'idea eccellente . Probabilmente impressionerai l'intervistatore che ti importava abbastanza del lavoro da seguire se ti crede o no. E se gli insegni qualcosa nel modo più non conflittuale possibile, questo dovrebbe incoraggiarlo a pensare meglio a te come sviluppatore. Comunque una decisione difficile se vuoi lavorare lì o no.
Cody Gray,

47
Ma vuoi davvero lavorare per queste persone?

29
Uno dei miei intervistatori mi aveva posto delle domande che riguardavano questa espressione arr[++i] = i. E quando ho detto che questo invoca un comportamento indefinito e gli parlava di punti sequenza , rimase senza parole per un momento, e poi la sua espressione facciale e le sue ulteriori domande mi fecero credere che non aveva mai nemmeno sentito questi termini prima!
Nawaz,

10
Considera che gli intervistatori sono spesso selezionati non per le loro abilità tecniche ma per la loro capacità di valutare i talenti comunicativi dell'intervistato. L'abilità tecnica è facilmente misurabile, la capacità di essere produttivi e in forma in una squadra non lo è. Mi sembra che tu abbia avuto molte opportunità di adattare il tuo punto di vista e di spiegare la tua insistenza a non farlo, ma non hai realizzato nessuno dei due. Non è andata bene.
Hans Passant,

Risposte:


82

No. E dovresti ringraziare le tue fortunate stelle per aver perso quel particolare proiettile. Lavorare per persone che si rifiutano di ammettere che potrebbero non sapere tutto e che rifiutano di imparare dagli altri, è un'esperienza MOLTO spiacevole.


7
Più precisamente, il processo del colloquio di lavoro funziona in entrambi i modi. Mentre la società mi giudica come dipendente, li sto giudicando come datore di lavoro. Molti sono trovati carenti.
SOLO IL MIO PARERE corretto

Infatti. Durante la mia intervista telefonica per una posizione qualche giorno fa, l'intervistatore ha chiesto un esempio di qualcosa che dimostrasse la conoscenza di qualcuno che conosce la lingua che sta usando. All'intervista di persona è stata aggiunta una domanda al riguardo all'ultimo minuto. Conosco questi ragazzi e so che sono grandi sviluppatori, quindi penso di voler lavorare con loro. :)
greyfade il

49

Esempio di una funzione virtuale pura con una definizione:

// object.hpp
struct object
{
    // virtual destructor, to allow use as a public base class,
    // but pure to ensure object itself isn't instantiated
    virtual ~object() = 0; 
};

inline object::~object()
{
    // empty implementation
}

6
Questo non è solo un esempio di una funzione virtuale pura con una definizione, ma un esempio di come può effettivamente essere utile. +1.
j_random_hacker

3
Non sapevo che potresti farlo. Freddo! = D
gablin

2
Questo è un modo per creare un oggetto polimorfico di base. È quindi possibile utilizzarlo per dynamic_cast nella gerarchia. Utile in alcune circostanze, ad esempio plugin, per verificare che il plugin sia del tipo previsto (con il presupposto che deriverà sicuramente dalla tua classe base). A proposito, un puro distruttore virtuale DEVE essere definito.
CashCow

Ora, se solo potesse essere ancora banale , sarebbe bello.
Deduplicatore,

42

Il problema in questione non è la correttezza tecnica, ma le capacità sociali / comunicative. Stai fermo, ma riconosci il punto di vista dell'intervistatore e consenti loro di salvare la faccia.

Una volta che puoi vedere che cosa stava pescando ("puro?" È un buon indizio), una buona risposta potrebbe essere:

Si pensa comunemente che le funzioni virtuali pure non possano avere una definizione. Tuttavia, tecnicamente parlando, una funzione virtuale deve essere pura, deve avere =0nella dichiarazione. Può ancora avere una definizione (provalo, compilerà!). Naturalmente, questo viene usato raramente e in pratica quando la maggior parte delle persone dice "puro virtuale", implica che la definizione è assente.


3
Fondamentalmente hai copiato il mio commento 25 minuti. prima di scriverlo! Come? - +1 e commento a tema simile eliminato.
Steve314

3
Questo è un altro aspetto positivo. Una volta ho discusso il mio voto su un test perché ho mostrato al mio professore che il codice che ho scritto sul test si sarebbe compilato. Il compilatore non mente ... mai ...
jmort253

3
Questo era esattamente il mio pensiero. Dicendo semplicemente "sì, è possibile", senza chiarimenti, mi sembra chiaro che l'intervistatore pensasse di non aver capito la domanda. Espandendo la risposta, chiarisci che a) capisci la domanda eb) conosci effettivamente la risposta. Non penso che l'intervistatore fosse necessariamente nel torto per aver cercato di insistere sul punto, è evidentemente un equivoco abbastanza comune che la gente pensi che le funzioni virtuali pure non possano avere una definizione.
Dean Harding,

10
@Sveve viaggi nel tempo da 500 rappresentanti in poi, devi aver perso la notifica
Pekka supporta GoFundMonica il

Ho fatto gli stessi anni fa in un'intervista in C ++ (per un sistema ad alte prestazioni) in cui ho spiegato che l'uso di un oggetto funzione può avere prestazioni migliori rispetto all'utilizzo di un puntatore a funzione a causa dell'inline e glielo ho spiegato. Ho anche citato il libro "Efficace C ++". In realtà si è alzato per controllare il libro e ha detto che non lo sapeva ed è rimasto colpito. È bene spiegare la tua risposta.
softveda,

10

Avresti potuto spiegare come dichiarare una funzione virtuale pura che ha un'implementazione.

In realtà, vorrei che lo facessi qui perché non ho familiarità con come farlo.


5
Devi solo dichiarare la funzione pura virtuale e quindi fornire un'implementazione. È una pratica piuttosto insolita farlo, ma in "Effective C ++, 3rd Edition" Scott Meyers descrive alcuni scenari in cui è utile. In particolare, poiché la funzione è pura virtuale, la classe in cui è dichiarata è astratta, ma poiché ha un'implementazione, fornisce alle sottoclassi un'implementazione predefinita che possono esplicitamente scegliere di usare se lo desiderano.

1
Bene, questo non spiega COME sia fatto. Se qualcuno è interessato, controlla en.wikipedia.org/wiki/… . Ad ogni modo, penso ancora che spiegare come farlo sarebbe stata la risposta migliore.

1
+1 - e io secondo la tua seconda riga. Peggio ancora, a meno che non fossi in uno stato d'animo eccezionalmente "ma a volte sbagliato", mi sarei schierato con l'intervistatore. Il problema è che puoi solo indovinare le tue convinzioni in una certa misura, altrimenti finisci per non sapere nulla.
Steve314

1
@ Steve314: Heh, trovo che più invecchio, più sono aperto a sbagliarmi. C'è sempre qualcuno che conosce più di me. :-)

@Jonathon - sì, ma senza un'indicazione accurata al 100% di quanto dovrei avere fiducia in tutte le mie varie opinioni, come faccio a sapere quali mettere in discussione? E essere aperti all'errore, significa che dovrei sempre presumere che le altre persone abbiano ragione e io sbagli? Di tanto in tanto possiamo essere tutti fiduciosi ma sbagliati, ma ciò significa che non dovremmo mai far valere la nostra fiducia? E se il mio livello di confidenza non dovesse essere la mia guida per restare fedele alle mie pistole fino a quando non vedrò forti prove, cosa dovrebbe?
Steve314

6

Molte volte quando intervisto un candidato, sto cercando di vedere come la persona gestisce l'incertezza o affronta il confronto. La prossima volta che intervisti, sii sensibile a questo e prova a rispondere in modo costruttivo alla domanda o a spiegare la tua posizione. Potrebbe essere più importante della risposta corretta.


Questa è un'ottima risposta
Neil G

+1: Ecco come intervista. Mi interessa di più il modo in cui interagiamo e scambiamo pensieri più che ciò che è giusto e ciò che non lo è. Elaborate la vostra posizione e / o spiegate il ragionamento alla base e dimostrate che non solo siete competenti, ma anche "giocatori di squadra".
mamma

Un altro +1: penso che sia importante assumere persone che possano discutere bene . Se un nuovo assunto non può difendere le sue idee, non andrà lontano in una squadra con altre persone volenterose!
Zan Lynx,

5

Sono stato in interviste in cui conoscevo più del mio intervistatore. Tuttavia, volevano che qualcuno ricoprisse un ruolo e non aveva nessuno (ovviamente) che potesse intervistare a quel livello.

Nel tuo caso, ritieni che sia stata una cieca ignoranza o un vero malinteso? Forse un'e-mail di follow-up con esempi e riferimenti: vedi come reagiscono prima di decidere.

Tendo verso la "cieca ignoranza" anche se basato sulla tua domanda e starei ben chiaro ...


L'intervistatore ha posto solo questa domanda e mi ha inviato. Non riesco a contattarli perché non ho un ID email.
bjskishore123,

@ bjskishore123: tramite agenzia? Tuttavia, starei lontano se fosse così ...
gbn

si, tramite consulenza.
bjskishore123,

+1 È un'esperienza comune. Ho avuto solo una volta un'intervista con chiunque ne avesse abbastanza per verificare che le mie abilità fossero impostate correttamente.
Orbling

3

In una situazione come questa, proporrei di scrivere una semplice classe con una funzione virtuale con un corpo e vedere se si compila. Per lo meno, proporrei di google l'argomento.

Se l'intervistatore accetta la sfida, ammette la sconfitta e non sembra che stia per strangolarti dopo, allora dovresti essere in buona forma. Altrimenti, questa probabilmente non è la persona con cui vuoi lavorare.


3

Non sono assolutamente d'accordo con l'idea che dovresti rinunciare a un'azienda perché il ragazzo che ti sta intervistando non conosce la risposta alla sua domanda. Anche quando lavori, incontrerai persone ostinate anche quando si sbagliano. È una buona abilità manovrare le persone alla risposta giusta.

Nel mio caso, l'intervistatore ha chiesto come calcolare la varianza di molti numeri su molte macchine. Ho iniziato dicendo che la varianza è la media dei quadrati meno il quadrato dei mezzi. Interpose "no, lo è E[(x - mu)²]".

Ho detto: "Sì, hai ragione. Ma la tua formula è la stessa della mia. Proviamo insieme." E poi l'abbiamo derivato insieme.

Nella tua situazione quando riconosci che l'intervistatore è incredulo, devi cambiare il tuo approccio. Digli che si tratta di una caratteristica raramente nota (questo serve a farti sembrare un po 'meno noto) e se lo desidera gli invierai un programma di esempio o un riferimento a un libro C ++ dopo l'intervista (questo è in modo che l'intervista possa avanzare con grazia.)

Prova a immaginare le cose dalla sua prospettiva. Un giorno intervisterai persone e talvolta sbaglierai. Come vorresti che un brillante candidato rispondesse a una simile domanda?


La media è E [(x - mu) ²] anche se probabilmente lo intendevi. Quindi puoi valutare che a E [x² - 2xmu + mu²] = E [x²] - E [2xmu - 2mu²] - E [mu²] E [(x-mu)] è sempre 0 ed E [mu²] = mu² come mu è una costante così dimostrata.
CashCow

2

Penso che avresti dovuto spostare l'intervista dalla scrivania a un computer con un compilatore. Ciò avrebbe risolto il problema.


1

EDIT: apparentemente mi sbaglio totalmente, vedi i commenti sotto questa risposta. Lasciando la risposta qui per scopi didattici.

Purtroppo, ti sbagli. Una funzione virtuale può avere una definizione; una pura funzione virtuale potrebbe non esserlo. La mancanza di definizione è ciò che lo rende puro.


8
No scusa. Ha ragione.
GManNickG

1
Bzzt !!! Sbagliato! = 0 è ciò che lo rende puro. Tali funzioni possono avere definizioni.
Edward Strange,

4
eh, colorami sorpreso. Non l'ho mai saputo.
Philip Potter,

3
Wikipedia spiega che "sebbene i metodi virtuali puri in genere non abbiano un'implementazione nella classe che li dichiara, i metodi virtuali puri in C ++ possono contenere un'implementazione nella loro classe dichiarante, fornendo comportamenti di fallback o di default che una classe derivata può delegare se appropriato. " Quindi, anche se è insolito o atipico per una pura funzione virtuale definirne l'implementazione, è possibile.
Cody Gray,

1

Sai che qualunque cosa tu abbia risposto è giusta. Secondo me hai fatto un buon lavoro attenendoti alla tua risposta da quando avevi ragione. Non c'è bisogno di mentire perché, se non oggi, un altro intervistatore di tempo imparerà a conoscere le pure funzioni virtuali !!!! .. Potrebbe anche metterti alla prova per verificare quanto sei fermo nelle tue decisioni? Sei la persona che viene portata via facilmente? Non c'è bisogno di perdere la speranza, poiché conosci la tua ragione

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.