JavaRush /Blog Java /Random-FR /L'astuce, ou comment obtenir un emploi de développeur Jav...
Юрий
Niveau 30
Москва

L'astuce, ou comment obtenir un emploi de développeur Java intermédiaire sans expérience en Java

Publié dans le groupe Random-FR
Salutations à tous les étudiants et professionnels Java. Peut-être que mon histoire sera un exemple pour certains de la façon de le faire, et pour d'autres, de la façon de ne pas le faire. Nous sommes le 19 octobre 2021 et j'effectue aujourd'hui une période probatoire (3 mois) en tant que développeur middle Java dans une grande entreprise. Je n'avais aucune expérience préalable en développement Java. Jusqu'au 4 juin 2020, je ne connaissais rien à Java. Lorsque j'ai été embauché en tant que Javaiste, j'ai promis que si je réussissais la période d'essai, j'écrirais une success story. Cet article sera divisé en deux parties logiques : Contexte de carrière ( chapitres 1 à 5, non liés à Java, mais dans lequel vous pourrez acquérir des connaissances sur votre carrière). Devenir Javaiste (chapitres 6 à 9 - apprentissage de Java, entretiens, obtention d'un emploi, première vraie expérience). <h3>Chapitre 1. Économiste</h3>Afin de comprendre avec quel niveau de connaissances je suis arrivé à JavaRush, je dois donner une note biographique sur moi-même. 2013, novembre, 8h. Je suis assis dans un café sur Taganka et je répète des instructions SQL. Dans une heure, j'ai un entretien pour le poste d'économiste principal au département financier de la banque. C'est le seul entretien auquel j'ai été invité et je dois me donner à 100 %. Pour lui, j'ai pris l'avion depuis Saint-Pétersbourg et je suis resté chez des proches dans la cuisine, afin de ne pas dépenser mes économies déjà modestes. 30 minutes passent, les crêpes au jambon et au fromage sont mangées et il faut avancer vers notre rêve chéri. Mais tout tremble. Et si j'échoue à l'entretien ? D'accord, ce n'était pas le cas. Je vais à la banque, prends un laissez-passer et attends mes interviewés dans la salle de réunion. Le temps passe très longtemps. Un homme d’environ 35 ans et une femme du même âge entrent. Ils se présentent et demandent à vous parler d'eux : "Yuri, c'est un plaisir." J'ai 21 ans, j'étudie à temps partiel dans une université de Saint-Pétersbourg, j'ai travaillé 3 mois comme caissier dans une banque. J'ai réalisé que ce n'était pas pour cela que j'étudiais, j'ai commencé à regarder le marché du travail et j'ai vu qu'à Moscou, les économistes avaient SQL comme exigence. Alors je l'ai étudié, j'ai suivi des cours (Administration MS SQL - c'est ce que j'avais, c'est ce que j'ai recherché), et vous m'avez appelé. Ils parlent de l'entreprise, de ce qu'ils font (la plupart des mots sont incompréhensibles), puis vous demandent de passer un test. Le test comporte 3 questions sur SQL : 1. Étant donné une table, extrayez tous les enregistrements avec l'identifiant = 10. 2. Étant donné deux tables, connectez-les et affichez une colonne de chacune. 3. Regroupez les départements et indiquez le nombre d'employés pour chaque département. C’est avec une grande honte que j’écris ces demandes. Ceci est suivi d'une discussion sur mes attentes par rapport au poste. Et ils me disent la phrase magique : « Merci pour l’entretien, nous vous rappellerons. » Une semaine passe et ils me proposent de venir travailler avec eux. Euphorie, choc, joie ! Et pour quel argent : 70 000 roubles en main ! Oui, je serai riche ! Je viens à Moscou, m'installe, loue une chambre au centre. Les premiers jours sont euphoriques. Au bout de 10 jours, la prise de conscience commence : d’où suis-je venu ? Je ne comprends rien du tout ! Je devais préparer chaque mois des rapports de gestion pour l'ensemble de la banque. Naturellement, pour moi, c'était la même chose que pour vous, cher lecteur. J'ai perçu les termes crédit interbancaire, swaps, répartition des dépenses, coûts, etc. comme des orthographes latines. En cours de route, j'ai dû maîtriser l'aspect technique du problème : MS Access (tous les rapports y étaient effectués via VBA), MS SQL (en tant que nouveau stockage, au lieu d'Access), Oracle (que j'avais initialement appelé Oracle, provoquant l'hystérie parmi les programmeurs). Et du coup je commence à comprendre que le côté technique m'intéresse beaucoup plus. Il y a des tentatives pour créer des requêtes complexes (en conséquence, la base de données se bloque de mes scripts et des administrateurs furieux courent pour essayer de comprendre qui l'a fait). Mais le travail principal est la finance, ce qui commence juste à m'énerver. Au bout d’un mois et demi, j’écris une lettre de démission, car je ne peux donner aucun résultat (et ils n’en attendaient pas vraiment de moi, pour être honnête). Le chef du service financier le déchire et dit : « ne vous embêtez pas avec des conneries ». Un mois plus tard, j'écris à nouveau une déclaration, et le chef du département, choqué par une telle impudence (qui deviendra plus tard président du conseil d'administration de la banque), signe avec une extrême perplexité : le gars a 21 ans, sans diplôme supérieur éducation, ils ont reçu à la fois un salaire et une confiance, mais il se comporte ainsi. Les raisons du licenciement étaient deux autres facteurs : le patron, dont je ne pouvais pas réagir calmement à l'arrogance, et la chaise inconfortable, à partir de laquelle mon dos commençait à me faire mal. C'est incroyablement drôle, mais voici le motif. Quand j’ai arrêté, je pensais que maintenant je serais encore plus à l’aise. Mais ce n'était pas là. <h3>Chapitre 2. 70 entretiens</h3>En sortant de la banque, j'ai pris une profonde inspiration. "Je vais arranger les choses de cette façon, tout le monde sera abasourdi." Des entretiens étaient programmés, leurs salaires étaient plus élevés et il semblait qu'il ne serait pas nécessaire de s'occuper du reportage. Il y a 4 entretiens et personne ne m'engage. 5, 6 entretiens, c'est la même chose. Je vivais avec une fille dans une chambre louée, elle a trouvé un travail et a pu compenser mon manque de revenus. Mais je n’avais toujours aucune idée de la durée pendant laquelle je n’aurais aucun revenu. Je suis allé à des entretiens (postes vacants à la manière d'analyste) et ils m'ont principalement posé des questions sur SQL et VBA. Pour ceux qui ne le savent pas, VBA est un langage de programmation dans Excel, Access et d'autres produits MS Office. 10 entretiens ont lieu - rien. 20, 30 - rien. Tout le monde est gêné par le manque d’expérience et d’études supérieures (ce qui me semble une petite chose). 40 interviews, et le désespoir commence à s’installer. Pendant la période de 55 à 60 entretiens, je commence à étudier 1C. La jeune fille, déjà devenue épouse, demande à partir pour Saint-Pétersbourg, puisqu'elle y a au moins son propre logement. Et lors du 70e entretien, j'ai été invité à devenir administrateur de base de données 1C (avec la perspective de devenir développeur 1C) dans une petite entreprise de la zone industrielle de Saint-Pétersbourg pour 50 000 roubles. Voilà pour l'évolution de carrière ! <h3>Chapitre 3. Le retour de la légende</h3>En regardant par la fenêtre d'un minibus (transport d'entreprise) dans la zone industrielle grise de Saint-Pétersbourg, et en voyageant une heure et quarante dans un sens, j'ai réalisé que je ne pouvais pas vivre comme ça. L'intérêt pour 1C a disparu au premier contact avec le système auto-écrit. Il fallait un plan. Et il a mûri : le soir, il étudiait SQL et en même temps surveillait le célèbre chantier. Le dernier élément déclencheur du licenciement était la situation : le directeur général ne voulait pas me laisser partir en vacances planifiées, alors que les billets avaient déjà été achetés. Après mes vacances, je rédige une candidature et j'envoie à nouveau mon CV pour les postes vacants à Moscou. Une fois de plus, on me propose un entretien dans une grande banque, à l'heure de Moscou. Je viens à nouveau dans la cuisine de mes proches et je pars pour un entretien. Quand elle a écrit l'adresse, je n'en croyais pas mes yeux - c'était le bâtiment dans lequel je rêvais de travailler (au moment de ma dernière résidence à Moscou, il était juste en construction). Le poste était appelé spécialiste en chef du support des systèmes d'information. je vais au bureau Je suis accueilli par un homme d'une trentaine d'années vêtu d'une veste et d'un jean à la mode. Nous sommes montés au 15ème étage, et quand j'ai vu le panorama de la ville, j'ai eu le souffle coupé : tous les immeubles de grande hauteur staliniens étaient visibles. Le style général du bâtiment était très moderne : dans le bureau du patron, il y avait des caves à vin, des aquariums à la mode, une peinture d’une femme nue en noir et blanc. Cela a provoqué un effet « wow ». La conversation avec le patron ne s'est pas déroulée comme d'habitude : pendant environ 40 minutes, il a parlé de ce qui se passait à la banque. Je n’ai rien compris, mais j’ai hoché la tête. Quand j'ai demandé : quand vas-tu commencer à me demander ? Il ne faisait pas attention. Encore une fois, à ma question « c’est quand l’entretien technique ? », la réponse a été « oui, on t’embauche quand même, si tu n’y arrive pas, on te licencie ». Cela a été dit avec le sourire, et j'ai réalisé que tout, le rêve était redevenu réalité ! <h3>Chapitre 4. Se retrouver dans l'informatique </h3>Quand je suis arrivé dans le nouveau lieu, j'ai tout de suite compris pourquoi ils m'avaient embauché. Je vais décrire un portrait typique d'un employé du département : âge moyen de 55 ans, Moscovite, diplômé de l'Université d'État de Moscou, travaillant dans un institut de recherche sur la défense à l'époque soviétique et transition vers le secteur bancaire dans les années 90, travaille ici depuis 20 ans, la moitié étant des hommes et l’autre moitié des femmes. Ils sont entrés en totale dissonance avec les intérieurs environnants. Nous avons participé au maintien des programmes de reporting pour la comptabilité. Naturellement, tout cela se trouvait dans d’anciens scripts VBA et SQL écrits par les développeurs à la fin des années 90 et au début des années 2000. C'était en 2015 et l'automatisation se faisait via MS Access. Autrement dit, cela avait l'air extrêmement pauvre. Mais il y avait une nuance : ils fournissaient ce que le client (comptabilité) voulait. Et exactement à temps et sous la forme requise. Eux seuls savaient comment cela fonctionnait, et même Onotole ne pouvait imaginer la complexité de leurs développements. Et aucun responsable informatique, même avec le plus grand désir, ne pouvait les licencier - le chef comptable s'est adressé au conseil d'administration de la banque et a défendu tout employé qui servait les intérêts du service comptable. Le manager souhaitait que je joue le rôle d'un cheval de Troie : j'ai étudié toutes leurs évolutions, puis j'ai migré les données vers le nouveau système. Ensuite, les anciens employés peuvent être licenciés et je peux être transféré vers un nouveau système. Tout d’abord, j’ai exploré leurs processus et examiné le code VBA. Petit à petit, j'ai appris à lire le code VBA. Un an plus tard, je savais déjà comment écrire le code lui-même. Tâche typique : étant donné une base de données, en extraire des données et les mettre dans Excel dans un certain format. Maintenant, comme le disait Zadornov, respirez profondément : tous les rapports du département (et cela fait 50 rapports quotidiens, 20 rapports mensuels !) étaient exécutés manuellement ! Karl, tu comprends que les gens changent les dates en +1 chaque jour avec leurs mains dans 50 rapports ! Ils s'assoient, attendent le résultat d'un rapport pendant 1 à 10 minutes et en lancent un autre ! De plus, les rapports quotidiens doivent être lancés à une certaine heure, et Dieu vous préserve d'être en retard ! Non seulement ils créent des rapports, mais ils exécutent manuellement des procédures dans la base de données sans utiliser de variables ! Autrement dit, au lieu d'utiliser la variable @startDate = '2015-01-01', ils modifieront manuellement la même date à 20 endroits ! Après avoir regardé tout cela, j'ai commencé à apprendre Python, et avec VBA, SQL et le planificateur de tâches, j'ai automatisé tout cela en deux ans. Non seulement automatisé, mais également accéléré de nombreux rapports : si vous abandonnez MS Access + VBA au profit de MS SQL + TSQL, vous pouvez obtenir une augmentation multiple de la productivité. Mon dossier accélère la création de rapports dans100une fois! Mais mes collègues étaient extrêmement mécontents d'une telle automatisation, j'ai donc été déclaré ennemi du peuple (ils voulaient rester assis tranquillement jusqu'à la retraite). Le temps a passé et la migration des données a réussi. Le manager m'appréciait beaucoup : si au début de ma carrière je venais travailler à 8h du matin, alors au bout d'un moment je pouvais venir à tout moment jusqu'à 12h00, augmentation constante du salaire et du poste, rémunération du travail le week-end plus que le double du montant, un taxi jusqu'à chez vous si vous êtes en retard au travail, des communications mobiles, bref - l'élite ! <h3>Chapitre 5. La cage dorée</h3>Soudain, après 3,5 ans, une nouvelle direction informatique arrive et dit que le système vers lequel j'ai migré les données n'est plus nécessaire. Mais l’ancien système restera. Mon manager gravit les échelons de carrière et m'invite à évoluer vers un département plus progressiste. Lors d'une réunion avec le chef du département progressiste, je comprends que la stack technologique de ce département m'est inconnue : Oracle, .net, C#, Linux, etc. + Antipathie envers le patron potentiel. Je dis à mon manager que le département progressiste ne m'intéresse pas et il m'oublie commodément. Et puis la question devient : que faire ensuite ? Le revenu était déjà décent, les développeurs juniors ne m'embaucheraient pas pour ce salaire. Après avoir réfléchi à mes compétences, j'ai réalisé que je devais me lancer dans l'apprentissage automatique. Tout était intéressant jusqu'à la première rencontre avec les statistiques mathématiques, qui n'a fait que dégoûter l'institut. Ça y est, stupeur depuis six mois ! Le temps a passé, et un jour, en marchant, j'ai pensé à un site Internet qui afficherait les bons restaurants sur une carte de Moscou. J'ai commencé à apprendre HTML, CSS, JS. J'ai passé 3 mois à étudier ; je n'avais pas les connaissances nécessaires pour créer un site Web à part entière, mais je pouvais le mettre en pratique au travail. Une idée est née : créer un portail pour les comptables afin qu'ils puissent télécharger eux-mêmes n'importe quel rapport à l'aide d'un bouton. Il a fallu 2 mois pour créer le portail, et l'application web SPA (Single page application) est née en React js avec un backend Node.js. Back a exécuté des scripts SQL (je ne connaissais pas les frameworks comme Hibernate), lancé Python et stocké des informations supplémentaires dans MongoDb (par exemple, sur les utilisateurs du site). Extérieurement, le site avait l'air très correct (bootstrap 4, animation à la mode). Je suis toujours fier de ce projet. Mais lorsque j’ai montré mon code aux développeurs web de la banque, ils ont été stupéfaits. PAS UNE CLASSE À VOUS ! Seulement des fonctionnalités, seulement du hardcore ! Ils m'ont félicité, mais ont dit que j'avais encore besoin d'étudier beaucoup pour devenir un développeur middle full-stack. J'ai essayé de trouver un emploi d'analyste, mais il n'y a pas eu d'offres spéciales. Je pense : je n’étais pas là, je vais poster mon CV de développeur full-stack. Les appels sont arrivés, mais lors des entretiens, j'ai survolé Paris comme du contreplaqué : par exemple, je ne savais pas ce qu'étaient HashMap, HashSet et pourquoi ils étaient nécessaires. Il n'y avait pas la moindre idée de la POO, des modèles de programmation, des algorithmes, des tests, de Git. Je me suis souvenu de sentiments de honte oubliés depuis longtemps dus à l'ignorance des choses fondamentales. Soudain, une offre arrive pour un poste de responsable de l’analyse client dans une société financière. Une semaine avant la fermeture du pays à cause de la pandémie. J'ai trouvé un emploi dans une société financière, mais j'avais un double sentiment : d'une part, le salaire élevé était chaleureux, de l'autre, il y aurait un développement minimal sur le plan technique. Une semaine s'est écoulée après l'installation de l'appareil et l'introduction du travail à distance. Les jours chômés ne s'appliquant pas au secteur financier, nous avons travaillé comme d'habitude. Le nouveau patron s'est avéré être une personne très folle : il a proposé de gratter Facebook, de créer ses propres réseaux de neurones pour étudier les clients (sans data scientist parmi son personnel). Les nouveaux employés se sont vu proposer d'apprendre Python en une semaine, etc. Les jours de congés non payés sont devenus la norme. C’était stupide d’arrêter : où trouvera-t-on un emploi pendant une pandémie ? Mais la patience s'est épuisée au bout de 2 mois, lorsqu'il a été annoncé qu'il n'y aurait pas de primes trimestrielles. La nuance est que lorsque nous nous sommes mis d'accord sur le salaire, au moment de l'embauche, les RH ont dit que le salaire est divisé en salaire (60 %) et en prime trimestrielle (40 %), qui est toujours versée. Il est devenu évident que le mauvais choix avait été fait et que nous devions commencer à chercher un nouvel emploi. <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer en revanche, le développement technique sera minime. Une semaine s'est écoulée après l'installation de l'appareil et l'introduction du travail à distance. Les jours chômés ne s'appliquant pas au secteur financier, nous avons travaillé comme d'habitude. Le nouveau patron s'est avéré être une personne très folle : il a proposé de gratter Facebook, de créer ses propres réseaux de neurones pour étudier les clients (sans data scientist parmi son personnel). Les nouveaux employés se sont vu proposer d'apprendre Python en une semaine, etc. Les jours de congés non payés sont devenus la norme. C’était stupide d’arrêter : où trouvera-t-on un emploi pendant une pandémie ? Mais la patience s'est épuisée au bout de 2 mois, lorsqu'il a été annoncé qu'il n'y aurait pas de primes trimestrielles. La nuance est que lorsque nous nous sommes mis d'accord sur le salaire, au moment de l'embauche, les RH ont dit que le salaire est divisé en salaire (60 %) et en prime trimestrielle (40 %), qui est toujours versée. Il est devenu évident que le mauvais choix avait été fait et que nous devions commencer à chercher un nouvel emploi. <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer en revanche, le développement technique sera minime. Une semaine s'est écoulée après l'installation de l'appareil et l'introduction du travail à distance. Les jours chômés ne s'appliquant pas au secteur financier, nous avons travaillé comme d'habitude. Le nouveau patron s'est avéré être une personne très folle : il a proposé de gratter Facebook, de créer ses propres réseaux de neurones pour étudier les clients (sans data scientist parmi son personnel). Les nouveaux employés se sont vu proposer d'apprendre Python en une semaine, etc. Les jours de congés non payés sont devenus la norme. C’était stupide d’arrêter : où trouvera-t-on un emploi pendant une pandémie ? Mais la patience s'est épuisée au bout de 2 mois, lorsqu'il a été annoncé qu'il n'y aurait pas de primes trimestrielles. La nuance est que lorsque nous nous sommes mis d'accord sur le salaire, au moment de l'embauche, les RH ont dit que le salaire est divisé en salaire (60 %) et en prime trimestrielle (40 %), qui est toujours versée. Il est devenu évident que le mauvais choix avait été fait et que nous devions commencer à chercher un nouvel emploi. <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer créez vos propres réseaux de neurones pour étudier les clients (sans un data scientist parmi le personnel). Les nouveaux employés se sont vu proposer d'apprendre Python en une semaine, etc. Les jours de congés non payés sont devenus la norme. C’était stupide d’arrêter : où trouvera-t-on un emploi pendant une pandémie ? Mais la patience s'est épuisée au bout de 2 mois, lorsqu'il a été annoncé qu'il n'y aurait pas de primes trimestrielles. La nuance est que lorsque nous nous sommes mis d'accord sur le salaire, au moment de l'embauche, les RH ont dit que le salaire est divisé en salaire (60 %) et en prime trimestrielle (40 %), qui est toujours versée. Il est devenu évident que le mauvais choix avait été fait et que nous devions commencer à chercher un nouvel emploi. <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer créez vos propres réseaux de neurones pour étudier les clients (sans un data scientist parmi le personnel). Les nouveaux employés se sont vu proposer d'apprendre Python en une semaine, etc. Les jours de congés non payés sont devenus la norme. C’était stupide d’arrêter : où trouvera-t-on un emploi pendant une pandémie ? Mais la patience s'est épuisée au bout de 2 mois, lorsqu'il a été annoncé qu'il n'y aurait pas de primes trimestrielles. La nuance est que lorsque nous nous sommes mis d'accord sur le salaire, au moment de l'embauche, les RH ont dit que le salaire est divisé en salaire (60 %) et en prime trimestrielle (40 %), qui est toujours versée. Il est devenu évident que le mauvais choix avait été fait et que nous devions commencer à chercher un nouvel emploi. <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer <h3>Chapitre 6. Commencer à maîtriser Java</h3>Un beau jour de mai, je reçois une invitation à un entretien pour le poste vacant « Développeur ». Une entreprise du secteur des assurances a besoin d’une personne qui développera des produits d’assurance. Une expérience en programmation est nécessaire, mais comme il s'agit d'un développement « unique » de l'entreprise, il n'y a pas besoin d'un langage spécifique. Git et ainsi de suite sont également nécessaires. J'ai programmé un entretien dans deux jours et j'ai étudié les bases de Git pendant mon temps libre. Au cours de l'entretien, on m'a posé des questions sur Python, JS, Git, SQL. J'ai répondu à tout sauf à la notion de « surcharge de méthodes », et j'ai été invité à travailler dans 2 semaines. Il s’est avéré que l’entreprise avait acheté le système il y a longtemps. écrit en Java (recto et verso), avec lequel vous pouvez créer des processus métier sans connaître un langage de programmation (plus précisément, en utilisant le langage de programmation Jelly intégré). Cela sonne bien, mais en fait tout était déformé. Digression lyrique : toute technologie a sa propre époque et sa propre échelle. Faire tous les rapports en 2000 uniquement dans Excel, c'est cool. Faire la même chose en 2021, ce n’est pas très bien. Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créer Un site Web d'entreprise en HTML pur était cool en 1999, mais pas en 2021. Ainsi, la technologie utilisée par l'entreprise au moment de sa création (2005) était très intéressante - Java était responsable à la fois de la partie serveur et de la partie client (les soi-disant pages de servlet Java). De plus, si vous créez un nouveau processus métier (qui possède sa propre interface utilisateur), il est alors stocké dans la base de données et non dans le code d'un fichier. Pour comprendre à quel point cela est gênant, imaginez que vous écrivez du code Java dans Intellij idea, que vous l'enregistrez dans la base de données, puis. lorsque vous souhaitez exécuter votre code, le noyau du programme accède à la base de données et lit votre code à partir de là. Par conséquent, vous ne pouvez pas déboguer complètement votre application. Astuce n°1 : lorsque vous souhaitez soumettre du code au banc de test, vous devez créerSQL скрипт, qui contiendra votre code. Désagréable, mais tolérable ? Zest #2 : La base de données se compose de plus de 200 tables qui ont des connexions entre elles. Cela signifie que vous devez savoir dans quelles tables placer votre code et quelles entités doivent être créées dans d'autres tables. Le résultat est un script SQL d’une longueur d’environ 1 000 lignes. C'est vraiment dégoûtant. Méfiez-vous de l'héritage. Bref, me rendant compte que tout était en Java, je suis allé sur JavaRush (on est enfin arrivé au thème du site !). Juin-juillet 2020. Les 10 premiers niveaux ont été fermés rapidement (peut-être un mois), car il n'y avait rien de fondamentalement nouveau. Puis la vitesse a ralenti. Juillet-octobre 2020. Niveaux 10-20 fermés. Octobre-mars 2021. Niveaux 20-30 fermés. Maintenant, le plaisir commence : en mars 2021, j'ai commencé à regarder les offres d'emploi Java et j'ai réalisé qu'il y avait beaucoup de mots inconnus. Une sorte de Spring, SpringBoot, Hibernate, JUnit. Après avoir acheté des cours vidéo sur un site Web bien connu, je viens de toucher Spring et je pensais que maintenant je savais et pouvais tout faire. Après cela, je suis tombé sur le cours TopJava de Grigory Kislin. Sur son site Web, vous pouvez essayer de réaliser une tâche de test et, si vous réussissez, vous pouvez suivre le cours. Dans ce cours, vous créez une application Web à part entière et vous la publiez même sur Internet. Pour cet argent, ils vous feront une révision (révision du code par un programmeur plus expérimenté), vous donneront des retours et vous donneront des conseils en cas de problème. Je suis arrivé au devoir 3 et j'ai arrêté. La raison est simple : ils exigent beaucoup de vous, mais ils ne vous donnent aucune connaissance. Les exigences des devoirs sont très confuses. Les informations sont présentées de manière extrêmement incohérente. À mon avis subjectif, ce cours est nécessaire aux développeurs assez expérimentés issus d'autres langages similaires. Car dans son cours il n'y a pratiquement aucune explication sur les technologies qu'il demande à utiliser. Il faut aussi bien connaître Git (tout est envoyé dans votre dépôt personnel). Fin avril 2021, je poste un CV de développeur Java (avec le salaire souhaité au niveau intermédiaire+), dans lequel j'indique que lors de mon dernier emploi j'ai programmé en Java (j'ai menti). Le même jour, la banque reçoit une candidature pour un poste de développeur Java. <h3>Chapitre 7. Entretiens Java et perfectionnement des compétences</h3>Alors, quel était le plan ? J’ai besoin d’un bon salaire, car je suis déjà habitué à vivre avec un revenu considérable + des prêts. Les postes juniors ne me conviennent donc pas. Vous devez obtenir une position intermédiaire. Mais qui m'embauchera sans expérience ? La décision est venue naturellement : mon relevé de travail indique que j'ai travaillé pendant un an en tant que développeur et pendant encore 4 ans en tant qu'expert au sein du service informatique dans mon poste précédent. Donc, je dirai que je développe en Java depuis un an. Et s'ils posent des questions sur les nouveaux produits, je dirai que l'ancien Java (7) était là et ne supportait rien. Avant mon premier entretien (à distance), j'étais nerveux. Je n’ai aucune expérience, très peu de connaissances et je demande beaucoup d’argent. Je pense : peu importe, une expérience négative est aussi une expérience. Je contacte via Skype et je serai interviewé par deux chefs de service. Ce qui m’a fait encore plus peur. Les questions ont commencé : POO, périphérique HashMap, flux, structures de données, qu'est-ce que Spring, Hibernate, AOP. Et si avant le printemps c'était plus ou moins tolérable, alors au printemps cela s'est complètement effondré. Les gens me demandent : comment avez-vous évolué au Spring si vous ne le savez pas vraiment ? Moi : je l'ai copié, collé, ça marche, et merci pour ça. Cette réponse les a amusés. Ensuite, ils m'ont posé des questions sur SQL, dans lequel j'étais comme un canard dans l'eau. Ensuite, il y avait Git et une question sur le rebase, le choix (que je ne connaissais pas non plus) et j'ai terminé sur JS, car cela figurait dans mon CV. Là aussi, il y a eu un échec complet, car ils ont posé des questions sur la POO JS. Sur la base des résultats de l'entretien, il est devenu clair que mes connaissances n'étaient pas comme il faut et que je ne serais donc pas qualifié pour ce poste. Le soir, les RH m'écrivent que ma candidature a été approuvée et qu'ils sont prêts à m'appeler. En fait, je me suis étouffé avec un hamburger chez McDonald's. J'étais content, mais après 3 jours, les RH ont signalé qu'ils avaient choisi un autre candidat. Pour la première fois de mon expérience, une offre a été retirée. Après le premier entretien en Java, j'ai intensifié mon jeu : j'ai suivi un cours (et je l'ai terminé complètement !) en Git chez Colt Steele sur un site bien connu de vente de cours vidéo. Cela a changé ma perception de Git. Ensuite, j'ai suivi un (génial) cours de Zaur Tregulov sur Spring+Hibernate. Schéma de formation : je le regarde comme dans la vidéo, je fais la même chose sur mon ordinateur, mais je nomme les variables et les classes différemment pour ne pas copier bêtement le code de quelqu'un d'autre. Je télécharge tout mon travail sur mon Github (pratiquant ainsi Git). Nous étions à la mi-mai et les appels des heures ont commencé. Nous avons commencé à planifier les entretiens un par un. De nombreuses invitations ont dû être annulées pour les raisons suivantes : les RH n'ont pas lu la description de mon CV et m'ont invité à un poste de direction. Il convient également de mentionner une caste RH distincte : ceux qui confondent Java et JavaScript. C'est pourquoi j'ai écrit Middle Java Developer dans le titre de mon CV. <h3>Chapitre 8. Liste des questions typiques et déroulement des entretiens</h3>J'ai commencé à me rendre aux entretiens et j'ai progressivement formé un groupe de questions de base au milieu. Obligatoire : 0. POO - définition, parlez de chaque principe de la POO (+donnez un exemple tiré de la vie réelle). 1. Equals et hashcode - quel est le contrat (relation) entre eux ? 2. HashMap - comment comprendre dans quel compartiment un objet entrera, ce qu'est une collision, dans quelle structure de données les données sont stockées à l'intérieur du HashMap, la taille standard, comment le nombre de compartiments augmente. 3. Stream - quels types d'opérations, quelle est la différence entre elles, donnez un exemple de chaque type d'opération. 4. Pool de chaînes, pool d'entiers - qu'est-ce que c'est ? 5. Tas, pile - qu'est-ce que c'est, quelle est la différence ? 6. Différences entre Runnable, Thread, Future. 7. Volatil, atomicité. 8. Solid, Kiss, Dry - définitions, exemples tirés de la vie réelle. 9. Modificateurs d'accès en Java. 10. Quelle est la différence entre une classe abstraite et une interface. L'interface peut-elle être privée ? 11. Interfaces fonctionnelles. 12. Répertoriez toutes les méthodes Object et expliquez pourquoi elles sont nécessaires. Caractéristiques de la méthode de clonage. 13. Qu'est-ce que la sérialisation et la désérialisation. 14. Essayez de capturer avec des ressources - décrivez de quoi il s'agit, dites-lui à l'aide de l'interface Closeable. 15. Différences entre Final, enfin, finaliser ? 16. Surcharge, Le remplacement de méthode est la différence. 17. Pourquoi String est devenu immuable, parlez-nous de StringBuilder et StringBuffer. 18. Quelle est la complexité temporelle O(1), complexité mémoire. 19. Structures de données : parler de map, set, queue, deque, list et de leur implémentation en Java (treeMap, hashSet, hashMap, arrayList, linkedList, prioritéQueue, blockingQueue), décrire la complexité (pire, moyenne, meilleure) de l'insertion, recherche, en supprimant un élément dans chaque structure. 20. Types de données primitifs en Java. Pourquoi chacun d’eux est-il nécessaire ? 21. Types d'erreurs. Exceptions cochées et non cochées. 22. Qu'est-ce que JVM, JRE, JDK ? 23. Avec quels collectionneurs avez-vous travaillé ? Maven - Construire le cycle de vie. 24. Spring - Définitions Ioc, Di, cycle de vie du bean, contexte, annotations @Bean, @Configuration, @Autowired, @Advice, @Aspect, @Service, @Repository. 25. Génériques - définition de ce qu'est une limite inférieure et supérieure ? 26.Modèles de programmation - au moins Singleton (volonté de dire pourquoi il s'agit parfois d'un anti-modèle) + Constructeur, Adaptateur, Usine, Décorateur, Proxt. Souhaitable : 26. Tests - types de tests avec lesquels les bibliothèques (JUnit) ont été utilisées. Qu'est-ce que Mock, Stab, Spy ? 27. Spring Boot - pourquoi est-il nécessaire, prêt à créer une application SpringBoot en ligne. 28. Mise en veille prolongée - pourquoi est-ce nécessaire, entité, colonne de jointure, chargement paresseux ou impatient, niveaux de mise en cache (dur). 29. Repos de printemps - pourquoi est-il nécessaire, comment créer des points de terminaison @post, @get. Comment lire les paramètres/corps de la requête ? Comment soumettre au format json ? 30. Structures de données - arbres, leurs types. 31. Algorithmes - types de tri. En plus de Java, ils peuvent demander : 1. (Obligatoire !) Git - pourquoi est-il nécessaire, les opérations fusionnent, rebasent, sélectionnent, poussent, tirent, valident, enregistrent, extraient, branchent, réinitialisent, rétablissent, actualisent. 2.SQL - possibilité d'écrire une requête : joindre deux tables en une seule (jointure interne, jointure gauche). 3. Bases de données - 3 formes normales, index (pourquoi sont-ils nécessaires, types), clé primaire, clé étrangère Comment se déroule un entretien à distance typique : les ressources humaines envoient un lien pour zoomer (Skype, Google Meeting). A un certain moment vous vous connectez et il y a de 1 à 3 personnes (expert technique, patron, RH). Dans les cas particulièrement tenaces, jusqu'à 8 personnes. Vous parlez d'abord de vous, puis de la partie technique, puis d'une histoire sur le poste vacant et au revoir (ils vous disent quand ils vous contacteront ou quelles seront les prochaines étapes). Lors des adieux, vous pouvez demander des retours sur vos connaissances. J’ai demandé : « Pouvez-vous me dire, pendant mes réponses, où vous avez mal aux oreilles ? Beaucoup de gens répondent, mais soyez prêts à être rejetés. Au cours de l'entretien, ils évaluent : 1. Votre capacité à exprimer vos pensées et votre connaissance de la langue russe (je connais un cas où un candidat a été rejeté en raison d'une mauvaise connaissance de la langue russe). 2. Expérience antérieure (ils peuvent vous demander méticuleusement ce que vous avez fait lors de votre dernier emploi). 3. Une réaction adéquate lorsque la pression est exercée sur vous (il y a eu un entretien où les gens ont commencé à parler de manière irrespectueuse : ignorant mes réponses, essayant d'imposer leurs positions, etc. J'ai terminé l'entretien 15 minutes après le début, et ils : c'était un entretien stressant !) 4. Niveau de vos connaissances. Je vais entrer plus en détail ici. Connaître les définitions d’un sujet ne représente que 10 % de ce que l’on attend de vous. Il faut comprendre comment cela fonctionne (au moins au plus haut niveau). Volonté d'expliquer à quel moment du développement vous choisirez telle ou telle solution. C’est bien plus important que l’exactitude de votre définition. J'analyserai cette thèse à l'aide de deux exemples. Premier exemple : lors d'un entretien, on m'a posé une question sur HashMap, et j'ai donné la définition : "il s'agit d'une structure de données qui stocke des bundles de clés et de valeurs". Ensuite, l'intervieweur a demandé : quelle est la différence avec TreeMap ? Réponse : La différence est que HashMap hache la clé et, grâce au hachage, l'accès est rapide. L'intervieweur a immédiatement demandé de nous expliquer la structure interne de HashMap, et en même temps de nous poser des questions sur hashCode et ses égaux. Et cela ira plus loin jusqu'à ce que vous soyez satisfait de la réponse ou que vous arrêtiez. J'ai appris à répondre correctement à propos de HashMap seulement après 2 mois d'entretiens et un cours sur les structures de données sur hexlet. Deuxième exemple : le concept SOLID. Ils me demandent de donner une définition que j’ai mémorisée. Mais dès qu’il s’agissait d’exemples concrets, les problèmes ont commencé. Внимание!Si vous ne le savez pas, alors ne l'inventez pas, mais dites ceci : je ne connais pas ce sujet, mais je peux supposer qu'il fonctionne comme ça. De nombreux experts techniques sont furieux lorsqu’une personne parle d’hérésie comme si elle comprenait le sujet. 5. Votre niveau d'enthousiasme lors de la discussion sur l'emploi. On s'attend à ce que vous soyez intéressé et que vous posiez des questions sur le poste vacant (mais pas seulement des questions inventées). 6. Parfois, l'humour (uniquement sur le sujet) et les intérêts communs vous aident à communiquer. N'hésitez pas à parler de vos passe-temps ; peut-être que la personne interrogée aime aussi Dota/football/fantasy. Et c’est un plus pour vous en tant que candidat. Je connais des cas où une communauté d’intérêts a fermé les yeux sur la mauvaise formation technique de l’intervieweur (Tu es un gars normal, on va te former). <h3>Chapitre 9. Trouver un emploi, baptême du feu</h3>Les entretiens se sont déroulés de fin avril à mi-juillet. Les premiers entretiens ont été embarrassants, mais peu à peu la situation s'est améliorée jusqu'à atteindre un niveau acceptable. L'étude des questions courantes et des commentaires s'est fait sentir. Les 25 premiers entretiens n’ont pas abouti. Après cela, des moments de désespoir ont commencé. Sentiments : et s’ils ne m’embauchent pas pour ce salaire ? Soudain, les choses ont commencé à s'emballer : en une semaine, trois entreprises ont soumis des propositions. J'ai choisi une entreprise dont je connaissais les spécificités, en plus il y avait un bon salaire et la possibilité de travailler à distance. Au cours de mon entretien, on m'a posé environ 30 questions sur le noyau Java et Spring, auxquelles j'ai répondu correctement à 97 %. Après cela, il y a eu une communication avec les autorités supérieures et après une semaine et demie, j'ai trouvé un emploi chez eux. Tout d'abord, lorsque vous arrivez à un travail, vous commencez à accéder à tous les systèmes nécessaires et à installer les outils dont vous avez besoin. Cela a pris une semaine et demie et on m'a confié la première tâche : modifier le texte statique de la classe. Quand j'ai ouvert le projet, je me suis senti malade : il y avait beaucoup de modules dans un même projet, beaucoup de cours, de tests, etc. À ce stade, j'étais perdu, mais un deuxième développeur m'a aidé et m'a mis au courant. Le bug a été corrigé en 10 minutes, publié dans Git, une pull request a été faite (une demande de fusion de deux branches où d'autres développeurs vérifient votre code), puis fusionnée dans la branche principale. Il s'est avéré que tout n'est pas si difficile. Jusqu'à la première tâche à part entière... Au moment de planifier les tâches pour les deux prochaines semaines, ils m'ont dit : vous ferez l'intégration avec un autre système, qui se trouve sur OpenShift. C’est là que les choses sont devenues vraiment effrayantes : OpenShift est un ensemble de technologies : Docker, Kubernetes, Linux, etc. Des sueurs froides coulaient dans mon dos : eh bien, je travaillais comme Jawist. Immédiatement après la réunion, j'ai appelé le développeur, qui m'a rassuré : des adaptateurs pour ce système avaient été écrits, et il suffisait d'importer certaines classes dans mon projet, après quoi je pouvais utiliser l'intégration en toute sécurité. C'est redevenu amusant, jusqu'à ce que le développeur montre une intégration typique : j'ai vu plus de 20 classes créées pour une intégration similaire. De plus, des annotations inédites @Value, @Builder, @NoArgsConstructor, @Getter ont été remarquées. @Sl4f - il s'est avéré qu'il s'agissait du projet Lombook (lu sur Internet). Lorsque le développeur m'a expliqué comment faire, j'ai essayé d'écrire les connexions de toutes les classes, et rien du tout ne m'est resté en tête. Le moment le plus embarrassant a été le manque de connaissance d'Intellij Idea : comment rechercher globalement un projet, refactoring de code, etc. Ayant accepté la tâche, j'ai compris pourquoi la POO est nécessaire : pour une si grande quantité de code, il est nécessaire de le diviser en classes ; les méthodes qui ne sont pas utilisées en dehors de la classe doivent être déclarées privées afin de ne pas les exécuter accidentellement dans une autre classe, etc. Après avoir écrit mon intégration par analogie avec une autre intégration, j'ai découvert l'existence de CheckStyle - un plugin spécial qui vérifie le style de votre code, et vous ne pourrez pas compiler votre projet tant que vous n'aurez pas corrigé les erreurs (par exemple, des espaces supplémentaires, des noms de variables en majuscules, des noms de variables trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. J'ai essayé d'écrire les connexions de toutes les classes, et rien du tout ne m'est resté en tête. Le moment le plus embarrassant a été le manque de connaissance d'Intellij Idea : comment rechercher globalement un projet, refactoring de code, etc. Ayant accepté la tâche, j'ai compris pourquoi la POO est nécessaire : pour une si grande quantité de code, il est nécessaire de le diviser en classes ; les méthodes qui ne sont pas utilisées en dehors de la classe doivent être déclarées privées afin de ne pas les exécuter accidentellement dans une autre classe, etc. Après avoir écrit mon intégration par analogie avec une autre intégration, j'ai découvert l'existence de CheckStyle - un plugin spécial qui vérifie le style de votre code, et vous ne pourrez pas compiler votre projet tant que vous n'aurez pas corrigé les erreurs (par exemple, des espaces supplémentaires, des noms de variables en majuscules, des noms de variables trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. J'ai essayé d'écrire les connexions de toutes les classes, et rien du tout ne m'est resté en tête. Le moment le plus embarrassant a été le manque de connaissance d'Intellij Idea : comment rechercher globalement un projet, refactoring de code, etc. Ayant accepté la tâche, j'ai compris pourquoi la POO est nécessaire : pour une si grande quantité de code, il est nécessaire de le diviser en classes ; les méthodes qui ne sont pas utilisées en dehors de la classe doivent être déclarées privées afin de ne pas les exécuter accidentellement dans une autre classe, etc. Après avoir écrit mon intégration par analogie avec une autre intégration, j'ai découvert l'existence de CheckStyle - un plugin spécial qui vérifie le style de votre code, et vous ne pourrez pas compiler votre projet tant que vous n'aurez pas corrigé les erreurs (par exemple, des espaces supplémentaires, des noms de variables en majuscules, des noms de variables trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. Pour une si grande quantité de code, vous devez le diviser en classes ; les méthodes qui ne sont pas utilisées en dehors de la classe doivent être déclarées privées afin de ne pas les exécuter accidentellement dans une autre classe, etc. Après avoir écrit mon intégration par analogie avec une autre intégration, j'ai découvert l'existence de CheckStyle - un plugin spécial qui vérifie le style de votre code, et vous ne pourrez pas compiler votre projet tant que vous n'aurez pas corrigé les erreurs (par exemple, des espaces supplémentaires, des noms de variables en majuscules, des noms de variables trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. Pour une si grande quantité de code, vous devez le diviser en classes ; les méthodes qui ne sont pas utilisées en dehors de la classe doivent être déclarées privées afin de ne pas les exécuter accidentellement dans une autre classe, etc. Après avoir écrit mon intégration par analogie avec une autre intégration, j'ai découvert l'existence de CheckStyle - un plugin spécial qui vérifie le style de votre code, et vous ne pourrez pas compiler votre projet tant que vous n'aurez pas corrigé les erreurs (par exemple, des espaces supplémentaires, des noms de variables en majuscules, des noms de variables trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. les noms de variables sont trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. les noms de variables sont trop courts). Après avoir vaincu CheckStyle, j'ai envoyé mon code pour révision aux développeurs seniors et j'ai corrigé mes erreurs en une semaine. En général, j'ai eu beaucoup de chance d'avoir dans mon équipe de bonnes relations avec le deuxième développeur, qui m'a expliqué beaucoup de choses. Un mois après l'appareil, ma première intégration a été lancée sur le stand Intégration-Fonctionnelle (le fonctionnement de toutes les applications ensemble est testé), et tout y a fonctionné ! La victoire! La tâche suivante consistait à créer une classe permettant de masquer les données par clé dans json. Par exemple : il y a json {text:"JavaRush"} -> traitement -> {text:"****Rush"}. Il y a deux complications ici : il peut y avoir une imbrication de {text:{mytext:"JavaRush"}}, et ce qui est plus désagréable est l'imbrication à l'intérieur du tableau : {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (bien sûr, vous devez masquer tout text.mytext). Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile. Résoudre ce problème s'est avéré assez difficile, mais je l'ai fait ! Ici, le deuxième développeur dit : couvrez ce développement avec des tests. Il y avait de la perplexité dans les yeux. C'est ainsi que j'ai découvert la bibliothèque JUnit au combat. L'essence des tests unitaires : vous disposez de données d'entrée, les transmettez dans une méthode et comparez les données reçues avec le résultat correct (créez une variable avec le résultat correct). J'ai écrit 11 cas pour ma bibliothèque, dans lesquels j'ai vérifié que l'application ne plantait pas avec une NullPointException et qu'elle masquait correctement les données avec tout type d'imbrication. Après avoir terminé cette tâche, on m'a proposé une nouvelle intégration dont la particularité était la suivante : j'ai dû exporter un Spring Bean depuis une bibliothèque externe. À ce stade, je suis devenu un client régulier du site Web Stack OverFlow. Une fois, même un développeur officiel de Spring a répondu. Après avoir mis en œuvre cette intégration, ma période d'essai a pris fin. Le patron m'a félicité pour avoir réussi la période d'essai et j'ai commencé à écrire cet article. Au total, il a fallu 8 heures pour rédiger cet article) Merci de votre attention, j'espère que l'article vous a été utile.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION