Plan de préparation aux entretiens avec les développeurs Java

Chaque fois, en préparant des entretiens pour le poste de «développeur Java», je comprends qu'un plan de préparation concret m'aiderait vraiment. Par conséquent, toutes leurs notes accumulées au cours des entretiens, il a été décidé de structurer et de publier. J'espère que quelqu'un trouvera ce plan utile.

Et je n'écris pas intentionnellement à qui ce plan de formation est destiné: pour un développeur senior, moyen ou junior - tout dépend de la vacance spécifique et des exigences de l'employeur. Par conséquent, comptez sur ce plan, mais filtrez et ne le prenez pas en même temps comme un guide exhaustif.

  1. Noyau Java . Ici, vous pouvez vous concentrer, par exemple, sur le livre «OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809» pour préparer la certification Java de niveau professionnel. Il existe un livre similaire , OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808, for the Associate level - vous pouvez également le consulter. Parcourez la table des matières et mettez en évidence ce que vous pouvez répéter. Bien sûr, vous ne devriez pas entrer dans le sérieux et lire une couverture de livre pour couvrir - de nombreux sujets de ce livre peuvent être contournés, par exemple, le formatage de la date. Mettez en surbrillance le plus élémentaire. Par exemple, pour moi, ce sont les sujets suivants: collections (questions standard "Comment est organisé le HashMap?" Ou "Quelle est la différence entre LinkedList et ArrayList?" Sont également souvent posées lors des entretiens), génériques, interfaces fonctionnelles, multithreading (ici aussi, filtre - vous n'avez pas besoin de cyclique cadre de jonction barrière et fourche).
    N'oubliez pas non plus de projeter des connaissances dans votre expérience. Par exemple, quand avez-vous dû utiliser la programmation multi-thread? Quels problèmes avez-vous résolus? Quelles serrures avez-vous utilisées?
  2. Multithreading. Je souligne toujours ce sujet dans un paragraphe séparé - car le livre ci-dessus n'explique pas ce qu'est volatile, verrouille et attend / notifie. Si vous n'avez jamais travaillé avec une programmation multithread auparavant, alors soyez honnête et parlez lors de l'entretien. Mais certaines choses qui, par exemple, ont été énumérées ci-dessus, ce serait bien de savoir au moins en théorie (en particulier la question "Qu'est-ce qui est volatile?" Que j'ai eu à presque chaque entretien).
  3. Des algorithmes Cette rubrique est pertinente non seulement pour les développeurs Java. Il est peu probable que l'on vous demande d'écrire un algorithme de tri. L'intervieweur n'est pas intéressé à savoir à quel point vous avez appris le code de tri par fusion (il vous demandera probablement de dire le principe général). Mais résoudre un problème algorithmique, évaluer la complexité de votre solution, ou par exemple expliquer en mots le principe de la recherche approfondie, est une option possible.
  4. Structures de données. En quoi un arbre diffère-t-il d'un graphique? Que sont les arbres AVL? En quoi la pile est-elle différente de la file d'attente?
    Concernant java: quelles classes en java implémentent une pile ou une file d'attente? Quelle est la différence entre LinkedList et ArrayList? Qu'est-ce qu'un hashset? En quoi est-il différent de TreeSet? Comment fonctionne HashMap?
    Ces questions et d'autres similaires sont très susceptibles d'être interrogées. Mais il convient de noter que les questions sur les arbres et les graphiques sont beaucoup moins susceptibles d'apparaître dans les entretiens - ces structures ne sont pas utilisées dans la pratique si souvent. On s'attend plutôt à ce que vous ayez une bonne connaissance de ce que vous avez utilisé plus tôt. Ne sais pas ou n'a pas utilisé de bois rouge-noir? Alors dis-moi, tu ne peux pas tout savoir.
  5. Bases de données Relationnel et non relationnel. Quelle est la différence? Quoi et quand l'utiliser?
    Si nous parlons de relationnelles, répétez tous les objets de ces bases de données: tables, vues, index. Répétez sql - comment la requête est construite, quels types de jointure existent, que d'avoir différents de où. Répétez également les transactions séparément - niveaux d'isolement, propriétés ACID. Rappelez-vous, avez-vous déjà eu des cas d'optimisation de requêtes? Avez-vous dû examiner le plan d'exécution des requêtes?
    N'oubliez pas non plus de répéter jpa (si cette spécification est requise dans l'offre). Qu'est-ce que le gestionnaire d'entité? Qu'est-ce que le contexte de persistance? Et ainsi de suite, ce à quoi je devais faire face.
  6. Cadres Les cadres que vous devez répéter dépendent du poste vacant spécifique. Dans la plupart des cas, le printemps est requis. N'oubliez pas de répéter le fonctionnement général de Spring, les étapes d'initialisation du bean. Rappelez-vous quels frameworks Spring vous avez utilisés (par exemple Spring mvc, Spring security, Spring data) et pourquoi. Répétez les annotations principales (n'oubliez pas le qualificatif, le primaire et le conditionnel - ils aiment poser des questions particulièrement souvent à leur sujet). Et n'oubliez pas les portées de haricots.
    Je voudrais également aborder l'annotation transactionnelle. Comment fonctionne-t-elle? Que peut-on y configurer en plus?
  7. Appareil Jvm. Qu'est-ce qu'un tas et une pile? Comment les objets sont-ils stockés dans jvm? Qu'est-ce qu'un pool de chaînes? Que prévoit le principe se produit avant? Comment fonctionne le ramasse-miettes? Répétez autant que possible - ce ne sera pas superflu.
  8. Patterns Pas besoin de conduire - personne n'aura besoin de répertorier tous les modèles existants. Mais certains, utilisés en Java ou Spring, doivent être connus (par exemple, Immutable, Singleton, Prototype, Builder, Proxy, Abstract Factory, Wrapper).
  9. Problèmes algorithmiques. Souvent, lors des entretiens, ils demandent de résoudre un problème particulier. Parfois sur un morceau de papier, parfois sur un tableau noir, parfois sur un site particulier, si c'est une interview Skype. Soyez prêt à écrire du code sans utiliser votre environnement de développement préféré. Entraînez-vous également à résoudre des énigmes, par exemple sur Leetcode .
  10. Réseaux. Répétez les niveaux du modèle OSI. Et n'oubliez pas de répéter les principaux protocoles un peu plus en détail: tcp, udp, http, https.
  11. L'architecture SOLID, découverte de service, files d'attente de messages. Quand utiliser des microservices et quand est un monolithe? Avez-vous utilisé eureka ou consul?
  12. Le reste. Agile, Git et Gitflow, REST / SOAP, Linux (si vous avez travaillé), Docker et Kubernetes (si vous avez travaillé). Et aussi des tests - fonctionnels, d'intégration et unitaires. Quelles sont les différences, lesquelles ont écrit, ont-ils utilisé TDD?
  13. Anglais Seulement si requis. Bien sûr, ne répétez pas les règles de la grammaire de la langue anglaise. Il suffit de s'entraîner à parler de vous, il est possible de se souvenir de quelques phrases pré-préparées.
  14. Pour moi. Soyez prêt à répondre à ces questions: «Quel problème intéressant avez-vous dû résoudre au travail?», «Dites-nous ce dont vous êtes le plus fier.», «Parlez-nous de vos réalisations.», «Parlez-nous de vos échecs.», «Comment vous éduquez-vous?» , «Pourquoi ont-ils quitté leur ancien lieu de travail?». Si vous avez vos propres projets, articles ou discours, assurez-vous d'en parler. Ils sont très intéressés par ces choses et ne manqueront pas de demander plus de détails.

Assurez-vous également de préparer les questions de votre entreprise. Mettez en surbrillance les principaux points qui sont importants pour vous, directement sur les points. Sur un habr il y a un merveilleux post à ce sujet .

Et je vais donner quelques conseils de moi-même.

Personnellement, je mets toujours les 2 premiers entretiens en formation. Autrement dit, ce sont généralement les entreprises qui m'intéressent le moins. Ces entretiens sont nécessaires juste pour entrer dans le rythme et ne pas avoir peur des suivants.

Soyez également prêt à parler de votre expérience à partir d'un CV. Ce qu'ils ont fait, pourquoi, quels problèmes ils ont résolus.

N'oubliez pas que vous n'êtes pas une encyclopédie et que vous ne devez pas immédiatement répertorier, par exemple, toutes les interfaces fonctionnelles en Java. Ce sera tout à fait normal si vous ne dites que ce avec quoi vous avez travaillé.

Et rappelez-vous que l'entretien est avant tout une conversation. Ils ne vous interrogent pas et ne veulent pas vous faire honte si vous ne savez rien. L'employeur saura si vous êtes un candidat convenable et vous saurez si cet emploi vous convient.

Un autre bon livre est Cracking the Coding Interview . Vous pouvez jeter un coup d'œil, surtout si vous allez subir des entretiens dans des sociétés étrangères telles que Google, Facebook.

Ressources utiles pouvant être nécessaires à la préparation:

  • Cracking the Coding Interview.
  • OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809.
  • Le post "je vous rappelle . "
  • Leetcode .
  • Interviewbitbit Un autre site avec des problèmes algorithmiques. Ici, les tâches sont structurées en catégories.

Bonne chance

Source: https://habr.com/ru/post/fr473872/


All Articles