ÉTAPE 1. Formation
Je suis venu à JavaRush en toute conscience : une liste de prix mensuelle adéquate, une structure claire du matériel, beaucoup de pratique et la présence de ma propre communauté. Le premier point est tout à fait clair, mais apprendre un langage sans structure est assez difficile, et une telle formation laissera certainement à une personne de sérieuses lacunes en Java Core. L'expérience des entretiens et des spécifications techniques montre que les questions sur le « noyau » peuvent être utilisées pour tout : du décalage au niveau des bits et du casting de génériques aux IO et à la sérialisation. La pratique est indispensable ; Je ne peux encore comprendre et me souvenir que de la moitié des choses si je les ai écrites moi-même. Eh bien, la communauté : vous avez résolu le problème - vantez-vous-en dans les commentaires ; Si vous n’avez pas encore décidé, vous pouvez poser des questions, mais il est fort probable que personne ne vous proposera de solution toute faite. Et je suis revenu aux articles personnalisés sur des sujets gratuits même après avoir terminé le cours, il y a beaucoup de bonnes choses pour commencer (surtout la première expérience avec des frameworks utilisant des exemples pas à pas + des questions d'entretien). En général, je suis reconnaissant envers ce projet pour la base que j'ai reçue, mais je ne compterais pas uniquement sur JavaRush - le même Shildt va surtout « chevaucher » sur le sujet étudié et révèle souvent certains points. Beaucoup de choses ont déjà été dites dans les critiques sur des tâches qui dépassent parfois la théorie et vous obligent à utiliser Google. Pour moi, c'est plus un plus qu'un moins - et ce n'est pas un fait que maintenant la situation est la même que lorsque j'étudiais. Conseil immédiat à ceux qui, comme moi, se lancent dans Java « à partir de zéro » : à un moment donné, vous risquez de vous ennuyer ou d'avoir des difficultés :-
C’est difficile pour tout le monde de repartir de zéro ; Dieu nous en préserve, seulement 5 % des personnes arrivent à la fin du cours. Votre tâche est de devenir l'un d'entre eux.
-
Je me suis intéressé au bout d'un mois ou deux, lorsque les tâches sont devenues plus difficiles et plus intéressantes. Sois patient.
- L'essentiel est la progression hebdomadaire. Après deux semaines de repos, c’est déjà difficile de rentrer, et tout le monde ne peut pas écrire tous les jours plusieurs mois d’affilée. Donnez-vous une limite d'heures pour la semaine - par exemple, 15. Vous pouvez coder pendant 1,5 heure chaque jour de la semaine et 3 à 4 heures supplémentaires les deux week-ends, ou vous pouvez prendre quelques soirées de congé, mais la « limite du week-end » sera augmenter. De cette façon, l’horaire sera flexible, mais régulier. Bien sûr, il sera alors possible de mesurer le travail par tâches et par projets, mais au niveau de la syntaxe et du noyau, des heures suffiront.
ÉTAPE 2. Auto-éducation
Donc, je n'ai pas eu de stage : je n'ai laissé que quelques jours sur les pré-requis techniques jusqu'à la fin du recrutement dans le groupe et je n'ai pas eu le temps de comprendre les pré-requis - il y avait trop de mots inconnus. Parce que Je ne voulais pas attendre encore trois mois, j’ai décidé de passer à autre chose. Heureusement, il existe des guides et des didacticiels vidéo pour tous les frameworks populaires. Au cours des mois suivants, j'ai traité Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, maîtrisé SQL et essayé de tout rassembler en un seul tout. Six mois plus tard, j'avais des projets qui font peur à regarder maintenant, mais j'ai acquis une expérience pratique dans l'utilisation de frameworks « adultes » et d'un GitHub qui pouvait être montré à la demande d'un employeur potentiel. Conseils :-
Plus tôt vous découvrirez .gitignore, mieux ce sera. ;)
-
De nombreux guides incluent plusieurs cadres à la fois ; utilisez-le et ajoutez le vôtre. Nous avons écrit une boutique en ligne en utilisant Maven + Spring Boot + Data - ajoutez une autorisation, des tests unitaires et une journalisation.
-
Pour les projets Web, vous pouvez utiliser des modèles frontend gratuits sur Internet - ils sont plus agréables à travailler, ils sont plus beaux sous forme de captures d'écran dans le README sur Git. En même temps, vous pourrez mémoriser HTML et CSS - vous souhaiterez probablement corriger les styles et la mise en page.
Ce qui me manquait (plus tard, je me suis brûlé lors d'un entretien)
-
Algorithmes. Pour éviter mes erreurs, je recommande immédiatement un petit livre en russe, « Grocking Algorithms ». Quelle est la complexité des algorithmes, en quoi consiste-t-elle, pourquoi le tri rapide ne suffit pas, une introduction à la théorie des graphes - tout est là et dans le langage le plus compréhensible.
-
Collections "sous le capot". Je ne me souviens pas si c'était dans JavaRush, mais il est utile de savoir comment fonctionne HashMap.get() ou pourquoi un HashSet n'est pas garanti pour préserver l'ordre des éléments. Encore une fois, quelles collections sont thread-safe et pourquoi.
-
SQL. Vous avez besoin d'au moins jusqu'à JOIN - ce qu'ils sont, comment ils fonctionnent, la possibilité d'écrire un SELECT sur deux tables sur papier à la volée. Je recommande www.sql-ex.ru : il vous amènera au niveau souhaité en un jour ou deux.
-
Spring Core : quelles sont les annotations, qu'est-ce qu'un contexte, comment les beans sont créés, quel Bean Scope est thread-safe et comment résoudre l'injection mutuelle - toutes les questions d'entretien. Comment renvoyer une page, comment renvoyer du JSON, etc. Je lis actuellement « Spring 5 for Professionals » en russe, mais en général, ils recommandent « Spring in Action ».
ÉTAPE 3. Recherche d'emploi
En fait, au cours des premiers mois après avoir terminé mes projets personnels, j'ai envoyé environ 30 réponses à divers postes vacants de Junior/Trainee (via HH, LinkedIn, des agences de recrutement), avec des résultats proches de zéro. Je me suis concentré uniquement sur les postes vacants sans expérience, j'ai honnêtement indiqué une pile qui me était familière et j'ai écrit sur ma grande capacité d'apprentissage dans les lettres de motivation. Le résultat est deux appels (dont l'un s'est immédiatement terminé dans mon anglais pré-intermédiaire), deux autres entreprises ont envoyé des spécifications techniques, il n'y a eu qu'une seule « réunion », et puis j'étais là seul à résoudre des problèmes d'algorithmes sur un morceau de papier, après quoi les RH ont simplement emporté les papiers et "Nous vous appellerons". J'ai essayé d'obtenir quelques stages (non rémunérés et rémunérés sous conditions) : j'ai fait le cahier des charges technique, mais je ne suis pas allé au-delà de la sécurité sociale finale ; mais maintenant je peux dire que les stagiaires sont définitivement recrutés par T-Systems, CFT, Andersen et EPAM (ils ont des avis mitigés, décidez par vous-même). Quant à moi, c'est un bon moyen d'entrer dans le domaine si vous avez la possibilité de rester sans revenus pendant plusieurs mois et de ne pas mourir =) En général, après cette expérience, je suis devenu un peu déprimé, et j'ai mis toute l'histoire avec la recherche en pause pendant près de six mois - j'ai continué à travailler sur le profil précédent, j'ai écrit quelques applications juste pour m'amuser, mais je ne les ai même pas publiées sur Git. Jusqu'à ce que je rencontre une connaissance, à qui j'ai parlé avec désinvolture des échecs liés aux postes vacants : à cette époque, il travaillait déjà comme développeur intermédiaire, mais il a commencé de la même manière - par l'auto-apprentissage. Une connaissance m'a donné quelques recommandations , qu'il a utilisées lui-même et qui m'ont beaucoup aidé dans ma recherche d'emploi à l'avenir. Que vous les suiviez ou non, c'est à vous de décider, car... ils ne sont, d’une certaine manière, pas entièrement honnêtes. Alors, d'autres citations :-
Quoi qu'il en soit, prévoyez plus de 6 mois d'expérience commerciale dans votre CV : stages, projets de fin d'études, travail indépendant, travail à distance - peu importe. Cela sera grandement utile au stade de la sélection initiale des CV par les RH ;
-
supprimez le mot Junior et salaire attendu de votre CV ; laissez-le simplement en tant que développeur Java et discutez de l'argent individuellement avec chaque entreprise ;
-
essayez de demander aux RH de nommer la « fourchette » du salaire proposé avant de nommer vos attentes. Si une entreprise propose 80 à 120 000 $ et que vous recherchez 40 000 $ ou plus, certains sélectionneurs vous traiteront avec dédain ;
-
Postulez à tous les postes vacants qui correspondent à votre stack, même s'ils nécessitent 1 à 3 ans d'expérience commerciale.
-
Incluez dans votre CV l'ensemble des langages, technologies et frameworks avec lesquels vous avez travaillé.
-
Inscrivez-vous sur LinkedIn - il y a vraiment beaucoup de RH de différentes entreprises. Remplissez soigneusement votre profil - en fait, il s'agit également de votre CV. Pour développer votre réseau de contacts, ajoutez des LION pertinents à votre profil ; ils acceptent les demandes de tous les utilisateurs.
-
Essayez-vous aux tests Java gratuits - ils sont souvent donnés sur papier avant l'entretien Junior. Il vaut mieux se préparer à l'avance.
-
Ils posent toujours des questions sur les collections : lesquelles sont là, en quoi elles diffèrent, quel est le meilleur moment pour les utiliser.
-
Toujours sur les classes et interfaces abstraites - peuvent-elles avoir des méthodes, des champs, lesquels, peuvent-elles être héritées, etc.
-
Presque toujours en multithreading - ce que vous avez utilisé dans votre travail, les mots-clés, les méthodes, connaissez-vous util.concurrent.
-
Souvent, lorsque l'on travaille avec la mémoire - le tas, la pile, et ces chaînes seront-elles égales, et ces objets, pourquoi.
-
Parfois, à propos des algorithmes - lesquels connaissez-vous, quelle complexité, pourquoi, pouvez-vous écrire un algorithme maintenant.
-
Parfois, sur la base de modèles - lesquels vous connaissez, lesquels vous utilisez, écrivez un singleton ou une usine.
-
Parfois en SQL - types de JOIN, qu'est-ce qu'une transaction, comment la mener en JDBC, écrivez une courte requête.
-
Page de contacts professionnels du profil Salesforce avec modification et ajout de nouveaux enregistrements ;
-
simulation d'un ascenseur dans un immeuble à plusieurs étages à l'aide de la Spring State Machine avec commande par console ;
-
Application Android basée sur la bibliothèque LibGDX avec sortie de texte caractère par caractère lorsqu'un bouton est enfoncé ;
-
Imitation REST du covoiturage, avec ajout de clients via requête HTTP et renvoi de JSON ;
-
problème du tri d'un graphe non orienté à travers une cellule libre ;
-
rechercher des triangles isocèles en utilisant les coordonnées d'un fichier ;
-
refactorisation du code fini à l'aide de l'API Stream ;
-
Calculateur d'interface utilisateur avec prise en charge des expressions ternaires ;
-
course de threads avec écriture des résultats dans un fichier.
-
Essayez non seulement de terminer la tâche, mais également de vous assurer que le code est conforme aux principes de la POO.
-
Vérifiez l'efficacité de votre code - j'ai été rejeté une fois parce que, entre autres choses, j'avais utilisé PrintStream au lieu de BufferedWriter.
-
Planifiez votre temps d'exécution avec une marge de 50 % - il est préférable de commencer et de terminer plus tôt que de faire un git push à huit heures du matin avant la date limite.
GO TO FULL VERSION