ETAPA 1. Treinamento
Vim para o JavaRush de forma consciente: uma tabela de preços mensal adequada, uma estrutura clara do material, muita prática e a presença da minha própria comunidade. O primeiro ponto está tudo claro, mas aprender uma linguagem sem estrutura é bastante difícil, e tal treinamento certamente deixará uma pessoa com sérias lacunas no Java Core. A experiência de entrevistas e especificações técnicas mostra que perguntas sobre o “núcleo” podem ser usadas para tudo: desde mudança bit a bit e conversão de genéricos até IO e serialização. A prática é obrigatória; Ainda só consigo entender e lembrar metade das coisas se eu mesmo as tiver escrito. Bem, a comunidade: você resolveu o problema - gabe-se nos comentários; Se você ainda não decidiu, fique à vontade para fazer perguntas, mas provavelmente ninguém lhe dará uma solução pronta. E voltei aos artigos personalizados sobre temas gratuitos mesmo depois de terminar o curso, tem muita coisa boa aí para começar (principalmente a primeira experiência com frameworks usando exemplos passo a passo + perguntas para entrevistas). Em geral, sou grato a este projeto pela base que recebi, mas não confiaria apenas no JavaRush - o mesmo Shildt é o melhor de tudo, “se sobrepõe” ao tema em estudo e muitas vezes revela alguns pontos. Muito já foi dito nas análises sobre tarefas que às vezes vão além da teoria e obrigam você a ir ao Google. Para mim, isso é mais um ponto positivo do que negativo - e não é fato que agora a situação seja a mesma de quando eu estava estudando. Conselho imediato para quem, como eu, entra em Java “do zero” : em algum momento você pode ficar entediado ou difícil:-
É difícil para todo mundo começar do zero, Deus me livre, só 5% das pessoas chegam ao final do curso. Sua tarefa é se tornar um deles.
-
Meu interesse apareceu depois de um ou dois meses, quando as tarefas ficaram mais difíceis e interessantes. Ser paciente.
- O principal é o progresso semanal. Depois de duas semanas de descanso, já é difícil voltar e nem todos conseguem escrever todos os dias durante vários meses consecutivos. Estabeleça um limite de horas por semana - por exemplo, 15. Você pode programar 1,5 horas todos os dias da semana e outras 3-4 horas em ambos os fins de semana, ou pode tirar algumas noites de folga, mas o “limite de fim de semana” irá aumentar. Dessa forma, o horário será flexível, mas regular. Claro, então será possível medir o trabalho por tarefas e projetos, mas no nível da sintaxe e do kernel, horas servirão.
ESTÁGIO 2. Autoeducação
Então, não consegui o estágio: deixei apenas alguns dias com os requisitos técnicos até o final do recrutamento para o grupo e não tive tempo de entender os requisitos - havia muitas palavras desconhecidas. Porque Não queria esperar mais três meses, decidi seguir em frente. Felizmente, existem guias e tutoriais em vídeo para todas as estruturas populares. Nos meses seguintes, lidei com Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, dominei SQL e tentei juntar tudo em um único todo. Seis meses depois, eu tinha projetos que dão medo de olhar agora, mas ganhei experiência prática no uso de frameworks “adultos” e um GitHub que poderia ser mostrado a pedido de um potencial empregador. Conselho :-
Quanto mais cedo você aprender sobre .gitignore, melhor. ;)
-
Muitos guias incluem diversas estruturas ao mesmo tempo; use isso e adicione o seu próprio. Escrevemos uma loja online usando Maven + Spring Boot + Data - adicionamos autorização, testes de unidade e registro.
-
Para projetos da web, você pode obter modelos de front-end gratuitos da Internet - eles são mais agradáveis de trabalhar e ficam melhores como capturas de tela no README do Git. Ao mesmo tempo, você será capaz de se lembrar de HTML e CSS - provavelmente desejará corrigir os estilos e o layout.
O que estava faltando (mais tarde me queimei durante uma entrevista)
-
Algoritmos. Para evitar meus erros, recomendo imediatamente um pequeno livro em russo, “Grocking Algorithms”. Qual é a complexidade dos algoritmos, em que consistem, porque o quicksort não é suficiente, uma introdução à teoria dos grafos - está tudo aí e na linguagem mais compreensível.
-
Coleções "sob o capô". Não me lembro se isso foi no JavaRush, mas é útil saber como HashMap.get() funciona ou por que não é garantido que um HashSet preserve a ordem dos elementos. Novamente - quais coleções são seguras para threads e por quê.
-
SQL. Você precisa de pelo menos JOINs - o que são, como funcionam, a capacidade de escrever um SELECT em duas tabelas no papel instantaneamente. Eu recomendo www.sql-ex.ru: ele o levará ao nível desejado em um ou dois dias.
-
Spring Core: quais anotações existem, o que é um contexto, como os beans são criados, qual Bean Scope é thread-safe e como resolver a injeção mútua - todas as questões da entrevista. Como retornar uma página, como retornar JSON, etc. Atualmente estou lendo “Primavera 5 para Profissionais” em russo, mas em geral eles recomendam “Primavera em Ação”.
ETAPA 3. Procura de emprego
Na verdade, nos primeiros meses após a conclusão dos projetos de casa, enviei cerca de 30 respostas para diversas vagas de Junior\Trainee (através de HH, LinkedIn, agências de recrutamento), com resultados quase nulos. Concentrei-me apenas em vagas sem experiência, indiquei honestamente uma pilha que conhecia e escrevi sobre minha alta capacidade de aprendizado em cartas de apresentação. O resultado foram duas ligações (uma delas encerrada imediatamente no meu inglês pré-intermediário), mais duas empresas enviaram especificações técnicas, houve apenas uma “reunião”, e aí eu fiquei sozinho resolvendo problemas de algoritmos em um pedaço de papel, depois disso, o RH simplesmente retirou os papéis e "Ligaremos para você". Tentei conseguir alguns estágios (não remunerados e remunerados condicionalmente): fiz a especificação técnica, mas não fui além da segurança social final; mas agora posso dizer que os trainees são definitivamente recrutados pela T-Systems, CFT, Andersen e EPAM (eles têm avaliações mistas, decida por si mesmo). Quanto a mim, é uma boa forma de entrar na área se você tiver a oportunidade de ficar vários meses sem renda e não morrer =) Em geral, depois dessa experiência fiquei um pouco deprimido, e coloquei toda a história com a busca em pausa por quase seis meses - continuei trabalhando no perfil anterior, escrevi alguns aplicativos apenas por diversão, mas nem os publiquei no Git. Até que conheci um conhecido, a quem contei casualmente sobre as falhas nas vagas: naquela época ele já trabalhava como desenvolvedor intermediário, mas começou da mesma forma - com auto-estudo. Um conhecido me deu algumas recomendações , que ele mesmo usou e que me ajudaram muito na minha procura de emprego no futuro. Se você os segue ou não, depende de você, porque... eles não são, de certa forma, totalmente honestos. Então, mais citações:-
De qualquer forma, tenha em seu currículo mais de 6 meses de experiência comercial: estágios, projetos de graduação, freelancer, trabalho remoto - tanto faz. Isso ajudará muito na fase de triagem inicial dos currículos pelo RH;
-
retire a palavra Júnior e salário esperado do seu currículo; é só deixar como Desenvolvedor Java, e discutir o dinheiro individualmente com cada empresa;
-
tente fazer com que o RH nomeie o “garfo” do salário proposto antes de nomear suas expectativas. Se uma empresa oferece 80-120k e você está procurando 40k ou mais, alguns selecionadores irão tratá-lo com desdém;
-
Candidate-se a todas as vagas adequadas ao seu perfil, mesmo que exijam de 1 a 3 anos de experiência comercial.
-
Inclua em seu currículo todo o conjunto de linguagens, tecnologias e frameworks com os quais você trabalhou.
-
Registre-se no LinkedIn - há muitas pessoas de RH de diferentes empresas lá. Preencha o seu perfil com atenção - na verdade, este também é o seu currículo. Para desenvolver sua rede de contatos, adicione LEÕES relevantes ao seu perfil; eles aceitam solicitações de todos os usuários.
-
Experimente testes Java gratuitos - eles geralmente são aplicados em papel antes da entrevista do Junior. É melhor se preparar com antecedência.
-
Eles sempre perguntam sobre as coleções: quais existem, como são diferentes, qual a melhor hora para usá-las.
-
Sempre em classes e interfaces abstratas - podem ter métodos, campos, quais, podem ser herdados, etc.
-
Quase sempre em multithreading - o que você usou em seu trabalho, palavras-chave, métodos, você está familiarizado com util.concurrent.
-
Muitas vezes, ao trabalhar com memória - o heap, a pilha, e essas strings serão iguais, e esses objetos, por quê.
-
Às vezes, sobre algoritmos - quais você conhece, qual a complexidade, por que, você pode escrever um algoritmo agora.
-
Às vezes, com base em padrões - quais você conhece, quais você usa, escreva um singleton ou fábrica.
-
Às vezes, em SQL - tipos de JOINs, o que é uma transação, como conduzi-la em JDBC, escreva uma consulta curta.
-
Página de contatos comerciais do perfil do Salesforce com edição e adição de novos registros;
-
simulação de elevador em prédio de vários andares utilizando Spring State Machine com controle de console;
-
Aplicativo Android baseado na biblioteca LibGDX com saída de texto caractere por caractere quando um botão é pressionado;
-
Imitação REST de compartilhamento de carro, com adição de clientes via solicitação HTTP e retorno JSON;
-
problema de ordenação de um grafo não direcionado através de uma célula livre;
-
procure triângulos isósceles usando coordenadas de um arquivo;
-
refatoração de código finalizado usando Stream API;
-
Calculadora UI com suporte para expressões ternárias;
-
corrida de threads com gravação dos resultados em um arquivo.
-
Tente não apenas completar a tarefa, mas também garantir que o código esteja em conformidade com os princípios OOP.
-
Verifique a eficiência do seu código - uma vez fui rejeitado porque, entre outras coisas, usei PrintStream em vez de BufferedWriter.
-
Planeje seu tempo de execução com uma margem de 50% - é melhor começar e terminar mais cedo do que fazer um git push às oito horas da manhã do prazo final.
GO TO FULL VERSION