Domanda:
Cosa devo fare se in un colloquio tecnico mi viene posta una domanda famosa che ho risolto in precedenza?
AwesomeSauce
2015-05-25 00:52:51 UTC
view on stackexchange narkive permalink

In preparazione per un colloquio di lavoro tecnico, è abbastanza comune per i candidati esercitarsi utilizzando problemi di esempio, con molte risorse disponibili per fornire domande e risposte per il candidato da utilizzare come riferimento.

Un pozzo -un noto esempio dell'informatica è l'uso del problema della Torre di Hanoi per comprendere la ricorsione. Quindi, la mia domanda è: cosa succede se vado in un'intervista e l'intervistatore mi chiede di risolvere il problema della Torre di Hanoi quando l'ho già risolto in preparazione di questa intervista? Idealmente, vorrei approfittare della situazione e mostrare all'intervistatore le mie capacità di risoluzione dei problemi senza dover fingere di non aver mai visto lo stesso problema prima.

Perché hai bisogno di fingere qualcosa? Ti viene dato un problema e ti viene chiesto di risolverlo. Quindi risolvilo! Hai intenzione di dire a un intervistatore che non puoi fare Fizz Buzz perché hai risolto Fizz Buzz in un colloquio con un'altra azienda?
@VietnhiPhuvan Non è questo il punto della domanda. Il motivo per cui inizialmente ho posto la domanda è perché l'intervistatore potrebbe cercare di vedere come posso risolvere un problema che non ho incontrato prima, al fine di osservare le mie capacità di problem solving. Se conosco già la soluzione, li inganni fingendo di averci pensato subito. Quindi non voglio farlo; quello su cui cerco consigli è mostrare le mie capacità di problem solving, nonostante conosca in anticipo la soluzione al problema specifico
@concerned_user: la maggior parte degli intervistatori sta cercando di vedere se riesci a risolvere un particolare puzzle che gli piace. Non lo sto perdonando in alcun modo, ma questa è la realtà delle cose. Fallo e basta (TM)!
Gli intervistatori chiedono ai candidati di risolvere i problemi e agli intervistatori non potrebbe importare di meno se hai già risolto il problema. Da dove viene l'esigenza di non aver mai visto il problema prima? Stai creando questo tipo di requisito. E sto dicendo che stai inventando questo ragazzo di esigenza perché non ho MAI incontrato un intervistatore che inventasse qualcosa del genere. Non tra 25 anni.
@VietnhiPhuvan Penso che potresti creare una montagna da una talpa. Non sto affermando che ci siano requisiti; Sto solo chiedendo come dovrei comportarmi di fronte alla situazione e cogli l'occasione per volgere la cosa a mio favore.
Come dice chiunque abbia risposto alla tua domanda: risolvila!
Per trasformarlo in tuo favore, potresti prendere la domanda come un'opportunità per rilassarti durante l'intervista. Sai che sarai in grado di risolverlo e di farlo in un modo non sotto pressione. Inoltre questo ti consentirà di concentrarti maggiormente sulla spiegazione di come risolvi il problema, che è probabilmente ciò a cui l'intervistatore è davvero interessato comunque.
Conosco intervistatori che chiederebbero se il candidato ha già visto il problema, o altrimenti preferirebbe saperlo. Se il candidato lo ha fatto, farà una domanda diversa o procederà e quindi sfrutterà l'opportunità per scavare più a fondo nella soluzione / aspettarsi una risposta di qualità superiore.
Torre di Hanoi?Cosa sei, un programmatore C64?dov'è il tuo Delorean?Scusa, non abbiamo mai avuto gli hoverboard ...
Se ti chiedono della "Torre di Hanoi", CORRI.
Se vogliono vedere come hai risolto una domanda che non hai mai visto prima, non dovrebbero optare per qualcosa che dove lavoro io viene insegnato agli studenti del primo anno come semplice esempio.
Una volta mi è successo il contrario: mi è stato posto un problema estremamente semplice.Anche se non ne avevo mai sentito parlare, l'ho risolto immediatamente e hanno pensato che avessi già saputo del problema e della sua soluzione."Gli scettici diventeranno scettici"
Sei risposte:
Kent A.
2015-05-25 01:00:55 UTC
view on stackexchange narkive permalink

Dici semplicemente che hai una soluzione al problema e lo dimostri. Se un intervistatore sta per tirare fuori un problema estremamente comune, non dovrebbe sorprendersi quando i candidati l'hanno già visto prima.

Questo. Se vogliono evitare una risposta preparata, dovrebbero trovare risposte più creative. Di solito non si tratta della risposta, ma del processo di pensiero. Perché pensi che la tua implementazione sia la strada da percorrere? Se ti danno la loro implementazione, puoi dire i vantaggi di entrambi?
Ho ucciso abbastanza facilmente i candidati con domande che non dovrebbero sorprenderli se conoscessero le cose che affermavano di sapere. Non ho bisogno di inventare problemi esotici. Non sto perdendo tempo con coloro che non possono applicare i loro fondamenti.
E penso che a volte non riguardi solo il processo di pensiero, ma anche la tua capacità di comunicare sia il tuo processo di pensiero che il processo decisionale tecnico. Puoi certamente dimostrare queste capacità altrettanto bene con un problema che conosci.
Eric Lippert
2015-05-25 09:19:19 UTC
view on stackexchange narkive permalink

Prima di tutto, se questo argomento ti interessa, ho una serie di articoli nella coda del mio blog in arrivo nelle prossime due settimane su come gestisco le domande dei colloqui tecnici come intervistatore.

A rispondi alla tua domanda specifica: questo non è un problema che ti pongo, ma supponiamo che lo fosse. Perché dovrei farlo? Per scoprirlo:

  • Il candidato riconosce questo famoso, standard, vecchio problema? In caso contrario, è un punto di dati interessante che posso esplorare ulteriormente.

  • Se non hanno familiarità con il problema, possono escogitare una soluzione? Questa è in realtà la parte a cui tengo di meno. Un candidato che non è in grado di risolvere questo problema immediatamente non avrà successo nel mio team, quindi presumo che possa escogitare una soluzione rapidamente indipendentemente dal fatto che il problema sia noto o meno.

  • Sotto-specificherò il problema e vedrò quali scelte fa il candidato. Il problema è produrre una "sequenza di mosse". OK, il candidato scarica le mosse sulla console, come se fosse il 1970? Producono un elenco? Producono una sequenza pigramente valutata? Quale struttura viene utilizzata per rappresentare il trasloco? Posso dire molto sul candidato solo dalla firma del metodo che scelgono di scrivere. Fanno una domanda per chiarire o semplicemente saltano dentro e codificano la prima cosa che viene in mente?

  • Quando si scrive codice per risolvere un problema in modo ricorsivo, il codice è ben organizzato ? Il caso base e i passaggi ricorsivi sono chiaramente identificati? Un candidato che non ha completamente interiorizzato la struttura degli algoritmi ricorsivi, ancora una volta, non avrà successo nel mio team.

  • Il candidato può chiaramente giustificare perché il codice è o è Non corretto? Se il codice è corretto, dovrebbero essere in grado di spiegare a parole il motivo. Se non è corretto, non dovrebbero essere in grado di spiegare perché è corretto, dovrebbero essere in grado di trovare il bug.

  • Il candidato può suggerire casi di test che dimostrino la correttezza dell'algoritmo?

  • Ora che abbiamo una soluzione corretta, posso iniziare a sondare davvero le loro conoscenze. Qual è la complessità temporale di questo algoritmo dato che l'input è l'altezza della pila di dischi? Se il candidato ha scelto di produrre ricorsivamente una sequenza pigra di mosse, questa domanda è più difficile di quanto potresti pensare. Qual è la complessità dello spazio sia nello spazio heap che nello stack?

  • Ora possiamo iniziare a rendere il problema più difficile. E se fossimo in un ambiente in cui lo spazio dello stack era fortemente limitato ma lo spazio dell'heap non lo era; il candidato può utilizzare uno stack esplicito per trasformare l'algoritmo in un algoritmo iterativo e non ricorsivo?

  • Supponiamo che io abbia chiesto al candidato di utilizzare lo stile di passaggio di continuazione per implementare una versione senza stack; sanno di cosa sto parlando? e se è così, possono farlo?

L'algoritmo specifico è del tutto irrilevante. È un punto di partenza per il vero compito dell'intervista, che è determinare se il candidato può ragionare sul codice utilizzando gli strumenti nella sua cassetta degli attrezzi . Non ho mai dovuto risolvere il problema della torre di Hanoi nel mio lavoro. Molte, molte volte ho dovuto riscrivere un algoritmo ricorsivo in un algoritmo iterativo con uno stack esplicito in un ambiente con vincoli di stack. Un candidato che non può farlo è improbabile che abbia successo nel mio team.

Quindi, la risposta alla tua domanda è: risolvi il problema in buona fede. Se il problema è davvero un "fizzbuzz" - solo un test per vedere se puoi scrivere del codice - allora lo passerai rapidamente e l'intervistatore andrà avanti. Ma userei un semplice problema standard come un'opportunità per sondare le capacità del candidato in modo più approfondito.

Approfondimenti interessanti sulle varie possibili intenzioni dell'intervistatore. È del tutto possibile che ciò che stanno cercando sia al di là dell'ovvio "Qual è l'algoritmo necessario per risolvere questa domanda?"
"bit che mi interessa di meno" - questo sembra confuso, intendevi che tieni di più?
@user2813274: Quello che voglio dire è che il bit "possono risolvere il problema / non possono risolvere il problema" è molto poco interessante tranne nella misura in cui "non possono risolvere il problema" significa "non avrebbero dovuto superare lo schermo del telefono". Sono interessato a * come * risolvono il problema e sono ancora più interessato a utilizzare il problema come punto di partenza per un'esplorazione più profonda delle abilità del candidato.
In realtà, 30 anni fa ho trovato questo "problema" piuttosto noioso e inutile.Con più di tre torri diventa un po 'più interessante.
Vorrei poter iniziare questa risposta.
r.ams
2015-05-25 01:33:09 UTC
view on stackexchange narkive permalink

Mi sono state poste molte di queste domande standard in diverse interviste. Penso che tutti gli intervistatori sapessero / presumessero che avessi sentito parlare del problema e delle possibili soluzioni. La cosa importante quando si risponde a queste domande è che molti intervistatori sono principalmente interessati a:

  • Quanto sei bravo a spiegare le cose? Ho visto alcune pessime spiegazioni da parte degli studenti che hanno compreso bene il problema e la soluzione ma non sono stati in grado di spiegarle a nessuno.
  • Quanto sei bravo a implementare effettivamente una soluzione (se l'implementazione fa parte di il test)? Sei a conoscenza di potenziali problemi (es. Il tempo di esecuzione) e di soluzioni alternative?

Quindi non puoi semplicemente affermare:

Questo è un problema comune , la soluzione usa la ricorsione.

ma devi cercare di spiegarla all'intervistatore, fornendo un contesto se disponibile (tempo di esecuzione, generalizzazione ...). Se possibile, fai dei disegni per supportare le tue spiegazioni. Mostra il contesto del problema e indica soluzioni alternative. In breve: dimostra di essere in grado di spiegare una soluzione a un collega.

Negli esami di programmazione, cerco sempre di creare codice di produzione. Non digitare una minima soluzione pseudo-codifica, ma aggiungi commenti, test (se appropriati) e simili.

Jay
2015-05-25 23:10:52 UTC
view on stackexchange narkive permalink

Se sei preoccupato di essere disonesto, è abbastanza facile dire: "Oh, sì, ho già visto questo problema. La soluzione che ho trovato è stata ..."

Quando intervistando per il mio lavoro attuale, mi hanno fatto un quiz che includeva quello che equivaleva al classico problema del fizz-buzz, ma usando parole diverse e con alcune piccole differenze. Quindi ho solo detto: "Oh, questo è molto simile a un fizz-buzz" e ho provveduto a dare una soluzione.

Se fossi stato avvertito che questa domanda sarebbe emersa durante l'intervista (forse il reclutatore dice tu o un amico intervistato lì di recente) e hai cercato una risposta su Internet e l'hai memorizzata, quindi tiri fuori questa risposta come se l'avessi appena capito, okay, potrebbe essere un imbroglio. Ma se dici francamente: "oh sì, ho letto una soluzione a questo problema non molto tempo fa" e puoi spiegare perché e come funziona la soluzione, anche se non ci hai pensato tu stesso, stai dimostrando un livello di comprensione. Di tanto in tanto ho intervistato persone che erano in grado di dare una soluzione a un problema, ma è diventato subito chiaro che non avevano idea da dove provenisse questa soluzione o come funzionasse. Ovviamente l'hanno semplicemente copiato da qualche parte.

Come ha detto qualcun altro qui, se un intervistatore userà problemi comunemente noti - ronzio o radici quadrate o qualsiasi altra cosa - sarebbe assurdo per loro accusare qualcuno di barare perché ha già sentito parlare del problema. (Non mi è mai stato chiesto delle Torri di Hanoi in un'intervista, e non ricordo i dettagli del problema quindi oltre a un vago, "sì, sono abbastanza sicuro che la soluzione fosse ripetitiva o ricorsiva o qualcosa del genere", Dovrei capirlo di nuovo comunque. Ma qualunque cosa.)

Monica Cellio
2016-11-03 23:20:06 UTC
view on stackexchange narkive permalink

Questo è successo a me, non in particolare alla Torre di Hanoi, ma a un problema che riconosco e di cui conosco già la soluzione.

Cosa ha funzionato per me (e per pochi altri di cui so chi " sono stato in questa situazione) è dire qualcosa del genere:

L'ho visto di recente; infatti ho risolto questa ultima settimana. Vuoi che proceda o vuoi farmi una domanda diversa?

Questo fa alcune cose:

  • Dimostra la tua conoscenza senza essere fuorviante.
  • offre loro l'opzione . Alcuni luoghi sono risoluti nel porre a tutti le stesse domande per rendere le loro interviste il più uniformi possibile.
  • Dà loro la possibilità di metterti alla prova in modo diverso . Potrebbero saltare questo o potrebbero decidere che se riesci a buttarlo via velocemente, possono farti una seconda domanda.
  • Ricorda loro sottilmente che questo probabilmente non è l'unico posto in cui stai intervistando.

Un colloquio è un microcosmo del tuo eventuale rapporto di lavoro (se ci vai). Sei onesto? Sei flessibile? Sei concentrato sul problema in questione , che non risolve la Torre di Hanoi ma dimostra le tue capacità? Sei un giocatore di squadra, lavori con l'intervistatore per ottenere ciò che entrambi desiderate? Tutto ciò si rifletterà bene su di te nella valutazione delle "competenze trasversali".

Matt Lacey
2015-05-25 06:46:45 UTC
view on stackexchange narkive permalink

Per quanto mi riguarda, questi problemi sono spesso ridicoli ed esistono davvero solo per consentire agli intervistatori di sentirsi compiaciuti di se stessi. Sì, puoi capire come alcune persone potrebbero risolvere un problema, ma non è che nessuno riuscirà mai a tirare fuori un numero dal nulla o a indovinare a caso un algoritmo.

Io " Presumo che questa sia stata un'intervista di sviluppo poiché è qui che abbondano questi tipi di problemi. Personalmente penso che sia molto più istruttivo mostrare a un candidato un codice sbagliato, chiedergli cosa fa e come può essere migliorato. È incredibile quanto possa essere efficace.

Francamente se avessi una domanda su un problema e avesse una soluzione come Hanoi, darei solo la mia migliore risposta. Sapere qualcosa per esperienza non è in alcun modo barare; è come funziona effettivamente il lavoro.

Il tuo suggerimento di mostrare codice sbagliato e chiedere suggerimenti per miglioramenti è buono, che uso frequentemente. (E ne scriverò tra un paio di settimane.) Tuttavia, quando chiedo problemi all'algoritmo standard nelle interviste non è ridicolo, e non lo faccio per sentirmi bene con me stesso; Lo faccio per scoprire quanto sia profonda la cassetta degli attrezzi del candidato.
Hmm, mi sembra che abbia molto senso porre domande che hanno, o dovrebbero avere, risposte facili, perché questo ci permette di eliminare candidati non qualificati. Se chiedi a un candidato di risolvere un problema molto difficile che ha sconcertato le più grandi menti della storia per migliaia di anni, e il candidato non può risolverlo in dieci minuti, cosa prova? Quando vado a un colloquio di lavoro, mi aspetto che qualsiasi quiz inizi con domande facili, perché quelle sono le più facili da giudicare ed eliminano rapidamente un gran numero di candidati non qualificati.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...