Maison >Problème commun >Vous voyez comment cette fille a reçu une offre de Meituan ?

Vous voyez comment cette fille a reçu une offre de Meituan ?

Java学习指南
Java学习指南avant
2023-07-26 16:55:081001parcourir

Meituan, j'ai soumis mon CV sur Lagou.com. Je l'ai soumis une fois auparavant, mais mon CV n'a pas réussi à être supprimé. Plus tard, j'ai demandé à mon supérieur de m'aider à modifier mon CV et je l'ai soumis à nouveau dans un autre département. , et j'ai obtenu une interview. Le 23 octobre, les RH m'ont appelé à midi et ont pris rendez-vous pour un entretien à 16h30. Il m'a dit qu'il écrirait du code en ligne et m'a demandé de préparer l'environnement réseau. Du coup, je n'ai toujours pas appelé à 17h30, j'ai donc été relâché. Après avoir renoué avec les RH, nous avons décidé de nous revoir lundi après-midi prochain. Cependant, communiquer avec les RH pour prendre rendez-vous semble inutile à Meituan.

Une interview (20 minutes)

A 7 heures du soir, parce que je pensais à l'interview de lundi prochain, j'étais sur le point de sortir jouer au badminton quand l'appel de Pékin est arrivé. L'intervieweur s'est excusé de diverses manières, affirmant que la réunion avait été retardée.

1. Auto-présentation

Je l'ai dit à plusieurs reprises, et il est très facile de comprendre les points clés.

2. Demandez-moi si l'algorithme de structure des données est bon

C'est plutôt bien (en fait, je suis encore un peu coupable, mais j'ai répondu à beaucoup de questions récemment et je ne peux qu'avoir le courage de faire semblant d'être gros ).

3. Trouvez le troisième point bissecteur de la liste à chaînage unique. Et si la liste à chaînage unique a un anneau

Utilisez les pointeurs lent et rapide pour faire un pas et trois pas. S'il existe une boucle, déterminez d'abord où se trouve la boucle, recherchez le dernier nœud, puis utilisez l'approche précédente sans boucle.

4. Parlons de la structure du projet

Je me suis concentré sur MVC.

5. Parlez des modèles de conception que vous connaissez

Je me suis concentré sur les singletons, les méthodes d'usine et les agents.

6. Avez-vous configuré un serveur ou quelque chose comme ça ?

Je n'en sais vraiment pas, je n'en ai jamais entendu parler, donc je ne peux honnêtement dire que non, après tout, ça ne sert à rien d'en parler.

C'était assez pressé. Je suppose que l'intervieweur venait de terminer la réunion et n'avait pas encore mangé. Il m'a dit d'attendre et peut-être de trouver un collègue pour m'interroger, et il pourrait me dire directement le résultat. À en juger par la voix et le ton de l'intervieweur, j'ai jugé qu'il devait être le chef du département et j'ai posé plus de questions sur le design. Plus tard, les RH m'ont dit qu'il était le chef du département dans lequel je voulais aller. Ha ha.

Deux entretiens (60 minutes)

Après la première interview, j'étais sur le point de sortir jouer au badminton lorsque l'appel de Pékin est revenu. (Je suis destiné à ne pas pouvoir participer aux activités de l'équipe ce vendredi !)

Deuxième entretien : Par rapport à la première interview, la voix de l'intervieweur lors de la deuxième interview sonnait comme celle d'une personne engagée dans le développement technique. Entretien téléphonique purement technique d'une heure ! Très complet !

1. Spring : Avez-vous déjà utilisé Spring, Spring IOC, le mécanisme et l'implémentation d'AOP, Spring MVC


En fait, je ne veux pas qu'on me pose des questions sur les détails de Spring, je n'ai pas examiné le framework. et je ne m'en souviens pas bien. J'ai donc dit à l'intervieweur que je comprenais assez bien certains des mécanismes les plus importants de Spring, puis j'ai utilisé un exemple pratique pour expliquer ma compréhension de l'IOC et de l'AOP. Il a écouté et a dit qu'il avait raison et qu'il avait bien compris (une rencontre rare. ). Je suis tellement heureux d’avoir un intervieweur qui peut donner son avis pendant l’entretien).


En fait, j'ai utilisé Spring MVC. J'ai parlé à l'intervieweur du servlet utilisé dans mon projet, du MVC implémenté par jsp et javabean, ainsi que des responsabilités de chaque module MVC et de la manière dont chaque module est connecté. , et enfin j'ai ajouté que je pense que l'idée de SpringMVC est en fait la même que celle-ci (il avait raison, hé, c'est super d'avoir des retours).


2. Multi-threading : Comment assurer la sécurité des threads, quelles sont les différences entre les différentes méthodes d'implémentation, l'utilisation de mots-clés volatiles, la compréhension des verrous réentrants, est synchronisé un verrou réentrant


Ici, je parlerai principalement du mot-clé Synchronized, ainsi que de certains verrous du package concurrent, ainsi que de leurs avantages, inconvénients et différences respectifs. J'ai principalement parlé du mot-clé volatile sous les trois aspects de la visibilité, de l'atomicité et de l'interdiction de la réorganisation des instructions JVM. J'ai également parlé du mot-clé volatile que j'ai utilisé dans la double vérification du mode singleton multithread pour interdire l'optimisation de la réorganisation des instructions JVM.


3. Collection : L'implémentation sous-jacente de HashMap, comment implémenter la sécurité des threads HashMap


J'ai parlé de l'implémentation sous-jacente de HashMap en tant que tableau plus une liste à chaînage unique, des classes internes de nœud, du processus d'ajout , Résolution des conflits de hachage et expansion , trois vues de collection. La méthode d'implémentation de la sécurité des threads HashMap parle principalement de la méthode statique SynchronizedMap dans HashTable, ConcurrentHashMap et Collections, qui peut encapsuler HashMap. Et la différence et l'efficacité de ces trois méthodes.


4. Gestion de la mémoire JVM, algorithme GC, garbage collector et chargement des classes dans HotSpot


La mémoire JVM est principalement divisée en cinq zones, qui sont partagées par les threads et qui sont exclusives aux threads. dans chaque domaine. GC : Comment déterminer quels objets doivent être GC, méthodes GC, GC mineur et GC complet. Algorithme HotSpot GC et 7 types de périodes de garbage collection, parlant principalement du CMS et du collecteur G1. Chargement de classe : processus de chargement de classe, Bootstrap classloader-ExtClassloader-AppClassloader, mécanisme de délégation de classe parent.


5. La différence entre les processus et les threads


Réponse sous quatre aspects : la planification, la concurrence, les ressources détenues et la surcharge du système.


6. HTTP a-t-il un état ? J'ai dit apatride. Comment résoudre l'apatridie HTTP ? Il existe quatre méthodes : la réécriture d'URL et le masquage des formulaires. . Domaine, Cookie, Session.


7. Java IO, NIO, les IO asynchrones sont-elles implémentées en Java


Java IO implémente le blocage synchrone, comment réalise-t-il le blocage synchrone ? J'ai pris la méthode read() comme exemple. NIO implémente le non-blocage synchrone. J'ai parlé en détail de la méthode d'interrogation select() dans Selector pour expliquer comment elle implémente les E/S multiplexées. Comparez ensuite leur efficacité. L'intervieweur a probablement vu que j'en savais beaucoup sur ce domaine, alors il a continué à me demander si les E/S asynchrones étaient implémentées en Java. J'avais l'impression que ce n'était pas le cas, mais l'intervieweur a dit que oui, et m'a laissé y réfléchir. En fait, je ne savais pas grand-chose à ce sujet, alors j'ai demandé à l'intervieweur de dire ma compréhension du modèle d'E/S asynchrone sous Unix, puis j'ai dit que je ne savais vraiment pas s'il existait en Java. (Il a en fait ri ! Il a dit que vous aviez raison, peu importe qu'il y ait Java dedans ! Haha)


8 Connaissez-vous le front-end ?


Je ne connais que le front-end. Utilisez simplement du js. J'ai utilisé le framework jquery. Demandez-moi quel est le nom complet d'Ajax, je suppose que c'est du js et du xml asynchrones. En fait, je ne comprends pas le principe d'implémentation d'Ajax. Je viens d'en parler brièvement pour les requêtes asynchrones via l'objet XMLHttpRequest. Le moteur Ajax s'exécute sur le client, ce qui réduit la charge de travail du serveur.


9. Laissez-moi concevoir un pool de threads


Parce qu'il est écrit dans mon CV que j'ai une bonne compréhension du multi-threading et de la concurrence. Il pose donc toujours des questions dans ce domaine. Parce que j'ai déjà vu le code source de ThreadPoolExecutor, j'ai réfléchi à ce problème en me basant sur l'idée de conception de cette classe. J'ai parlé en détail du pool principal, du modèle de méthode d'usine qui peut être utilisé pour créer des threads. état du pool de threads, file d’attente de blocage, stratégies de rejet dans ces aspects. La conception est assez soignée.


Parlons de plusieurs modèles de conception, où ils sont utilisés et pourquoi ils sont utilisés


Mode cas unique, getRuntime() en mode méthode Factory, ThreadPoolExcutor utilise le mode ThreadFactory Observer : Observable ; et Observer sous le package java.util. Enfin, j'ai principalement parlé des scénarios d'utilisation du modèle de méthode factory.


11. Optimisation MySQL et implémentation d'index


J'en parle sous deux aspects : l'optimisation de la conception de la base de données et l'optimisation des requêtes. Implémentation de l'arbre d'index B+, la différence entre l'implémentation de l'index de clé primaire InnoDB et MyISAM, l'un est agrégé et l'autre non agrégé.


12. Niveaux d'isolement des transactions


Quatre niveaux d'isolement, quelles exceptions peuvent survenir, le niveau par défaut dans MySQL.


13. Avez-vous déjà utilisé Hibernate, mybatis, git


Dites-moi simplement brièvement ce qu'ils font.


14. Linux


J'ai dit que j'avais appris cela pendant mes études de premier cycle, mais je ne l'ai pas utilisé depuis longtemps et j'ai oublié toutes les commandes. Il a dit que c'était bon, il va vous tester sur quelques tests simples : cd, ls, dir (très simple).


15. Question d'algorithme


Trouver les 10 plus petits nombres parmi 100 000, analyse de complexité temporelle (tas maximum, considérer la mémoire).


Trouver la somme maximale de sous-tableaux consécutifs à partir d'un tableau positif et négatif, analyse de complexité temporelle (programmation dynamique)

Combien de nœuds y a-t-il dans le i-ème niveau de l'arbre binaire complet et combien de nœuds y a-t-il là, dans l'arbre binaire complet de niveau n.

Enfin, il est temps pour moi de poser des questions :


1. Dans quel département êtes-vous (il a dit que c'est le département principal, la recherche et le développement du Big Data).


2. Je suis très intéressé par la concurrence élevée et l'équilibrage de charge, mais je n'ai généralement pas cet environnement à l'école qui me permet d'expérimenter cela, alors que suggérez-vous que je puisse apprendre maintenant (il a dit ceci : c'est vrai que ce n'est pas facile à apprendre. Je ne peux lire que certaines théories et les blogs des autres, et ensuite je pourrai apprendre lentement au travail).


3. Que fait exactement le middleware ? Est-ce pour résoudre la concurrence élevée et l'équilibrage de charge ? (Il a dit presque oui, puis il a dit que notre département n'est pas un middleware, mais un département Big Data. J'ai dit oui. Savoir) .


Au final il n'y a eu aucun problème, il m'a demandé de garder le téléphone ouvert.

Après cet entretien, j'avais la bouche sèche. J'ai soupçonné un jour qu'il ne savait peut-être pas que je postulais pour un poste de stagiaire. Il y a trop de choses à résumer, alors parlons-en ensemble dans le lieu du résumé.


Trois entretiens (25 minutes)

L'intervieweur a déclaré qu'il venait d'un autre département et qu'il devait mener un entretien croisé.


1. Optimisation MySql.


2. Dites-nous ce que le projet a fait, son architecture, etc.


3. Écrivez du code en ligne sur collabedit. La question est très simple et est la question originale sur La beauté de la programmation. Un tableau d'entiers ordonnés, génère deux nombres pour que leur somme soit une valeur donnée. Je l'ai déjà fait et je l'ai écrit rapidement, puis je lui ai expliqué les idées. Il a ensuite demandé quoi faire si le tableau n'était pas ordonné, triez-le d'abord.


4. Deux fichiers, chaque fichier a plusieurs URL, trouvez la même URL dans les deux fichiers (utilisez HashMap)

Ce côté est assez simple, ajoutez simplement celles en ligne qui n'ont pas été interviewées auparavant. En écrivant du code, j'ai découvert plus tard Collabedit. Certaines sociétés Internet comme Facebook utilisent cet éditeur en ligne pour écrire du code pour les entretiens à distance. Il n'y a pas d'invite et ne peut pas être compilé et exécuté. un tableau blanc. Entraînez-vous simplement vos mains régulièrement.


Quatrième entretien avec les RH (30 minutes)

L'intervieweur du troisième entretien a dit que c'était le dernier entretien et a dit qu'il attendrait que les RH me contactent après mon passage. Je ne m'attendais pas à ce que l'entretien RH une demi-heure plus tard soit également technique.

1. Présentez-vous. Pourquoi vous présentez-vous lorsque vous êtes entouré d'autres personnes ? ! Je pensais qu'il s'agissait d'un simple entretien RH, donc l'introduction portait sur ma personnalité et ma vie, mais cela s'est avéré que ce n'était pas le cas.

2. Renseignez-vous sur le projet et posez des questions très détaillées sur les détails techniques, les problèmes que vous avez rencontrés, comment vous les avez résolus, s'il y a quelqu'un pour diriger le projet et comment vous communiquez avec les autres.

3. Optimisation de la base de données, que dois-je faire si une table de la base de données est extrêmement grande ?

J'ai parlé de l'optimisation de la base de données dont j'ai déjà parlé à plusieurs reprises. Il a demandé quoi faire si une table est extrêmement grande : diviser. une grande table en petites tables, comment y parvenir : utilisez Partition table.

4. Interrogez les étudiants diplômés sur leurs sujets de recherche scientifique, pourquoi ils ont choisi ce sujet, quels articles ils ont lus (me demandant même dans quelles revues ces articles ont été publiés et de quelle école sont issus les auteurs), pourquoi ils ont choisi cela. algorithme, et dans quelle mesure Optimisé, comment les résultats expérimentaux se comparent-ils à ceux des autres et pourquoi sont-ils meilleurs que les algorithmes des autres (j'ai continué à poser des questions les unes après les autres. Je suppose qu'il n'a pas très bien compris les termes professionnels que j'ai mentionnés. Il a juste ? Je voulais juger si c'était moi qui l'avais fait . )

5. Déterminer la durée du stage

Cet aspect me fait vraiment ressentir une pression. Le projet est pour un travail de premier cycle et cela prend beaucoup de temps. pas résumé, donc je ne peux qu'y penser Editeur, hehe. En termes de recherche scientifique, ce n'est pas mal. J'ai travaillé sur ce semestre dernier. Je me souviens encore assez clairement de la mise en œuvre, de l'amélioration et de la comparaison de certains algorithmes. J'y ai répondu très couramment. C'est peut-être vraiment un aspect technique RH.

Je suis tellement fatiguée. Je ne veux plus chercher de stage. Je dois dire que l'entretien de stagiaire de Meituan est aussi grandiose que l'offre officielle de recrutement de l'école. Je suis tellement fatiguée de tous les côtés. aussi très bien et je suis très satisfait, donc je ne veux pas continuer à chercher. Jusqu'à présent, l'examen des bases de Java, des bases de données, des réseaux informatiques et des systèmes d'exploitation est terminé. Maintenant, révisez simplement les questions chaque jour et continuez. Ensuite, préparez-vous à jeter un œil au code source de Tomcat. Nous sommes sur le point d'entrer dans une nouvelle étape. Ce n'est pas la fin, alors allez.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer