FASE 1. Formazione
Sono arrivato a JavaRush consapevolmente: un listino prezzi mensile adeguato, una struttura chiara del materiale, molta pratica e la presenza della mia comunità. Il primo punto è tutto chiaro, ma imparare una lingua senza struttura è piuttosto difficile e tale formazione lascerà sicuramente una persona con gravi lacune nel Java Core. L’esperienza delle interviste e delle specifiche tecniche mostra che le domande sul “core” possono essere utilizzate per tutto: dallo spostamento bit a bit e dal casting di generici all’IO e alla serializzazione. La pratica è un must; Ancora oggi riesco a capire e ricordare solo la metà delle cose se le ho scritte io stesso. Bene, la community: hai risolto il problema: vantatene nei commenti; Se non hai deciso, puoi fare domande, ma molto probabilmente nessuno ti darà una soluzione già pronta. E sono tornato agli articoli personalizzati su argomenti gratuiti anche dopo aver terminato il corso, ci sono molte cose buone con cui iniziare (specialmente la prima esperienza con i framework utilizzando esempi passo passo + domande per le interviste). In generale, sono grato a questo progetto per la base che ho ricevuto, ma non farei affidamento solo su JavaRush: lo stesso Shildt si "sovrappone" meglio di tutti all'argomento studiato e spesso rivela alcuni punti. Molto è già stato detto nelle recensioni su attività che a volte vanno oltre la teoria e ti costringono a Google. Per me, questo è più un vantaggio che uno svantaggio - e non è un dato di fatto che ora la situazione sia la stessa di quando studiavo. Un consiglio immediato a chi, come me, entra in Java “da zero” : ad un certo punto potresti annoiarti o diventare difficile:-
È dura per tutti partire da zero; Dio non voglia, solo il 5% delle persone arriva alla fine del percorso. Il tuo compito è diventare uno di loro.
-
Mi sono interessato dopo un mese o due, quando i compiti sono diventati più difficili e interessanti. Essere pazientare.
- La cosa principale è il progresso settimanale. Dopo due settimane di riposo è già difficile tornare e non tutti riescono a scrivere tutti i giorni per diversi mesi consecutivi. Datti un limite di ore per la settimana, ad esempio 15. Puoi programmare per 1,5 ore ogni giorno feriale e altre 3-4 ore in entrambi i fine settimana, oppure puoi prenderti un paio di sere libere, ma il "limite del fine settimana" sarà aumento. In questo modo il programma sarà flessibile, ma regolare. Naturalmente, sarà possibile misurare il lavoro in base a compiti e progetti, ma a livello di sintassi e kernel basteranno ore.
FASE 2. Autoeducazione
Quindi, non ho ottenuto lo stage: ho lasciato solo un paio di giorni sui requisiti tecnici fino alla fine del reclutamento nel gruppo e non ho avuto il tempo di capire i requisiti: c'erano troppe parole non familiari. Perché Non volevo aspettare altri tre mesi, ho deciso di andare avanti da solo. Fortunatamente, ci sono guide e tutorial video per tutti i framework più diffusi. Nei mesi successivi mi sono occupato di Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, ho padroneggiato SQL e ho cercato di mettere tutto insieme in un unico insieme. Sei mesi dopo, avevo progetti che fanno paura ora, ma ho acquisito esperienza pratica nell'uso di framework "per adulti" e di un GitHub che poteva essere mostrato su richiesta di un potenziale datore di lavoro. Consiglio :-
Prima impari a conoscere .gitignore, meglio è. ;)
-
Molte guide includono più framework contemporaneamente; usa questo e aggiungi il tuo. Abbiamo scritto un negozio online utilizzando Maven + Spring Boot + Data: aggiungi autorizzazione, test unitari e registrazione.
-
Per i progetti web, puoi prendere modelli frontend gratuiti da Internet: è più piacevole lavorare con loro, hanno un aspetto migliore come screenshot nel README su Git. Allo stesso tempo, sarai in grado di ricordare HTML e CSS: probabilmente vorrai correggere gli stili e il layout.
Quello che mi mancava (poi mi sono bruciato durante un'intervista)
-
Algoritmi. Per evitare errori, consiglio immediatamente un breve libro in russo, “Grocking Algorithms”. Qual è la complessità degli algoritmi, in cosa consiste, perché Quicksort non è sufficiente, un'introduzione alla teoria dei grafi: è tutto lì e nel linguaggio più comprensibile.
-
Collezioni "sotto il cofano". Non ricordo se fosse in JavaRush, ma è utile sapere come funziona HashMap.get() o perché non è garantito che un HashSet preservi l'ordine degli elementi. Ancora una volta, quali raccolte sono thread-safe e perché.
-
SQL. Sono necessari almeno fino a JOIN: cosa sono, come funzionano, la capacità di scrivere al volo un SELECT su due tabelle su carta. Consiglio www.sql-ex.ru: ti porterà al livello desiderato in un giorno o due.
-
Spring Core: quali annotazioni sono presenti, cos'è un contesto, come vengono creati i bean, quale Bean Scope è thread-safe e come risolvere l'iniezione reciproca: tutte le domande dell'intervista. Come restituire una pagina, come restituire JSON, ecc. Attualmente sto leggendo “5 primavera per professionisti” in russo, ma in generale consigliano “Primavera in azione”.
FASE 3. Ricerca di lavoro
In realtà, nei primi due mesi dopo aver completato i progetti domestici, ho inviato circa 30 risposte a vari posti vacanti Junior/Trainee (tramite HH, LinkedIn, agenzie di reclutamento), con risultati prossimi allo zero. Mi sono concentrato solo sui posti vacanti senza esperienza, ho indicato onestamente uno stack a me familiare e ho scritto della mia elevata capacità di apprendimento nelle lettere di accompagnamento. Il risultato sono due call (una delle quali terminata subito nel mio inglese pre-intermedio), altre due aziende hanno inviato specifiche tecniche, c’è stato un solo “meeting”, e poi sono rimasto lì da solo a risolvere problemi sugli algoritmi su un pezzo di carta, dopodiché le risorse umane hanno semplicemente portato via i documenti e "ti chiameremo". Ho provato a ottenere un paio di stage (non retribuiti e condizionati): ho fatto la specifica tecnica, ma non sono andato oltre la previdenza finale; ma ora posso dire che i tirocinanti vengono sicuramente reclutati da T-Systems, CFT, Andersen ed EPAM (hanno recensioni contrastanti, decidi tu stesso). Per quanto mi riguarda, è un buon modo per entrare nel campo se hai l'opportunità di restare senza reddito per diversi mesi e non morire =) In generale, dopo questa esperienza sono diventato un po' depresso e ho messo in pausa l'intera storia con la ricerca per quasi sei mesi - ho continuato a lavorare sul profilo precedente, ho scritto alcune applicazioni solo per divertimento, ma non le ho nemmeno pubblicate su Git. Fino a quando non ho incontrato un conoscente, al quale ho raccontato casualmente dei fallimenti con i posti vacanti: a quel tempo lavorava già come sviluppatore intermedio, ma ha iniziato allo stesso modo: con lo studio autonomo. Un conoscente mi ha dato un paio di consigli , che ha utilizzato lui stesso e che mi hanno aiutato molto nella mia ricerca di lavoro in futuro. Se seguirli o meno dipende da te, perché... in un certo senso non sono del tutto onesti. Quindi, ulteriori citazioni:-
In ogni caso, fornisci nel tuo curriculum almeno 6 mesi di esperienza commerciale: stage, progetti di laurea, freelance, lavoro a distanza - qualunque cosa. Ciò sarà di grande aiuto nella fase di screening iniziale dei curriculum da parte delle risorse umane;
-
rimuovere la parola Junior e lo stipendio previsto dal proprio curriculum; lascialo semplicemente come sviluppatore Java e discuti i soldi individualmente con ciascuna azienda;
-
prova a chiedere alle risorse umane di nominare la "forchetta" dello stipendio proposto prima di nominare le tue aspettative. Se un'azienda offre 80-120.000 e tu stai cercando 40.000 o più, alcuni selezionatori ti tratteranno con disprezzo;
-
Candidati a tutte le posizioni vacanti adatte al tuo stack, anche se richiedono 1-3 anni di esperienza commerciale.
-
Includi nel tuo curriculum l'intero elenco di linguaggi, tecnologie e framework con cui hai lavorato.
-
Registrati su LinkedIn: lì ci sono davvero molte persone delle risorse umane di diverse aziende. Compila attentamente il tuo profilo: questo è infatti anche il tuo curriculum. Per sviluppare la tua rete di contatti, aggiungi i LION pertinenti al tuo profilo; accettano richieste da tutti gli utenti.
-
Mettiti alla prova con i test Java gratuiti: spesso vengono forniti su carta prima del colloquio Junior. È meglio prepararsi in anticipo.
-
Chiedono sempre delle collezioni: quali sono, in cosa differiscono, quando è il momento migliore per usarle.
-
Sempre su classi e interfacce astratte: possono avere metodi, campi, quali, possono essere ereditati, ecc.
-
Quasi sempre sul multithreading: cosa hai usato nel tuo lavoro, parole chiave, metodi, hai familiarità con util.concurrent.
-
Spesso quando si lavora con la memoria: l'heap, lo stack e queste stringhe saranno uguali e questi oggetti il perché.
-
A volte sugli algoritmi: quali conosci, quale complessità, perché, puoi scrivere un algoritmo adesso.
-
A volte in base a modelli: quali conosci, quali usi, scrivi un singleton o una factory.
-
A volte in SQL: tipi di JOIN, cos'è una transazione, come eseguirla in JDBC, scrivi una breve query.
-
Pagina dei contatti commerciali del profilo Salesforce con modifica e aggiunta di nuovi record;
-
simulazione di un ascensore in un edificio a più piani utilizzando la Spring State Machine con controllo da console;
-
Applicazione Android basata sulla libreria LibGDX con output di testo carattere per carattere quando viene premuto un pulsante;
-
imitazione REST del car sharing, con aggiunta di client tramite richiesta HTTP e restituzione di JSON;
-
problema di ordinare un grafo non orientato attraverso una cella libera;
-
cercare triangoli isosceli utilizzando le coordinate da un file;
-
refactoring del codice finito utilizzando l'API Stream;
-
Calcolatore dell'interfaccia utente con supporto per espressioni ternarie;
-
corsa di thread con la scrittura dei risultati in un file.
-
Prova non solo a completare l'attività, ma anche a garantire che il codice sia conforme ai principi OOP.
-
Controlla l'efficienza del tuo codice: una volta sono stato rifiutato perché, tra le altre cose, ho utilizzato PrintStream invece di BufferedWriter.
-
Pianifica il tempo di esecuzione con un margine del 50%: è meglio iniziare e finire prima che eseguire un git push alle otto del mattino della scadenza.
GO TO FULL VERSION