Expérience d'entrevue avec Goldman Sachs | Ensemble 19
J'ai eu un entretien avec GS dans leur bureau de Bengaluru. J'ai 4 ans d'expérience dans le développement full stack utilisant Java. J'ai reçu un appel d'un consultant.
Tour 1
Quels concepts êtes-vous à l’aise avec Java ? J'ai dit collections. Il a demandé quelles classes de collecte avez-vous utilisées ? J'ai dit HashMap ArrayList et HashSet.
Quand utiliseriez-vous Set et quand une liste ? J'ai dit que Set prend en charge les éléments uniques non nuls et que List n'a pas cette contrainte. Donc, si je veux des éléments uniques, j'utiliserai Set. Il a demandé une autre considération ? J'ai dit le type de requêtes à effectuer sur la collection. Comme la recherche. Il a demandé un exemple ? J'ai dit – base de données des employés. Les employés doivent être uniques afin que nous puissions utiliser la liste et la recherche par recherche binaire ou une technique similaire, car ils sont généralement triés dans un certain ordre. Mais je pense qu'il s'attendait à la réponse ou à Set du temps de recherche O(1). J'ai expliqué le fonctionnement de HashMap et HashSet et comment cela aiderait un développeur à obtenir facilement le caractère unique des éléments, mais l'intervieweur n'était pas convaincu de ma réponse à sa question initiale.
Quel est le contrat d’equals() et hashCode() ? Que se passe-t-il si l’un est remplacé mais pas l’autre ?
Trouver le deuxième minimum dans un tableau donné .
Recherchez le point pivot dans un tableau trié et pivoté.
Une question pour moi ?
Tour 2
Donnez une brève introduction sur votre expérience de travail.
Donnez un aperçu de la conception de votre projet récent.
Supposons que j'ai une interface utilisateur où il y a une liste ou un tableau d'articles et que chaque article a un attribut de profit, un attribut de remise, etc. Comment garantir que plusieurs utilisateurs ne laissent pas l'état d'un article incohérent. L'utilisateur peut mettre à jour les attributs ou un autre service Web peut faire de même. J'ai suggéré de synchroniser les méthodes de définition de l'élément. Il a demandé comment trier les articles. J'ai dit que les éléments résideraient dans une liste de tableaux et j'ai implémenté l'interface Comparable. Il a demandé un code fonctionnel. Quand j'ai écrit l'expression dans la méthode compareTo(), il a dit que la conception n'était pas flexible car il existe un codage en dur des critères de tri. Il a dit que lorsque quelqu'un souhaite trier selon un autre attribut, il devient impossible de gérer autant d'objets en double. J'ai dit que nous pouvions le faire avec le modèle de méthode Factory. Sur ce, il a effectivement mis fin à la série d'entretiens. Quelque part entre les deux, il avait mentionné l'interface Comparator et je lui ai expliqué comment cela fonctionnait. J'ai dit que c'était un bon choix si l'on ne voulait pas modifier les classes existantes. Je pense qu'il s'attendait à l'implémentation de la méthode compare() car cela ne nécessiterait pas d'objets en double et le tri selon différents critères peut être effectué en implémentant simplement Comparator dans différentes classes, une classe pour chaque critère de tri, puis en invoquant la méthode sort() de la classe Collections avec cette implémentation de Comparator.
Une question pour moi ?
On m'a dit de partir pour la journée. Conseil : essayez de ne pas évoquer les modèles de conception, sauf si cela vous est demandé ou si vous avez de l'expérience dans la résolution de problèmes avec les modèles de conception. Écoutez l'intervieweur et soyez vigilant. Ils fournissent des indices. Au premier tour également, j'avais commis une erreur dans la question du tableau pivoté. Il a donné un cas de test dans lequel mon code échouerait. J'ai corrigé l'écueil. Dormez suffisamment avant le jour de l’entretien. Tous les problèmes de pratique pour Goldman Sachs ! Créer un quiz