Preparazione per interviste [duplicato]

15

Qualcuno potrebbe darmi dei consigli su come prepararsi per un colloquio tecnico? Come laureato in CS, immagino che uno debba essere approfondito con i seguenti argomenti:

Strutture dati: Array, elenco collegato, pila, code, heap, tabella hash, albero binario, albero di ricerca binaria, albero binario autobilanciato (AVL, albero nero rosso), albero B, Cerca / Suffix Tree

Algoritmi: Ordinamento (Ordinamento a bolle, Ordinamento inserzione, Ordinamento selezione, Ordinamento shell, Ordinamento rapido, Ordinamento unione, Ordinamento esterno), Ricerca (ricerca temporale lineare e logaritmica), Teoria dei grafi (Elenco delle adiacenze , Adiacente Matrix, DFS, BFS, Ordinamento topologico), Programmazione dinamica, Algoritmi greedy, Dividi e Conquista.

Algoritmi ad hoc: Seleziona Algoritmo, Carta Yates Fisher Shuffle, Campionamento serbatoio ed elenco è infinito.

Database: query SQL

Programmazione e progettazione: C, C ++, Java, linguaggi di scripting (Perl, Python), (Nozioni di base di OOPS, funzioni virtuali, copia profonda e superficiale, costruttore di copia, operatore di assegnazione, STL, gestione della memoria , puntatori / riferimento, interfaccia, classi astratte

Sistemi operativi: Sincronizzazione thread (mutex, variabili condizionali, semafori, deadlock), gestione della memoria (segmentazione, cercapersone, TLB, meccanismi di cache)

Sarebbe anche bello se tutti potessimo compilare le risorse disponibili su internet per rispolverare questi argomenti. Aggiungerò alcuni di questi:

Elenco e alberi collegati: link

Per favore aiutami a trovare risorse utili per preparare questi argomenti, inoltre sarei grato se potessi aggiungere a questi argomenti.

    
posta Community 29.05.2011 - 05:37
fonte

4 risposte

19

Dipende molto dal tipo di lavoro che stai richiedendo. Ho passato alcune interviste e condotto ancora di più. Ecco alcuni suggerimenti.

  • Tutto ciò che hai elencato rientra nella categoria " curiosità tecnica ". È importante sapere - aiuta a stabilire che hai una buona profondità e ampiezza di conoscenze tecniche. La realtà è che è spesso molto difficile studiare - o lo conosci o no. Non dire che rispolverare le cose è una cattiva idea.
  • La risoluzione dei problemi e il pensiero critico sono anche molto importanti. Domande come "quanti tombini a Manhattan" sono comuni - non cercano una risposta giusta, vogliono vedere come risolvi i problemi. Spiega il tuo processo : se scopri di aver fatto un errore, spiega perché e come puoi migliorarlo. Non gettare le mani in aria e rinunciare. Sii tenace e sii disposto a essere creativo: per la domanda del passo d'uomo potresti suggerire di intervistare i tassisti.
  • Sii disposto a difendere i tuoi punti. Non sto dicendo di essere polemico, ma se vi viene chiesto quale tecnologia o metodologia usereste in una particolare situazione siate pronti a difendere questo punto. Se ti chiedono se vuoi creare un'applicazione web o un'applicazione client per risolvere un problema specifico (tutti dicono sempre che chiederebbero al cliente, ma di solito non è abbastanza), sei disposto a dire perché scegli questa tecnologia. Di solito "è tutto ciò che so" non è la risposta giusta. I motivi della scelta sono più interessanti della scelta. Abbiamo intervistato un ragazzo una volta (che abbiamo ingaggiato) e gli abbiamo chiesto se avrebbe scelto soluzioni web o client per problemi diversi, ha detto il web, e ha spiegato perché, ma poi ha detto a meno che non fosse per l'Africa (è emigrato da lì) perché loro L'infrastruttura di Internet era terribile!
  • Non BS - se non conosci la risposta, sii in prima fila, ma poi spiega come tenteresti di trovare la risposta, o cosa faresti in base a ciò che sai. Ho fatto delle domande che so che prima non c'era una risposta vera per dimostrare che qualcuno mi stava sbagliando.
  • Studia la compagnia con cui stai intervistando. Puoi imparare molto su di loro dalla scheda di lavoro e da altri elenchi che hanno. Assicurati di fare ricerche su tutte le tecnologie nel tuo post di lavoro e di essere a conoscenza delle altre tecnologie utilizzate in azienda (sulla base di altri elenchi). Questo mi ha ottenuto il lavoro prima.
  • Avere alcune domande ponderate pianificate. Soprattutto ispirato dalle tue ricerche sull'azienda e sulle loro tecnologie.
  • Crea un portfolio di esempi di codice, progetti di interfacce utente, post di blog, documenti, brevetti, progetti open source, risposte Stack Overflow, problemi interessanti che hai risolto (anche se appena spiegato sulla carta) ecc. Tutto ciò che puoi indicare per mostrare alcune delle tue abilità, esperienze, ecc. Assicurati di avere i diritti su tutto ciò che condividi. Una volta avevo un candidato che mi inviava le credenziali di accesso a un'applicazione che aveva progettato per un precedente dipendente. La roba che hai fatto nel tuo tempo libero (o a scuola) è la chiave - oltre a mostrare la tua passione.

Spero che aiuti. Buona fortuna!

    
risposta data 29.05.2011 - 08:36
fonte
2

Questo libro mi è stato di grande aiuto in passato. Specialmente quando stavo appena uscendo da scuola.

EDIT: Si chiama "Interviste di programmazione esposte: Segreti per appropriarsi del tuo prossimo lavoro, 2a edizione (programmatore per programmatore)"

    
risposta data 03.06.2011 - 07:41
fonte
1

È bello sapere quanti più articoli della tua lista è possibile, ma quando aiuto intervista, passiamo rapidamente in rassegna se conosci gli articoli. Siamo interessati e più ne sai meglio è, ma è ancora meglio se sai abbastanza per rispondere perché sceglieresti una struttura dati rispetto a un'altra in un dato problema, o a che ora utilizzerai semafori anziché mutex, ecc.

In aggiunta a ciò, le persone che portano esempi di lavori precedenti sono molto apprezzate. Se lo fai, assicurati di saperlo bene; cioè, non portare qualcosa che hai fatto come una "squadra", dove la maggior parte del codice è stata scritta da qualcun altro, a meno che tu non la capisca davvero. Siate pronti a spiegare perché avete scelto gli algoritmi che avete fatto, quali vincoli stavate lavorando e cose del genere.

    
risposta data 29.05.2011 - 17:19
fonte
1

La maggior parte di ciò che hai elencato non comparirà direttamente in un'intervista; si presumerà che tu ne sappia la maggior parte in base al tuo background. Quello che devi mostrare è che le abilità, piuttosto che la conoscenza, fanno il lavoro. Cose come:

  • Forti abilità comunicative, sia scritte che verbali. L'intera procedura di domanda e colloquio, compreso il tuo curriculum e la lettera di accompagnamento, sono le tue opportunità per mostrarlo.
  • Apprendimento rapido e buone capacità di ricerca: la capacità di ammettere ciò che non conosci e non lasciare che ti fermi. Siate pronti a dire "Non so" e abbastanza fiducioso da aggiungere "ancora". Potresti ricevere una o due domande che nessuno conosce in cima alla loro testa; questo è per dimostrare che non ti agiti o non fai niente, che puoi tranquillamente e rapidamente andare e scoprire quello che devi sapere.
  • Pensiero analitico: potresti presentarti vari tipi di indovinelli per dimostrare che puoi superare un problema e arrivare a una soluzione; ciò che conta di più è il tuo processo, non la tua risposta finale. Spesso, la persona che chiede non sa (o cura) se la tua risposta finale è scritta o sbagliata. Vogliono vedere come te lo immagini.
  • Dimostrazione tecnica: è vero, la parte divertente. Una buona compagnia ti presenterà un compito di programmazione da completare e rivedranno la tua soluzione. Non c'è preparazione per questo diverso dall'esperienza, anche se i problemi sono in genere relativamente semplici. Vogliono solo la prova che il tuo background si aggiunge alla genuina capacità di implementazione.

Nessuna di queste cose può davvero essere "studiata", solo praticata. Più pratica è, meglio è, ma ricorda sempre, non è "la pratica rende perfetti", ma "la pratica perfetta rende perfetti". Praticate sempre a farlo correttamente, non solo a farlo affatto.

Buona fortuna !!

    
risposta data 03.06.2011 - 21:14
fonte

Leggi altre domande sui tag