Il colloquio tecnico perfetto. Consigli di Neil Roseman

  • Programmazione,
  • Sviluppo del sito web
  • Su Internet si riversa molto dolore per le interviste infruttuose. Ad alcuni non sono piaciute le domande degli intervistatori, altri si sono offesi per il ridicolo, altri sono stati giudicati in base alla loro pagina VKontakte. Gli intervistatori tengono il passo con i candidati e giurano su quanto sia grave la situazione del personale in questi giorni e quali risposte stupide danno i programmatori inesperti alle loro domande difficili. questioni tecniche.

    Sfortunatamente, non esistono regole universali per superare e condurre colloqui, e non possono esserlo, perché i dipendenti vengono selezionati non solo in base alle loro competenze tecniche e qualità personali, ma anche in base alla corrispondenza con alcuni “profili” (spesso impliciti e molto soggettivi) che, secondo agli intervistatori, si adatta alla loro squadra o azienda. Per quanto riguarda le guide della serie "come superare correttamente le interviste", di solito non causano meno dolore nei commenti, perché sono molto soggettive e sicuramente toccheranno i punti deboli di qualcuno.

    Nel corso della mia carriera professionale, sono stato su entrambi i lati della barricata, anche se probabilmente ho dovuto fare interviste un po' più tecniche che superarle. Ma durante questo periodo ho accumulato una serie di “mode passeggere” che mi spaventano durante un colloquio tecnico e immediatamente nella mia mente mettono fine a ulteriori conversazioni. Questo è ciò di cui volevo parlare, dal punto di vista dell'intervistatore e del richiedente. Vorrei subito riservare che l'articolo rifletta le mie personali impressioni soggettive e non pretenda di essere una "guida alle interviste". D'altra parte, non si tratta di un momentaneo scoppio di rabbia per un colloquio fallito, ma di una serie di criteri ponderati a lungo che, anche se su base negativa, mi consentono di eliminare le opzioni o di non spaventare un candidato potenzialmente idoneo me stessa.

    Cosa ti irrita o ti stressa durante le interviste? Condividi nei commenti.

    Intervista dal punto di vista del richiedente

    Ogni volta che un programmatore cerca lavoro, deve sostenere numerosi colloqui tecnici. Gira per gli uffici o parla su Skype, risolve problemi o fa test, risponde a domande tecniche difficili, cerca di dimostrarsi con il lato migliore. Lui stesso però valuta anche le persone che lo intervistano e lo mettono alla prova, pensando che domani potenzialmente dovrà lavorare con queste persone. E ci sono molti modi in cui gli intervistatori tecnici possono spaventare i candidati e allontanarli da una posizione interessante. Parlerò di ciò che mi ha sempre spaventato personalmente e di ciò che cerco di evitare come intervistatore.
    1. "Quale altro colloquio tecnico?"
    La prima e più importante cosa che mi ha sempre allarmato riguardo ad un colloquio tecnico è la sua assenza. Succede che l'intera conversazione con specialisti tecnici - potenzialmente futuri colleghi - si basa su domande riguardanti l'esperienza professionale: dove ha lavorato, su quali progetti ha lavorato, quale funzione ha svolto in essi. Per quanto riguarda la tecnologia o la conoscenza, domande al livello di "di che colore è il libro di testo". Sai cos'è un Message Broker? Ottimo, ti portiamo noi!

    Questo approccio al colloquio mi ha sempre messo nettamente contro un potenziale datore di lavoro. Non mi hanno fatto una sola domanda per verificare che conoscessi davvero il fatto mio. Sembra che le persone che mi intervistano o non capiscano nulla dell'argomento e stiano cercando almeno una persona che capisca, oppure siano semplicemente disperate e pronte ad affrontare chiunque. In ogni caso, difficilmente vorrei lavorare in un team reclutato in questo modo.

    2. "Bene, cosa stavi facendo lì in quel..."
    È sorprendente quanto spesso si manifestino atteggiamenti sprezzanti nei confronti dei candidati durante i colloqui tecnici. Sì, forse sei un programmatore severo ed esperto con un sacco di progetti alle spalle, sei stato strappato da un lavoro estremamente importante per il bene di alcune interviste inutili con persone, la maggior parte delle quali, secondo te, sono completamente incompetenti. Ma non dimenticare che in questo momento rappresenti la tua azienda e la tua squadra, e una persona valuterà sicuramente il clima nella squadra in base al tuo comportamento e il modo in cui lo tratteranno in questa squadra. Sii educato e rispettoso nei confronti del richiedente, anche se fin dai primi cinque minuti ti sei reso conto che non gli dovrebbe essere permesso di avvicinarsi al tuo prezioso codice.
    3. "Il tuo nome/cognome/nome patronimico è scritto in modo errato sul tuo curriculum!"
    Questo non è affatto tecnico, ma è comunque un problema comune anche nei colloqui tecnici. Fortunatamente, ho un nome abbastanza semplice e comune e tali problemi non mi sono capitati. Tuttavia, so che c'è un numero sorprendente di persone che credono fermamente che certi nomi e persino patronimici semplicemente non esistano. Ti convinceranno che il nome corretto non è “Danila”, ma “Daniil”, oppure che non esiste il nome “Alena”, ma solo “Elena”. Si offriranno di correggere e scrivere “correttamente” nei loro documenti. Le persone con rari o nomi insoliti e credimi, è incredibilmente fastidioso. Quindi, c'è una regola semplice: non esistono nomi che non esistano. Scrivi correttamente come scritto sul passaporto. Mostra rispetto al richiedente e non considerarlo così stupido da non essere in grado di copiare dal passaporto al curriculum nome di battesimo. Anche se sospetti un errore, puoi chiarirlo con più tatto.
    4. “Quante palline da golf sarebbero necessarie per pulire tutti i finestrini rotondi di uno scuolabus ridotto alle dimensioni di un centesimo durante l’evacuazione di San Francisco, utilizzando non più di 3 pesate?”
    Nessun articolo sulle interviste sarebbe completo senza menzionare i tombini. Puoi considerare questo il mio punto personale relativo all'incapacità di risolvere rapidamente e sotto pressione problemi non standard. Ma sono sicuro che i rompicapi siano assolutamente inutili durante le interviste. O meglio, lo è ottimo modo recluta un intero dipartimento di prodigi del cervello con le Olimpiadi del cervello, che si scambieranno nuovi rompicapo tutto il giorno invece di lavorare. Vero programmatore dentro ambiente naturale Nella sua vita quotidiana, anche quando ha a che fare con compiti molto interessanti e non standard, raramente codifica sotto stress e trascorre la maggior parte della giornata seduto e pensando tranquillamente in un'atmosfera relativamente calma a come può meravigliosamente trasformare il codice in metodi. Non usa mai i suoi “muscoli cerebrali” per risolvere problemi complicati in questo processo.
    5. “Sbagliato. Ulteriore."
    Naturalmente, non è compito dell'intervistatore formare le persone che vengono al colloquio. Tuttavia, se il richiedente non è riuscito a rispondere alla domanda, ma è comunque interessato, allora suggerirgli o almeno indicargli la soluzione corretta prima di passare alla domanda successiva è una domanda etica professionale, a dimostrazione che se succede qualcosa lo aiuteranno, gli insegneranno e non lo lasceranno solo con problemi tecnici. Digli almeno qualche parola, cosa cercare su Google, cosa leggere. Dopotutto, interesse per la decisione giusta i compiti sono in sé qualità positiva uno specialista tecnico e non dovresti demotivare tale persona denigrando i suoi errori o inesattezze.

    Intervista dal punto di vista dell'intervistatore

    Ogni volta che si apre un nuovo posto vacante, uno specialista leader o un capo dipartimento deve condurre numerosi colloqui tecnici. Le persone vengono ai colloqui con esperienze tecniche, livelli di formazione e aspettative diverse. Per condurre un colloquio, è necessario elaborare un piano di conversazione, stilare un elenco di domande e quindi cercare di capire dalle risposte a queste domande se la persona è adatta o meno alla posizione. E a volte durante i colloqui i candidati dicono cose che rendono immediatamente chiaro: no, non potrai lavorare insieme a questa persona. Ecco una selezione di frasi chiave dei candidati che mi allarmano personalmente.
    1. “Alcune delle tue domande sono teoriche. Non sono forte in teoria, sono esperto in pratica! Facciamo un test migliore!”
    La parola “teorico” viene solitamente pronunciata con una connotazione sprezzante, come se fosse qualcosa di brutto. Ma non è nemmeno questo il problema. Pensi che questa frase sia stata preceduta dalla richiesta dell'intervistatore di dimostrare il teorema di Cauchy? Dare definizione precisa terza forma normale? Affatto. Ho sentito tali esclamazioni in risposta alle seguenti domande:
    • In che modo il confronto per == è diverso dal confronto per uguali in Java?
    • dicci come funziona la mappa hash.
    • Spiega con parole tue cos'è REST.
    • Cosa sono le transazioni e perché sono necessarie?
    Sì, da un certo punto di vista qualsiasi questione di programmazione è teorica se non richiede di scrivere una riga di codice qui e ora. Ma sono sicuro che una persona con un'esperienza sufficientemente vasta in un determinato campo dovrebbe essere in grado di spiegare le cose più basilari con parole sue, o almeno non fingere che ignorarle sia normale e naturale.
    2. “Non mi aspettavo l’Inquisizione spagnola qui! È proprio come sostenere un esame all'istituto. Di solito gli chiedono semplicemente dove lavorava e cosa faceva”.
    Sei venuto per un colloquio tecnico. In un colloquio tecnico ti verranno poste domande tecniche per testare le tue capacità tecniche. Lascia la metodologia del test e la scelta delle domande alla coscienza dell'intervistatore: le domande potrebbero non sembrarti sempre adeguate, ma l'intervistatore sa esattamente quali informazioni vuole ottenere su di te analizzando le tue risposte. Sono necessarie molte domande non per testare le tue conoscenze, ma per costringerti a pensare e guardare il tuo filo dei pensieri. Ricorda inoltre che non tutte le domande richiedono una risposta perfettamente precisa, e se rispondi in modo chiaro almeno alla metà di quello che ti hanno chiesto, questo farà già una buona impressione.
    3. “Non ho bisogno di saperlo, sono specializzato in compiti di livello superiore!”
    Non confondere la specializzazione con l'ignoranza delle basi della programmazione. Dagli sviluppatori applicazioni mobili Ho sentito cose simili sui protocolli dello stack TCP/IP da programmatori front-end, in risposta a domande sugli algoritmi di ordinamento e ricerca. "Perché dovrei saperlo, è tutto nella libreria standard, lavoro a un livello superiore." In risposta a tali affermazioni, molto tempo fa ho sollevato un paio di piccoli problemi con algoritmi subdolamente nascosti, nella speranza di dimostrare che una soluzione "ingenua", derivante dall'ignoranza degli algoritmi, non regge alle critiche, e almeno incoraggiare almeno l’autoeducazione. Inoltre, questi non sono compiti costruiti artificialmente, ma cose che accadono ogni giorno nello sviluppo. Qualsiasi codice è un algoritmo. Comprendere gli algoritmi di base e le strutture dei dati è importante per qualsiasi programmatore, e i protocolli Internet sono una base, senza la cui conoscenza è impossibile scrivere con competenza qualcosa che vada oltre i confini di un computer.
    4. “E tu stesso! / Mostrami il tuo codice! / Ma sono andato sul tuo GitHub e c'è questo..."
    L'ultima cosa che un intervistatore vuole è assumere una persona e poi doverla ascoltare criticare il suo codice di base. Sì, molto probabilmente è imperfetta. Sì, il debito tecnico è ovunque e tutti ce l’hanno. In ogni codice c'è qualcosa da criticare. Ma se ti consideri davvero così bravo da vedere evidenti problemi nel codice dei tuoi potenziali datori di lavoro, traducilo in un positivo costruttivo: so come migliorare, ho esperienza su questo argomento, posso esserti utile.
    5. “Hai torto!”
    Naturalmente tutto può succedere, ma è meglio mantenere la tua opinione sul fatto che l'intervistatore abbia torto o dubbi sulla sua competenza fino alla fine del colloquio. Quindi cercalo su Google e scopri chi di voi aveva ragione. Un colloquio tecnico non è un luogo di discussione o di autoaffermazione e le domande qui vengono poste principalmente a te. L'intervistatore non chiederà qualcosa che lui stesso non capisce.

    Conclusione

    Sai qual è la cosa più bella che ho sentito dai candidati durante i colloqui? “Non ho davvero risposto, vero? Puoi darmi un pezzo di carta? Scriverò le tue domande e risolverò la questione a casa, anche se non mi assumerai, almeno lo saprò ora. Lacrime di orgoglio sgorgano nei tuoi occhi: non è stato vano che hai trascorso un'ora e mezza su una persona, lui stesso ha imparato qualcosa da questa intervista. Anche se ora è troppo debole per questa posizione, forse questo lo incoraggerà a istruirsi, e tra un anno o due tornerà, mostrerà il suo lato migliore e troverà un lavoro, come è successo una volta nella mia carriera.

    Su Internet c'è molto materiale dedicato alle interviste ai responsabili delle risorse umane, ma non si dice quasi nulla sulla complessità delle interviste con gli specialisti tecnici. Questo articolo è dedicato alle qualità e alle competenze che un candidato deve avere per superare con successo questa fase e ricevere un'offerta in un'azienda IT.

    Dialogo dalla vita:

    Candidato: Dobbiamo eseguire l'operazione “A” finché la condizione “B” non è soddisfatta.
    Io: Ottimo piano. Implementiamolo.

    Il candidato scrive un per ogni ciclo. Anche se è ovvio. Se un candidato ha superato questo livello, prima o poi diventerà un buon programmatore. Ma qui il 70% dei candidati fallisce.

    Bogdan Gusev, stazione di servizio

    Correggiamo questo fastidioso malinteso.

    while (offerta bool == false)(

    Regola 0

    Se stai facendo un colloquio per il ruolo di sviluppatore Java, devi avere una buona conoscenza di Java e delle tecnologie correlate

    //Non ci sono commenti.

    Regola 1

    Preparati per il colloquio in anticipo

    Scopri in anticipo dal reclutatore tutti i possibili dettagli sul progetto.

    Cerca su Google le domande che vengono comunemente poste durante le interviste. Alcuni di loro si incontreranno sicuramente.

    Alexander Pitz, responsabile del progetto

    Regola 2

    Non mentire sul tuo curriculum

    Cercare di ingannare esagerando le tue conoscenze è una perdita di tempo per te e per l’azienda. Devi essere in grado di rispondere a domande su tutte le tecnologie elencate nel tuo curriculum.

    Un curriculum pieno di parole chiave, di cui non hai una corretta comprensione, rovina le tue possibilità di ricevere un'offerta.

    Regola 3

    Allinea i tuoi valori con i valori dell'azienda

    Ogni azienda ha i suoi valori. Una squadra apprezza la dedizione e l'attenzione ai risultati e, di conseguenza, non disdegna lavoro straordinario. L'altro è innovativo sul lavoro ed è disposto ad apprendere e applicare innovazioni ogni due mesi. Il terzo è affidabilità e stabilità: tecnologie collaudate, persone dedicate che non lasceranno l'azienda se i cookie scompariranno improvvisamente.

    Esiste un limite accettabile di discrepanza tra i valori, se superato, molto probabilmente l'azienda deciderà di non presentare un'offerta, anche se il candidato ha l'esperienza necessaria e le conoscenze tecniche necessarie.

    Regola 4

    Sviluppare capacità di comunicazione

    Voglio che il candidato abbia migliori capacità di comunicazione alto livello rispetto a quello di base. Nella nostra epoca di completa agilità, questa qualità viene in primo piano tra le competenze necessarie. Il candidato non dovrebbe avere difficoltà a comunicare con le risorse umane e gli specialisti tecnici, nonché con i clienti.

    Regola 5

    Migliora il tuo inglese

    A differenza dei fallimenti acritici nella conoscenza di qualsiasi tecnologia, non sarai in grado di migliorare le tue abilità linguistiche in un paio di mesi. Ci vogliono anni qui. Pertanto, nella maggior parte dei casi, un livello insufficiente di inglese costituisce un motivo sufficiente per il rifiuto.

    Una piccola motivazione: il livello di inglese e lo stipendio dei middle e senior di Kyiv Java e .NET con 3-5 anni di esperienza corrispondono.

    Regola 6

    Mostra la tua passione per la tua professione

    Secondo Bogdan Gusev, il fatto che ti piaccia il tuo lavoro può essere indicato dalla presenza di progetti Open Source, dalla partecipazione a conferenze tematiche e dalla padronanza dell'editor di testo o delle funzionalità IDE. E, naturalmente, interesse per i dettagli ulteriore lavoro. I programmatori indifferenti al proprio lavoro non sono molto richiesti dai datori di lavoro.

    Regola 7

    Mostra intelligenza e pensiero astratto

    Il candidato deve:
    - essere in grado di risolvere problemi corrispondenti alla sua posizione;
    - conoscere il linguaggio di programmazione e i framework richiesti;
    - navigare tra le tecnologie del progetto per il quale viene intervistato.

    Se la posizione è poco definita, vengono messe alla prova l’erudizione generale e l’intelligenza, nonché la capacità di pensare in modo strutturale e di trovare soluzioni.

    È molto importante dimostrare la capacità di utilizzare le proprie conoscenze. Se conosci approcci e metodi per risolvere i problemi e sai come ottenere le informazioni mancanti, sarai in grado di far fronte ai compiti che riceverai.

    Regola 8

    Dimostrare il desiderio di acquisire nuove conoscenze

    A volte un candidato dirà: “Ho studiato la tecnologia X e voglio solo lavorarci. Perché dovrei studiare la tecnologia Y se conosco la X?” Le possibilità che un candidato del genere riceva un'offerta sono drasticamente ridotte. Le tecnologie sono solo strumenti. Dopo qualche tempo X diventerà irrilevante, e con esso lo specialista stesso, che solo lo sa.

    Maxim Kovtun, Architetto di soluzioni

    Regola 9

    Mostra l'orientamento ai risultati

    Valuto:
    - la capacità di scendere a compromessi con le proprie “credenze religiose” (ad esempio, se un rilascio lo richiede, utilizzare una “hot fix” piuttosto che affrontare la soluzione in modo fondamentale);
    - la capacità di insistere per conto proprio quando necessario;
    - e ancora più importante - la capacità di mantenere il giusto equilibrio tra i due punti sopra indicati.

    Andrey Mudry, responsabile del progetto

    Regola 10

    Non dire "non lo so"

    Eccezione: se non hai mai lavorato con questa tecnologia e non è elencata nel tuo curriculum. In questo caso è meglio essere onesti e chiedere all’intervistatore di spiegarti la risposta corretta.

    Se non capisci di cosa stiamo parlando fai una domanda chiarificatrice.

    Se la domanda è specifica e non sei sicuro della risposta, dovresti ammetterlo ed assicurarti di fare ipotesi basate sulla tua esperienza. Spiega il tuo processo di pensiero. Se la domanda è aperta, non esiste un'unica risposta corretta.

    La risposta peggiore è il silenzio o “non lo so”. Devi provare a risolvere il problema, non importa quanto stupida possa sembrare la tua soluzione. Anche la risposta più ingenua è meglio di niente. Due o tre opzioni di risposta sono generalmente ottime. Completa queste risposte con considerazioni sulla loro applicabilità e domande aggiuntive per chiarire il problema - e sarà fantastico.

    Alexey Kolupaev, stazione di servizio

    Regola 11

    Non essere timido nell’imparare anche durante un colloquio.

    È impossibile sapere tutto. Una volta ho lavorato a un progetto che richiedeva la conoscenza di uno stack tecnologico e di una cartografia piuttosto specifici. L'esperienza ha dimostrato che pochi programmatori sono in grado di convertire la classica notazione delle coordinate da WGS84 alla notazione decimale. In questi casi, penso che una buona risposta in un’intervista sia la domanda: “Posso guardare su Google?”

    Artem Polyukhovich, direttore tecnico

    Regola 12

    Pensa a quello che dici in risposta

    Non devi fingere di essere mentalmente attivo per un minuto, ma cerca di pensare al problema nel modo più ampio possibile. Inoltre, durante le interviste ci sono spesso domande trabocchetto.

    Va bene se il candidato cerca di "dedurre" la risposta corretta alla domanda. Non indovina, ma utilizza le sue conoscenze esistenti, nonché logica, intelligenza, intraprendenza e capacità di prendere rapidamente decisioni sotto pressione. Questa qualità è molto utile in un approccio flessibile allo sviluppo, quando il cliente lo richiede soluzione rapida problemi, a volte anche durante una conferenza online.

    Sergey Chirkov, responsabile del progetto

    Regola 13

    Ammetti gli errori che hai commesso

    La capacità di analizzare e ammettere i propri errori indica che sarai interessato sia al tuo sviluppo professionale che al risultato di un lavoro specifico.

    Regola 14

    Non rovinare la tua reputazione

    Un'opinione su di te può essere rovinata da una risposta negligente alla domanda "Perché hai lasciato questa o quella compagnia?", disorganizzazione, ritardo per un colloquio senza preavviso, rifiuto di decidere compito di prova.

    Regola 15

    Costruisci una partnership con l'intervistatore

    Mi sembra che nell'espressione “rapporto di lavoro” molti si concentrino su “lavoro”, ma dovrebbero mettere più enfasi su “relazioni”. In questo senso, un colloquio è simile a un appuntamento: entrambi vi guardate più da vicino, scoprite se starete bene insieme. E quando qualcuno si sforza di sembrare migliore di quello che è, può essere irritante. A volte un candidato può essere così accattivante che è facile chiudere un occhio anche di fronte a carenze gravi.

    Alexey Kolupaev, stazione di servizio

    Regola 16

    Comportarsi correttamente

    “Correttamente” significa educatamente, rispettosamente. L'arroganza, l'ingraziamento o l'adulazione nei confronti dell'intervistatore non faranno altro che rovinare l'impressione. Anche l'umorismo non è sempre appropriato.

    È possibile identificare diversi modelli di comportamento falliti:
    • Amico- sposta la conversazione a un livello informale per evitare risposte specifiche a domande specifiche.
    • conquistatore- prende l'iniziativa nelle proprie mani, parla ad alta voce e molto e non permette che vengano poste domande.
    • Pigro- dopo un'ora di colloquio, mostra di provare un vero tormento - è improbabile che una persona del genere sia in grado di lavorare intensamente per più di 1 ora al giorno.
    • architetto- crea un gran numero di classi inutili prima di delineare un piano di soluzione. Di conseguenza, esso stesso non può trarre vantaggio dalla propria “architettura”.
    • teorico- il tipo più pericoloso, pronto a comunicare su qualsiasi argomento, purché non sia costretto a mostrare conoscenze pratiche. Può descrivere facilmente un algoritmo risolutivo, ma non è in grado di programmarlo.

    Quest’ultimo è facilmente determinabile dal seguente dialogo:
    Io: porta il tuo portatile al colloquio
    Candidato: Perché?

    Dopo un simile dialogo, è immediatamente chiaro che il candidato crede che la cosa principale nell'essere un programmatore sia parlare di tecnologie interessanti in cucina. Non sa che programmare su una tastiera familiare è molto più semplice che su una straniera. Di conseguenza, ci dedica poco tempo. Mi chiedo come sta andando la sua giornata lavorativa?

    Bogdan Gusev, stazione di servizio

    Regola 17

    Sii adeguato :)

    L’adeguatezza è un concetto abbastanza ampio. Prima di tutto, include una reazione a situazioni difficili. Cosa fa una persona di fronte a un pezzo di codice incomprensibile o a un algoritmo complesso? Come si comporterà con i colleghi quando avrà bisogno di qualcosa da loro (o ne avrà bisogno)? Cosa fa se sorge un conflitto di interessi? Cosa succede se gli viene assegnato un compito impossibile o difficile?

    Artem Polyukhovich, direttore tecnico

    Regola 18

    Sii ottimista

    Atteggiamento positivo - molto qualità utile. È molto più piacevole lavorare con una persona che sa notare i momenti positivi nella vita, nel lavoro, in ogni cosa.

    Regola 19

    Sentiti libero

    Un colloquio è una discussione tra due specialisti alla pari. Pertanto, la rigidità è più un aspetto negativo che un vantaggio. Ti impedirà di esprimerti al livello adeguato.

    Ma anche troppa fiducia in se stessi è un aspetto negativo. Un monologo di 20 minuti senza interruzioni può servire come motivo di rifiuto.

    Comportati in modo naturale, non essere timido. Ad esempio, se trovi più semplice elaborare le informazioni visivamente, non aver paura di chiedere carta e penna.

    Regola 20

    Se fallisci, impara dai tuoi errori

    Considera il colloquio come un'opportunità per imparare qualcosa di nuovo e guadagnare feedback. Ciò sarà vantaggioso anche se non ricevi un'offerta di lavoro.

    Alexander Kaganovsky, stazione di servizio

    Ciao a tutti, Javarashiti! È successo che di recente ho avuto un colloquio e vorrei dirti quali domande mi sono state poste supponendo che stessi facendo domanda per la posizione Junior++. Quelli. Non ancora una persona di mezzo, ma nemmeno una junior verde. Quindi, l'intervista è andata secondo questo piano

    1. JavaCore
    2. Database.
    3. Gli strumenti che usi.

    JavaCore

      Per prima cosa mi è stato chiesto di disegnare la gerarchia delle interfacce per le Collezioni (non è stato difficile, ce ne sono solo alcune (Collezione, Lista, Set, Coda, Mappa).

      Qual è la differenza tra ArrayList e LinkedList (questa è una delle domande e risposte più banali su Internet, solo oscurità).

      Abbiamo discusso della velocità di esecuzione delle query al loro interno e della differenza tra i fogli.

      Domanda sulla classe Object. Quali sono i suoi metodi, cosa fanno?

      Riflessione. Cosa fa il metodo getClass(). Molto domanda interessante, smontalo. Soprattutto su come ottenere tutto su una classe, anche se contiene metodi o variabili privati.

      Hanno chiesto informazioni sul multithreading. È debole, penso, dirti come capire cos'è il multithreading. Cosa è necessario per iniziare una nuova discussione. Realisticamente, se sei di livello 20+, queste domande ti sembreranno divertenti.

      Cosa puoi dire di Stream? Non si tratta di Java 8. Si tratta di flussi di input e output. Come le interfacce di base, cosa sono (carattere e byte). Per capire, nessun dettaglio.

    • Eccezioni. Anche in questo caso ci è stato chiesto di tracciare una gerarchia di eccezioni, quali tipi esistono, quali sono controllati e quali non sono controllati. Cosa fare con le eccezioni di runtime. Assegna un nome alla NullPointerException più comune.
    • La domanda è cosa si dovrebbe fare con le eccezioni verificate (avanti ulteriormente o processo: entrambi sono chiari).

    Ops

      Cos'è l'OOP in poche parole?

      Quali altri paradigmi di programmazione esistono? In cosa differiscono dall'OOP?

      Quali sono i principi di base dell'OOP (ereditarietà, polimorfismo e incapsulamento)? Raccontaci di ciascuno di essi. Fin qui tutto è astratto, non legato ad alcun linguaggio.

      Compito di comprensione della progettazione del sistema: c'è un cavallo e un uccello. Dobbiamo prendere Pegasus. principio "ha un" ed "è un"

    RIPOSO

      Cos'è il RESTO. Wikipedia ne parla in modo molto freddo. In effetti, è sufficiente un articolo di Wikipedia per conoscerlo.

      HTTP. Ci sono anche frasi generali qui. I suoi metodi, a cosa serve ciascuno di essi.

      Codici di stato HTTP. In quali cinque parti dovrebbero essere divise? Raccontaci quelle più famose (200,204,404,500,501). Perché lo fanno? Mi hanno chiesto anche del 401 e del 403. Ma non li conoscevo. Dicevano che erano importanti.

    Database

    Qui ti ho detto che conosco MySQL. Ne ho parlato circa tre forme normali. Ho parlato dei join, di cosa sono e ho disegnato l'intersezione delle aree in cui vengono utilizzati i diversi join. Ho parlato di come intendo un database relazionale. Inoltre, non mi sono dimenticato di MongoDB: questo è un database NoSQL , scriverò anche di questo.

    Altri strumenti

    Qui abbiamo esaminato il mio curriculum. È stato scritto che utilizzo Maven/Gradle per l'assembly, utilizzo JIRA per le attività, git, Docker, Swagger. Per un'integrazione continua: Stash, Bamboo, Puppet. Per testare JUnit, Mockito, JMeter. Potrei aver dimenticato qualcosa, quindi se ti interessa... chiedi nei commenti Proverò a rispondere. Questa è stata la prima parte dell'intervista. Adesso aspetto i risultati e se sì, allora ci sarà una seconda parte. Ne scriverò al più presto possibile. Chiunque abbia apprezzato l'articolo e lo abbia trovato utile - metta "+". Scrivi nei commenti. Vedi anche gli altri miei articoli:

    Siraj Rawal, sviluppatore, scrittore e vlogger, spiega come superare qualsiasi colloquio tecnico in 5 passaggi.

    Che io ricordi, ho ripetuto questo processo una dozzina di volte in varie società IT. numero enorme sia i rifiuti che le offerte. Ed ecco le lezioni che ho imparato da esso. Fare un colloquio richiede lavoro: non credere a chi dice che dovrebbe essere facile. Questo è sbagliato. Le persone parlano solo dei propri successi e mai dei propri fallimenti.

    Ho delineato diversi passaggi che ti permetteranno di evitare molti errori e superare con successo qualsiasi colloquio tecnico.

    Passaggio 1. Piano di preparazione

    Imparare. Ancor prima di avere la brillante idea di provare a trovare lavoro da qualche parte, dovresti concentrarti sul miglioramento delle tue capacità tecniche.

    Il processo di assunzione per una posizione di sviluppatore sembra più o meno lo stesso in molte grandi aziende. Di norma, si svolge in due fasi. Innanzitutto, il reclutatore comunica telefonicamente con il candidato per capire quanto è interessato alla loro azienda. Dopo aver completato con successo la prima fase, seguono 1-2 conversazioni tecniche con specialisti, durante le quali gli vengono poste domande e problemi difficili che deve risolvere alla lavagna. Deve mostrare il suo processo di pensiero nel risolvere un problema, trovare una soluzione adeguata e poi verrà assunto.

    L’unico modo per impararlo è la pratica. Tutti i miei amici che lavorano in aziende interessanti lavorano molto. Il punto qui non è avere un'intelligenza straordinaria, ma lavorare duro e con attenzione.

    La domanda sorge spontanea: cosa dovresti praticare esattamente? Non verrà verificata la tua conoscenza della sintassi di nessun linguaggio. Se vuoi, puoi imparare le basi della sintassi di Ruby durante la notte. Ma ciò per cui la notte non basta sono le basi dell'informatica fondamentale. Ma durante il colloquio metteranno alla prova la tua conoscenza delle strutture dati e degli algoritmi.

    Inizia frequentando due corsi:
    Introduzione alle strutture dati (My Code School)
    Introduzione agli algoritmi (corso aperto del MIT)
    Entrambi sono dentro accesso aperto e sono ideali per ottenere conoscenza di base per queste sezioni.

    Successivamente potrai consolidare le conoscenze acquisite su HackerRank e HackerEarth. Queste risorse contengono un numero enorme di problemi per affinare le tue capacità di programmazione.

    Dopo aver risolto un paio di dozzine di enigmi da entrambi i siti, leggi i libri "Interviste tecniche come sono" e "Breaking the Technical Interview". Ti guideranno attraverso molti compiti specifici da interviste reali, da problemi di progettazione dei sistemi a domande su tempo e complessità.

    Dopo aver completato tutti i rituali di cui sopra, inizia a provare un'intervista con uno dei tuoi amici. Chiedigli di farti delle domande e di rispondere, usando solo un pennarello e una lavagna bianca e spiegando i tuoi pensieri ad alta voce. Consiglio di farlo per due o tre mesi, due o tre ore al giorno.

    Passaggio 2: trova le aziende che ti interessano

    Se il processo di preparazione per ogni colloquio dura dai due ai tre mesi, allora, naturalmente, non vorrai davvero sprecare questo tempo prezioso con aziende che non ti impressionano.

    Tenere traccia della preparazione e del processo di colloquio delle aziende può essere piuttosto stressante, ma cerca di rimanere organizzato. Fai un elenco delle aziende che ti interessano e annota la fase del tuo rapporto con ciascuna di esse. Angel.co e Hacker News sono buone risorse per questo.

    C'è qualcosa di soprannaturale in questo. Dovrai mettere a dura prova tutte le tue forze abilità psichiche, per capire come applicare al meglio le tue competenze nel campo desiderato e trovare aziende che ti permetteranno di farlo.

    Passaggio 3. Crea un portafoglio

    Le grandi aziende ricevono centinaia di curriculum al giorno, quindi devono semplicemente eliminare gran parte della mediocrità che non interessa loro. Come distinguersi da questa massa grigia? Assicurati che tutte le parole del tuo curriculum rientrino in un'unica pagina e che sia conciso ma pertinente. Illuminalo al massimo lavoro importante fatto da te.

    È una buona idea avere diversi curriculum: uno per ogni specialità o per ogni azienda in cui stai cercando di trovare lavoro. Nel tuo portfolio, separa progetti personali, progetti di hackathon, contributi a progetti open source.

    GitHub è un ottimo posto non solo per archiviare il tuo codice, ma anche come un altro portfolio che può esserti utile.

    Trasforma il tuo miglior progetto web nel tuo sito web per curriculum. Cerca di farlo sembrare elegante e professionale in modo che possa impressionare un potenziale datore di lavoro.

    Passaggio 4. Ricevi un invito per un colloquio

    Il modo più semplice è candidarsi per un posto vacante in azienda su un sito web specializzato. Ma le grandi aziende ricevono ogni giorno molte risposte di questo tipo ed è molto facile perdersi tra loro. Buona opzione- inviare un'e-mail al reclutatore dell'azienda, in modo breve e conciso. Includilo breve panoramica su chi sei e cosa vuoi fare, un collegamento a un progetto facilmente accessibile e pertinente ed esprimi il desiderio e la volontà di imparare e sperimentare cose nuove.

    E' ora di passare a...

    Passaggio 5. Supera il colloquio

    A volte l'intervistatore può essere più nervoso di te, e va bene. Sorridi, sii educato, chiarisci che lo capisci e che sei disposto a collaborare per raggiungere il suo obiettivo obiettivo comune.

    Quando risolvi problemi tecnici, non aver paura di pensare ad alta voce. Ricorda che questo è esattamente ciò che vogliono da te: la risposta corretta non è tanto importante quanto il corso corretto dei tuoi pensieri. Quando una persona in cerca di lavoro propone la prima soluzione, il reclutatore spesso gli chiede di trovare opzioni migliori. È qui che entrano in gioco le tue conoscenze informatiche.

    E non essere timido nel fare domande. L'intervistatore è lì per aiutarti. E sebbene il suo obiettivo principale sia valutare le tue capacità, è anche importante per lui cercare di trovare una relazione con te. linguaggio comune, collaborare con te e aiutarti a raggiungere un obiettivo comune. Quindi se vieni preparato, andrà tutto bene.

    Conclusione

    Prepararsi per un colloquio e superarlo è un processo responsabile e dispendioso in termini di tempo. Mai, mai, MAI lasciare che il rifiuto ti abbatta. Anche superare un colloquio lo è ottima esperienza, anche se non sei stato assunto. Pertanto, nel tempo, raggiungerai le competenze più elevate e sarai in grado di superare con successo qualsiasi colloquio tecnico. La cosa principale è allenarsi, credere in se stessi e rimanere motivati.

    Le interviste sono in cima alla lista delle più grandi paure della maggior parte delle persone, insieme a parlare in pubblico. Non solo ti esibisci davanti a qualcuno, ma vieni anche costantemente valutato per tutto il tempo... brrrr!

    Naturalmente, siamo lontani dal cercare di comprendere e superare le tue barriere psicologiche, ma è sicuramente meglio vedere le interviste come un'opportunità per mostrare tutte le cose interessanti che hai creato e tutte le nuove abilità interessanti che hai imparato. Le migliori interviste- queste sono conversazioni entusiastiche con un taglio tecnico.

    Il primo passo prima di tutto questo è la preparazione. Ti consigliamo di pensare alle possibili domande (e alle risposte più comuni che mettono in risalto la tua genialità) e ricercare l'azienda assumente. La tua conoscenza dell'azienda ti aiuterà a presentarti in un modo adatto alle loro esigenze e ti consentirà anche di porre domande intelligenti sui loro prodotti e tecnologie quando sarà il momento. Ancora una volta, fate riferimento all'articolo di Happy Bear per consigli pratici.

    Cos'è l'intero processo?

    Solo una piccola panoramica del processo che attraversa la media azienda tecnologica quando si assumono sviluppatori:

    1. Colloquio preliminare telefonico (Phone Screen)
    2. Colloquio tecnico
    3. Testare i termini di riferimento
    4. Interviste di follow-up per garantire che tu sia adatto (Interviste di idoneità)
    5. Offerta di lavoro
    6. Discussione dei termini dell'offerta (negoziazione dell'offerta)
    7. Accettazione dell'offerta

    Colloquio telefonico preliminare

    Congratulazioni! Il tuo curriculum si è rivelato non dei più disastrosi e sei stato invitato per un colloquio telefonico (nota che a volte svolgi prima un compito di prova). Il vero scopo di questo passaggio, che spesso prevede una conversazione di mezz'ora con qualcuno delle risorse umane (piuttosto che con il decisore per l'assunzione), è quello di assicurarsi di avere buone possibilità di superare il resto del processo di colloquio. Quindi consideralo come una versione più leggera degli altri passaggi.

    Probabilmente ti verranno chieste alcune delle cose tecniche che inserisci nel tuo curriculum, ma non andare troppo in profondità (anche se alcuni datori di lavoro fanno alcune domande piuttosto complicate), e probabilmente ti verranno poste alcune domande "più morbide" su perché hai scelto questo lavoro e cosa hai fatto prima. Le interviste telefoniche possono variare notevolmente da azienda ad azienda. La tattica principale qui non è affatto una tattica, sii solo onesto, energico e aperto. E non aver paura di esercitarti a parlare di te stesso davanti allo specchio.

    UNA NOTA FINALE - Questo non è un metodo valido per tutti e molte aziende lo saltano preferendo immergersi direttamente nelle profondità di un colloquio tecnico, quindi è necessario prepararsi per ogni evenienza. Il collegamento sottostante a Coding Horror è il più illustrativo di questo caso.

    • Ottieni l'eccellenza nelle interviste telefoniche con Monster
    • 7 passaggi per raggiungere l'eccellenza nelle interviste telefoniche

    Colloquio tecnico

    Il colloquio tecnico è solitamente la parte più spaventosa del processo di selezione. Qui valuteranno se possiedi le competenze tecniche richieste. Ciò significa che non solo ti chiederanno dettagliatamente del tuo lavoro, ma ti chiederanno anche di decidere problemi logici oppure scrivi il codice direttamente lì o abbozza un diagramma di alcuni nuovi componenti.

    In effetti, uno degli scopi di un colloquio del genere è portarti al limite massimo delle tue capacità, solo per vedere come reagisci a cose non familiari. Se fai un esercizio troppo facile, passeranno a qualcosa di molto più difficile. Ci saranno sempre posti in cui inciampare, soprattutto per i principianti. La tua più grande risorsa è la tua onestà e curiosità.

    Quando risolvi un problema, assicurati di farlo in modo chiaro e logico, spiegando ad alta voce perché stai eseguendo un determinato passaggio. Parla di tutti gli ostacoli che hai incontrato e fornisci esempi di come li risolveresti in " mondo reale". Spesso la risposta è "Google" alcuni funzione specifica. Dillo così! Sanno che non sei un esperto di Ruby, ma devono anche sapere che puoi trovare soluzioni ai problemi che inevitabilmente incontrerai sul lavoro.

    È anche del tutto normale se usi la forza bruta, un metodo inefficiente, per risolvere un problema di codifica. Questo è spesso il miglior punto di partenza per avere un'idea corretta del problema. Molto probabilmente ti verrà chiesto come puoi migliorare la soluzione, ma questo è molto meglio che cercare di trovare la soluzione perfetta e non avere il tempo di scrivere nulla alla fine. Ancora una volta, il tuo compito non è quello di essere un candidato eccezionale, ma di dimostrare che sei adattabile e resiliente di fronte alle sfide.

    E se non sai qualcosa, è meglio dirlo onestamente e provare a rifletterci con l'intervistatore. Credimi, vogliono che tu abbia successo tanto quanto te, perché non c'è niente di peggio per un intervistatore che vedere qualcuno che cerca silenziosamente di risolvere un problema, rimanendo sempre più bloccato senza chiedere aiuto e senza far sapere a nessuno cosa stava facendo. pensiero.

    Dovrai leggere grandi quantità cose che non erano state enfatizzate nei corsi precedenti, ad esempio, strutture dati e algoritmi, semplicemente perché sono domande molto popolari al riguardo nelle interviste. Non sempre riflettono bene le capacità di programmazione, ma capita che risponderai a domande che rientrano nel regno più accademico dell'informatica.

    Collegamenti

    • Diamo un'occhiata all'intervista per i programmatori: DEVE LEGGERE IL MATERIALE chi sarà tuo migliore amico. Dà uno sguardo completo a tutti i tipi di sfide che dovrai affrontare in un colloquio. Va oltre ciò che abbiamo già trattato in questo corso e tocca cose che è bene sapere perché è probabile che le incontrerai. Prendetevi il tempo per conoscerne quanti più possibile un gran numero materiale.
    • Interviewing.io ti dà la possibilità di praticare interviste tecniche in modo anonimo e online.
    • Come ottenere un punteggio perfetto in un colloquio tecnico
    • Come distinguersi nel prossimo colloquio di lavoro da sviluppatore web
    • Leggi 40 concetti chiave dell'informatica spiegati in un linguaggio di facile comprensione
    • Guida alle competenze tecniche di Google(per avanzato)

    Attività di test di programmazione:

    • 8 regine è un problema classico.
    • Programmazione per le interviste: conoscere le librerie standard può essere eccessivo per un principiante, ma non fa mai male se ti prendi il tempo per farlo.
    • Nel Progetto Euler troverai problemi più generali e complessi che devono essere risolti in modo efficiente (potrebbero richiedere molti calcoli).
    • Pubblicato su Coding Bat questioni pratiche per Java e Python.

    Addestramento dell'algoritmo:

    • Corso di algoritmi di Udacity (non sincronizzato)
    • Corso di algoritmi di Coursera (parzialmente sincronizzato)

    Architettura:

    Compito di prova tecnica

    Test compiti a casa può avvenire prima o dopo un colloquio personale, a seconda dell'azienda. Ti verrà assegnato un compito che richiederà un'intera giornata per essere completato in qualsiasi momento conveniente per te. Esempi di tale compito potrebbero essere la creazione di un'applicazione Web di esempio con test o la risoluzione di un problema algoritmico complesso con la scrittura di codice.

    La valutazione si baserà sulla completezza della soluzione e sulla qualità del tuo codice. Se ciò avviene prima del colloquio tecnico, allora lo è buon metodo verifica il tuo interesse (fino alla metà dei candidati non torna nemmeno con una soluzione).

    Colloquio finale (“Idoneità”)

    L’ultimo passo prima di prendere una decisione è solitamente conoscere per qualche ora il team e gli uffici. Potresti essere messo alla prova tecnicamente, ma l'obiettivo principale è assicurarti che sarai un buon collega. Se qualche altro membro del team dice che non lavorerai bene, molto probabilmente non ti assumeranno. Consiglio? Non c'è bisogno di essere strani o imbarazzanti, anche se sei a casa :)

    Questa è anche un'opportunità per te. Se sei arrivato fin qui per arrivare a questo passaggio, ci sono buone probabilità che tu sia generalmente idoneo. Devi considerare se vuoi lavorare per questa azienda, quindi prepara un elenco di domande e ottieni le risposte.

    Un po' di salari

    Non. Esprimilo. Il tuo. Stipendi. Aspettative.

    Ti verrà sempre chiesto “quanto vorresti ricevere?” La tua risposta? “Vorrei essere pagato al prezzo medio di mercato” (a meno che tu non sia così arrogante da chiedere un prezzo superiore al prezzo di mercato. Vediamo come funziona per te). Non otterrai nulla nominando il livello di stipendio desiderato. Se risulta essere inferiore a quello che volevano offrirti, abbasseranno semplicemente questo livello. E se è più alto, interromperanno semplicemente l'intero processo, decidendo che sei troppo costoso per loro.

    Una volta ricevuta un'offerta, puoi verificare come si confronta con la retribuzione media di mercato chiedendo ad alcune persone (si spera che tu conosca già alcune persone a cui chiedere) o andando su Glassdoor (ricorda solo che sei un principiante, il che significa che puoi non riceverà uno stipendio “medio”). La cosa più importante è non farti del male quando ti viene chiesto.