JavaRush /Java Blog /Random-IT /Una guida per il futuro sviluppatore Java. Intervista e c...
Fry
Livello 41
Львов

Una guida per il futuro sviluppatore Java. Intervista e carriera

Pubblicato nel gruppo Random-IT
Una guida per il futuro sviluppatore Java.  Colloquio e carriera - 1 La Forza è un fiume a cui molti possono bere, e l’addestramento Jedi non è l’unico modo per attingere ad essa." — Luke Skywalker Tutte le selezioni dei libri vengono lasciate indietro. Sta a te decidere quali leggere e quali no. Ora ti resta solo un obiettivo: trovare un lavoro e costruire una carriera senza calpestare un rastrello. L'ultimo articolo è diviso in sezioni: - Prima del lavoro - Intervista - Durante il lavoro Questa parte contiene molte delle mie opinioni personali, quindi per favore non prendere le frasi fuori contesto e trattale come una conversazione franca con un vecchio amico :).

Prima del lavoro

Di seguito sono riportati i dieci cliché più popolari che sorgono quando l'anima è attratta dalla programmazione, ma alcune circostanze interferiscono con la persona. Il mio compito è cercare di fermare la tua diffidenza e prepararti a un modo di pensare positivo. Se stai leggendo questo articolo, sei più lontano di quanto pensi! Mentalmente sei già dove devi essere e, se hai già letto alcuni libri, allora sei già a metà strada. Pertanto, smetti di dubitare: questa è la sorte dei deboli. Solo avanti! Già meglio? Allora andiamo! "Non ho istruzione" Quando ero completamente inesperto e sono entrato nell'accademia di una delle grandi società di outsourcing, gli intervistatori mi hanno gentilmente fatto capire che non erano affatto interessati a un diploma, quindi le domande erano specifiche: sull'OOP e sulle nozioni di base Giava. Naturalmente, ti imbatterai in posti vacanti in cui la disponibilità della tecnologia. l’istruzione sarà un requisito chiaro. Voglio solo dire che la sua assenza non è un ostacolo di questi tempi. Molte sedi estere richiedono una laurea in Informatica o, attenzione, esperienza rilevante. Non convince? Forse ti incoraggia il fatto che non ho una formazione tecnica ;), ma questo non mi ha assolutamente impedito di fare esperienza in grandi aziende. Chiedimi ora, cosa farei se potessi riavvolgere il film? Naturalmente andrei su KPI/NAU, ma non sarei troppo triste se non entrassi. Smettila di preoccupartene. Il tempo passerà: puoi ottenere una laurea a 40 anni, se lo desideri, ma per ora concentrati sul diventare uno sviluppatore junior qui e ora. "Ci saranno persone più intelligenti di me" Ci saranno sempre persone più intelligenti, più intelligenti, più flessibili, più talentuose di te, e qualsiasi lavoro non fa eccezione. Questo fatto non ti dà assolutamente il diritto di deviare dal tuo obiettivo. Forse, da qualche parte dall'altra parte del globo, c'è un ragazzino giapponese che moltiplica e divide i numeri più velocemente di te, e una nonna della Repubblica Ceca che digita sulla tastiera del cellulare più velocemente di qualsiasi adolescente. Ma tu non ci pensi, vero? Allora perché dovresti preoccuparti delle persone con cui lavori una volta assunto? In un certo senso, i tuoi futuri colleghi saranno superiori a te, e in altri saranno inferiori a te. Questo va bene! Lo cancelliamo. “Non credo di poterlo fare” Beh, prima di tutto nessuno ha detto che sarebbe stato facile, ma questo non significa affatto che il tuo obiettivo sia impossibile. Non c'è nulla che ti impedisca di provare semplicemente, anche se attualmente lavori come contabile o consulente di vendita. Vieni dopo il lavoro e siediti a studiare. Se col tempo vedi qualche progresso, questo è segno che ti stai muovendo nella giusta direzione. Divieto di sosta! Se questo ti interessa anche solo un po' e ti viene dato, allora non conosco un solo punto che possa convincermi che non ne sei degno. "Sono sopraffatto dalla pigrizia" La pigrizia è semplicemente una mancanza di motivazione. Se noti che la maggior parte del tuo tempo libero, invece di studiare e restare sul pezzo, stai stupidamente facendo spazzatura, mi affretto ad avvisarti che, molto probabilmente, essere un programmatore non fa per te. Almeno non ora. Alcuni chiamano la pigrizia un peccato, una malattia, il colera dell'età moderna insieme all'obesità. Lascia la questione agli isterici della carriera. Secondo me, tutto intorno a questa vita è intriso dell'illusione della lotta e della competizione: chi è più alto, chi è più forte, chi è più ricco. Chi ha una macchina più bella, chi nella squadra ha uno stipendio più alto, chi fa distensioni su panca più pesante in palestra, quale delle ragazze si è sposata prima e ha avuto figli - questo ti fa schifo, come un fast food puzzolente. Le persone hanno smesso di vivere e godersi la vita, seguendo i propri sogni, scambiando la propria zona di comfort con la scelta tra Pepsi e Coca-Cola. Per me la pigrizia è buona, è semplicemente meravigliosa. Questa è una normale funzione protettiva del tuo corpo per risparmiare energia e tempo su cose che gli sono inutili. L'uomo è stato creato per essere libero, quindi se sei pigro, smetti di provare a sollevare il sedere dal divano: forse ora è al suo posto :). "Ci vado per i soldi" Se riunisci gli sviluppatori e dici: d'ora in poi il tuo stipendio sarà di 3-4k grivna per qualsiasi livello, e i tester continueranno a ricevere le stesse tariffe, allora la domanda sarà diversa: non quanti sono una bomba, ma quanti programmatori rimarranno programmatori dopo questa notizia. Molte persone entrano nell'IT per via dei soldi. Stipendio tradotto in dollari, formaggio e una costosa DSLR. Non importa quanto lavorassi con le persone, c'erano sempre conversazioni su questo argomento. Non sto dicendo che questo sia un male, voglio solo che tu non cerchi di convincerti che sei venuto per scopi puramente spirituali per cambiare il mondo in meglio. Prima di trovare lavoro da junior, sapevo quali erano gli stipendi dei senior, dei responsabili tecnici e persino dei quadri intermedi, e questi pensieri mi hanno solo ispirato: prima di lavorare come programmatore, potevo solo sognare figure del genere. Chiama queste cose con il loro nome e smettila di vergognartene. “Mi sembra che questo non sia mio”. Di chi allora? Sai, è facile controllare. Apri il primo volume di Hortsmann e inizia a leggere e scrivere il codice dagli esempi. Se non ti annoi e non segnerai il tempo sullo stesso capitolo per la seconda settimana, metti da parte i tuoi dubbi. Lo studio delle specialità tecniche è una cosa sequenziale. Non puoi passare a B senza conoscere A, ma avrai sempre la possibilità di tornare indietro di un capitolo e rafforzare le tue basi. Fallo. “Ce ne sono molti come me” C'è sempre competizione per un posto. Non discuto, ad esempio, che ora ci siano 300-400 tester senza esperienza, o anche di più per posto. Sì, questa è l'amara verità, ma d'altra parte anche con tali indicatori non riesco a trovare un punto sufficientemente serio. Sì, almeno 100500 per posto!! Hai sempre l'opportunità di acquisire esperienza sui tuoi progetti: crea qualche tipo di servizio, un programma desktop, usa l'intero stack che conosci - e stai già facendo progressi, mentre il resto, oltre a inviare il tuo curriculum, lo fa nient'altro. “Nessuno risponde al mio curriculum” Continuazione del punto precedente. Molto probabilmente, per i futuri specialisti IT senza esperienza, essere in grado di scrivere un bel curriculum è positivo, ma quando ci sono molte persone per un posto vacante, molti curriculum sono molto simili tra loro: tu, ovviamente, puoi inviare una foto con una scollatura (se una ragazza) o scrivi molte tecnologie, che tu stesso conosci solo da Wikipedia. In entrambi i casi, alle risorse umane semplicemente non interessa: se il posto vacante del progetto deve includere una persona che, ad esempio, conosce AWS, allora cercheranno AWS nel curriculum. Prendi in considerazione un altro punto importante, come le raccomandazioni dei colleghi. Questo è il dolore di chiunque non abbia tali conoscenze, perché da lì viene presa la maggior parte dei giovani (se la persona è raccomandata, non un idiota, ovviamente). Di solito, per la posizione junior, assumono, sottolineo, una persona attiva adeguata, pronta a imparare e anche a mangiare. E se un candidato del genere fallisce, molto probabilmente sarai il prossimo. Bene, mentre gli altri vengono intervistati, hai molte aree in cui puoi migliorare le tue capacità: open source, attività su Internet e magari freelance. “Non supererò il colloquio/Voglio entrare in un’azienda specifica” Sì, molto probabilmente il primo colloquio sarà un fallimento, ma l’esperienza che acquisirai non ha prezzo. Con ogni colloquio successivo diventerai più sicuro e intraprendente. Ricordo ancora il mio primo... Dio, di che sciocchezze stavo parlando?! È stato un vero peccato andarsene dopo (mi sono ricordato di quel demone che mi ha sorriso in faccia), ma quando sono tornato a casa e ci ho pensato su, ho capito che era una lezione meravigliosa. Dopo di lui, tutti i successivi eventi simili furono intrisi di facilità e sicurezza. Nessuno è morto, cercano persone come me, il che significa che salirò. Credi in te stesso! Se vuoi specificamente entrare a far parte di una determinata azienda, penso che non ti dirò un trucchetto popolare nel nostro ambiente, ma comunque: prima di organizzare un incontro con questa azienda, fai un colloquio con i concorrenti. Forse ti verrà offerto qualcosa che non puoi rifiutare, oppure le condizioni saranno più dure. Una cosa so per certo: non te ne pentirai. “Anche io mi trovo bene in questo lavoro” Sapete, c'è un vecchio detto: Le mieux est I'enneini du bien (“Il meglio è nemico del bene”). Forse il tuo lavoro non è il posto peggiore in cui stare, ma sì, il capo è uno stronzo, e allora? Oppure, ad esempio, il terzo anno senza bonus, ma con uno stipendio stabile, soprattutto perché ho già più di 30 anni. In una certa misura, questo può essere vero, ricorda solo che hai una vita e non dovresti sprecarla delusioni, per conforto immaginario, quando ci sono così tante cose interessanti in giro, e tutta la tua vita non basta per capire. Non aver paura di essere migliore, non aver paura di essere il migliore. Non ascoltare nessuno, vai verso il tuo obiettivo con tenacia se sai che questo è ciò che vuoi veramente fare. Non aver paura di cambiare!

Colloquio

In generale, puoi trovare tutto questo su Internet o chiedere ai tuoi amici, ma penso che non sarà superfluo. Di seguito è riportato un esempio di intervista per uno sviluppatore Java junior, come sarebbe adesso se fossi io l'intervistatore. Le domande possono essere qualsiasi cosa, ho solo cercato di raccogliere qualcosa di mediocre sull'ospedale. Immaginiamo che tu sia fortunato. Schema standard Passaggio 1. Un reclutatore ti chiama e tu fisserai un colloquio con lei, ad esempio, domani alle 11:00. Passaggio 2. Arrivi prima, poiché molto probabilmente le 11:00 non è l'ora per te, ma per gli sviluppatori, che hanno riservato una sorta di stanza in cui ti tortureranno. Sarebbe buona pratica per qualsiasi reclutatore avvisare di questo. Fase 3. Infatti, a partire dalla fase 3, tutti i punti possono essere mescolati, perché le interviste possono andare diversamente. Ad esempio, qui potrebbero esserti chieste cose basilari, da dove vieni, perché qui e così via. È possibile che le risorse umane stesse possano farlo e, ovviamente, è possibile che in inglese. Davvero, dipende dalla compagnia. Passaggio 4. Sei invitato in una sala riunioni, dove avrai una conversazione con una, due, tre persone, una delle quali sarà un senior o un responsabile tecnico che lavorerà con te in futuro, tra gli altri lì può essere uno Scrum Master, altri sviluppatori o risorse umane. Ti intervistano per un po', poi ti stringono la mano e ti lasciano andare. Passaggio 5. Forse sarà il giorno successivo, o forse immediatamente dopo il passaggio 4: avrai una conversazione con il cliente straniero (se ce n'è uno), o forse condurrà lui stesso il colloquio. Come puoi vedere, ci sono molte opzioni. Da qualche parte ci sono i clienti, da qualche parte c'è anche un'intervista telefonica. Questo è solo un esempio. Esempio di colloquio tecnico per uno sviluppatore Java Junior Mi dispiace molto per i sottosviluppatori che leggono qualcosa di intelligente con l'obiettivo di affogare/schiacciare/mettersi in mostra davanti al candidato durante il colloquio. Se vedi una persona simile di fronte a te e senti pressione e tensione da parte sua, mandalo immediatamente a tre divertenti, perché dopo aver completato con successo dovrai lavorare con questo idiota. Non sprecare i tuoi preziosi nervi. Il colloquio, innanzitutto, dovrebbe essere condotto con l'obiettivo di scoprire cosa il candidato sa, e non cosa non sa. Naturalmente, se avete bisogno di una persona che sappia qualcosa di specifico, chiedeteglielo, non disturbatelo con cose inutili che non utilizzate nel progetto. Sii umano, dopotutto! Di seguito sono riportate le domande approssimative che potrebbero sorgere durante un'intervista. 5 domande per ogni tecnologia. Ops 1. Fornisci un esempio di polimorfismo nella vita reale? Quali sono i vantaggi? Screpolatura? Scrivi del codice semplice. 2. Cos'è un'interfaccia? Classe astratta? Perché abbiamo bisogno di interfacce se possiamo stupidamente scrivere tutto in classe (una piccola provocazione)? Lo stesso vale per la classe astratta. Quali sono i metodi predefiniti in Java 8? 3. Costruire una gerarchia di classi utilizzando un esempio specifico di un database o programma immaginario (c'è un elenco di diverse classi di lavoratori dal database) e l'interazione tra loro (aggregazione, composizione). 4. In che modo la composizione differisce dall'aggregazione (is-a, has-a)? 5. Come si può aggirare il divieto dell'ereditarietà multipla in Java? JDK/JRE 1. In cosa differisce JDK da JRE? Cos'è la JVM? 2. Cos'è classpath e a cosa serve? Come, ad esempio, caricare altre classi nel classpath? 3. Cosa sai del classloader? 4. Ci parli di Javadoc? Cosa serve? 5. Cos'è JAR, WAR? Java Common 1. Qual è la differenza tra metodi statici e non statici? Cos'è definitivo? 2. Cos'è il boxing-unboxing? byte b = 127, b++, qual è il risultato e perché? 3. Cosa sono i wrapper, a cosa servono? 4. Cosa devo fare per creare la mia annotazione? Cos'è l'override/sovraccarico? 5. Perché la classe String è definitiva? Cosa fa il metodo intern()? Strutture dati 1. Spiegare la struttura delle Collections API in Java? Hai già lavorato con l'API Stream? 2. Qual è la differenza tra ArrayList e LinkedList? Dove è meglio usare ArrayList e dov'è LinkedList? 3. Raccontaci come funziona HashMap? Quali sono le caratteristiche di lavorare con TreeSet, HashSet? Hai esperienza con le collezioni Guava? 4. Array in Java, esempio di array bidimensionale. 5. hashCode, equivale a usare HashMap come esempio? Concorrenza 1. Cos'è un processo? Fluire? Come creare una discussione? Cosa è sincronizzato? Come comprendere questo o quel pezzo di codice thread-safe? 2. Cos'è Thread.sleep e anche attendere, notificare, cedere? 3. Fai un esempio di stallo? 4. Collezioni quando si lavora con il multithreading. 5. Operazioni ThreadLocal e Atomic SQL/JDBC 1. Utilizzando un esempio specifico, ottenere dal database Utenti quello il cui stipendio è maggiore di 5000. 2. Esempi INNER JOIN, OUTER JOIN, Order By, Group By. 3. Perché hai bisogno di un driver JDBC? Esempi. 4. Raccontaci tutto quello che sai su ResultSet, un paio di esempi. 5. Scrivere un semplice DAO utilizzando RS. JPA/Ibernazione 1. Quali sono gli svantaggi e i vantaggi di JPA? 2. Cos'è EntityManager? Entità? 3. Criteri in JPA/Hibernate. 4. Uno a uno, molti a molti in JPA/Hibernate 5. Come eseguiresti un JOIN in Hibernate? HQL? Primavera 1. Cos'è DI/IoC? Vantaggi. 2. Cos'è il contesto dell'applicazione? Fagiolo? 3. Quali sono i tipi di inizializzazione IoC? 4. Singleton, prototipo in primavera? Primavera basata sulle annotazioni? 5. Ciclo di vita dei fagioli? Metodo init, metodo destroy? @PostConstruct, @PostDeploy? Esperto di 1. Fasi principali di Maven, ciclo di vita. 2. Come eseguire Maven con test, senza test? Cos'è l'archetipo, la dipendenza da mvn? 3. Profili in Maven, come creare, come avviare. 4. Cos'è lo snapshot in Maven? Repository centrali/remoti? 5. Plugin in mvn, come funzionano, un paio di esempi. Algo 1. Il concetto di algoritmo, la sua velocità, Big-O-Notation. 2. Come trovare l'elemento centrale in LinkedList in un colpo solo? 3. Scrivere uno Stack primitivo? Qual è la differenza tra Stack e Coda? LIFO, FIFO? 4. Ordinamento rapido, Unisci ordinamento. 5. Scrivere un programma che controlli se un numero è palindromo. Sono d'accordo, forse l'asticella è piegata un po' più verso il centro rispetto agli junior, ma penso che una preparazione del genere sicuramente non ti farà male. Prova ad approfondire ogni domanda. A proposito, molte aree di Java non sono indicate qui, tienile in considerazione.

Durante il lavoro

Ecco alcuni piccoli consigli per gli sviluppatori junior/medi che si sono già sistemati. Questi semplici consigli potrebbero aiutarti proprio come hanno aiutato me. Non essere testardo. Smetti di provare a dimostrare il tuo punto, anche se è incredibilmente vicino alla verità. Hai già notato che stai litigando da molto tempo, il che significa che dall'altra parte delle barricate c'è un normale asino che ha solo due opinioni nella vita: la sua e quella sbagliata. Abbiamo un numero incredibilmente elevato di persone testarde che mantengono la propria posizione fino all'ultimo, solo per non vacillare il loro ego. E questi non sono solo i tuoi colleghi, sono semplicemente ovunque - sul minibus, nel negozio, parenti, amici intimi - non puoi scappare o nasconderti da loro. Devi in ​​qualche modo interagire con loro, anche se capisci che la persona sta parlando apertamente senza senso. Inoltre, la stessa cosa può succedere a te. Sono d'accordo, le cose semplici possono essere spiegate anche a una persona testarda, ma cosa succede se si parla di questioni architettoniche in un progetto o di un'opinione personale? Dimentica questa spazzatura: sii flessibile. Ho molto rispetto per le persone che possono ammettere di aver commesso un errore davanti a tutti. Questa è proprio la qualità che ti sarà utile come specialista junior: è difficile confrontarsi con una persona aperta, soprattutto quando ammette che sta imparando e ha il diritto di commettere errori. Non fare tardi Non importa se è un periodo di prova o semplicemente un venerdì, quando tutti se ne dimenticano e arrivano alle 11. Un'altra cosa è importante: la puntualità è una caratteristica di un professionista che guadagna punti extra all'improvviso . E i punti extra non danneggeranno una persona senza esperienza, giusto? Cerca di non arrivare in ritardo e di lasciare il lavoro dopo aver lavorato onestamente per 8 ore. Non abusare delle stime Sfortunatamente, questa è una situazione molto comune in cui mi sono ritrovato una volta in passato. Lo sviluppatore si è dato 8-16 ore per completare l'attività e inaspettatamente l'ha completata in 3-4 ore. Le restanti ore del suo tempo libero le trascorre giocando a ping pong, come nel mio caso, o guardando YouTube e altri divertimenti. Dal punto di vista legale sembra che ci siamo accordati, ma dal punto di vista umano ti stai privando di cose molto importanti: 1. Stai fermo, perché stai riempiendo il tuo tempo libero con cose inutili; 2. Non stai sviluppando perché non informi il tuo management sui tuoi rapidi progressi, nessuno sa che stai completando le attività più velocemente del previsto; 3. Inizi a sopravvalutare costantemente la quantità media di tempo per i valori, questa è solo una strada che non porta da nessuna parte. Prenditi del tempo per studiare La possibilità di rimanere indietro rispetto alla locomotiva è irrealisticamente alta, quindi tieni presente che la tecnologia e le nuove versioni si stanno sviluppando molto rapidamente. Iscriviti agli evangelisti Java dei nostri giorni, leggi i riassunti Java e in generale sii interessato, impara cose nuove. Questo ti aiuterà a mantenere e sviluppare il tuo marchio. Aiutare gli altri Non aver paura di aiutare gli altri, anche se sono inesperti come te. In primo luogo, rafforzerai notevolmente le tue conoscenze e, in secondo luogo, guadagnerai rispetto agli occhi degli altri e allo stesso tempo ti aiuteranno. In un ambiente del genere nascono le squadre migliori e una crescita tecnica e personale molto rapida. Fare sport. Avere un hobby No, sul serio. Non solo le persone che fanno attività fisica appaiono e si sentono meglio, ma anche la loro funzione cerebrale è migliore! A ciò contribuiscono scoliosi, parte bassa della schiena, eccesso di peso, vari problemi agli organi interni: stare seduti al computer 24 ore su 24, anche fuori dal lavoro. Se non puoi fare sport (cosa di cui dubito), usa piccoli trucchetti: lavora stando in piedi di tanto in tanto, scendi due fermate prima e vai al lavoro a piedi. E in generale, cammina di più. Esiste anche il rischio di esaurimento se la programmazione richiede molto più tempo di 40 ore settimanali. Gli hobby personali verranno in soccorso, ad esempio fotografia, musica, ecc. Dedica regolarmente tempo alla spiritualità. Bilancia la tua vita personale Quando la tua ragazza/moglie dice: "il laptop o io", devi pensare attentamente al posto che occupa la programmazione nella tua vita. D'altra parte, quando inizi il tuo viaggio nell'IT, devi spiegare chiaramente alla tua dolce metà che ora devi studiare molto per ottenere di più. Spero che capiscano. Bene, prova a bilanciare e distribuire correttamente il tuo tempo. Andare oltre Sii proattivo, se ritieni, ad esempio, di poter condividere conoscenze o avere argomenti interessanti, perché non organizzare piccoli corsi all'interno dell'azienda per altri? Non aver paura di prendere parte a grandi progetti open source se sai come puoi aiutare. Se vuoi scrivere un gioco, un progetto sociale o un'altra idea, fallo, fallo, fallo! Non restare fermo, cerca sempre modi per svilupparsi. Sii competitivo Osserva le nuove tendenze e rimani aggiornato sulle tendenze che stanno accadendo nella comunità Java. Ad esempio, non farà male se di tanto in tanto, di tanto in tanto, monitori le offerte di lavoro Java su DOU, ma non per allontanarti dal lavoro, ma per sapere quali tecnologie rimangono rilevanti e quali stanno lentamente scomparendo dal mercato . Prova anche a seguire corsi su Coursera, Udacity, ecc., esplora nuovi orizzonti. E anche l'inglese: prova a guardare i tuoi film/serie preferiti in originale con i sottotitoli per migliorare le tue capacità di conversazione, scarica un paio di applicazioni interessanti per imparare la lingua (ad esempio LinguaLeo), e, per finire, segui i corsi.

Conclusione

Bene, il mio piccolo progetto su DOU sta per finire. Cari amici, vi auguro di cuore di trovare un lavoro e spero che tutto quello che ho descritto in questi 7 articoli possa costituire una guida preziosa per voi, anche per chi già lavora come sviluppatore Java. Futuri junior, ricordate che nulla è impossibile e che se vi impegnate davvero, avrete sicuramente successo. Voglio che tu decida finalmente se fa per te o no, sviluppi un piano di allenamento dettagliato e lo segua con calma. Non arrabbiarti se ottieni silenzio in cambio: tutto questo è temporaneo, l'importante è credere e in nessun caso allontanarsi dal corso, ma studiare, studiare e studiare ancora. Vorrei ringraziare enormemente il team DOU per aver modificato gran parte del materiale e avermi dato la massima visibilità il lunedì. DOU è una community interessante che ha cessato di essere solo un sito per specialisti IT ucraini. Vorrei anche ringraziare tutti i commentatori che hanno letto i miei articoli in diagonale e hanno preso le frasi fuori contesto. Senza di te gli articoli non sembrerebbero così interessanti :) Che la Forza sia con te! Articolo originale tratto da DOU
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION