Top 8 des questions et réponses importantes pour les entretiens de codage 2022 [Pour les débutants et les expérimentés]

Publié: 2021-08-25

De bonnes bases de structures de données telles que des tableaux, des arbres binaires, des tables de hachage et des listes chaînées sont essentielles. Vous devez être au courant des algorithmes essentiels, des méthodes et avoir une bonne maîtrise des langages de programmation tels que Java, surtout si vous postulez à des emplois de programmation. Vous pouvez certainement apprendre les réponses aux questions importantes de l'entretien de codage, mais il est fortement recommandé de pratiquer les solutions de manière approfondie par vous-même.

Les 8 meilleures questions d'entrevue de codage et leurs réponses

Examinons certaines des questions de codage les plus importantes qui sont posées dans les entretiens organisés par de grandes entreprises telles que Microsoft, IBM, Google, etc.

1. Comment trouver le premier caractère non répété d'un mot ?

Afin de répondre à cette question, vous devez d'abord comprendre ce qui doit être fait pour promouvoir cette fonction. Une fonction doit être écrite qui accepte les chaînes et renvoie les premiers caractères non répétés.

Par exemple, dans le mot 'passage', 'p' est le premier caractère non répété ou dans le mot 'tortue', 'u' est le premier caractère non répété. Alors, comment résoudre ce problème ? Nous pouvons créer une table pour stocker les répétitions pour tous les caractères, puis sélectionner les premières entrées qui ne sont pas répétées.

Afin d'écrire un code qui renverra les premières lettres non répétées, nous pouvons utiliser LinkedHashMap pour stocker le nombre de caractères. Ce HashMap suit l'ordre d'insertion et les caractères sont initialisés à la même position que dans la chaîne. La chaîne analysée doit être itérée à l'aide de LinkedHashMap pour choisir l'entrée requise avec la valeur 1.

Une autre façon d'aborder ce problème consiste à utiliser firstNonRepeatingChar(String word). Ceci permet au caractère non répété qui apparaît en premier d'être identifié en un seul passage. Cette approche utilisait deux stockages pour remplacer une interaction. Cette méthode stocke les caractères non répétés et répétés séparément et lorsque l'itération se termine, le caractère requis est le premier élément de la liste.

2. Comment supprimer les doublons des tableaux ?

Tout d'abord, vous devez utiliser LinkedHashSet (Set Interface) pour conserver l'ordre d'insertion d'origine des éléments dans l'ensemble. Vous devez utiliser des boucles ou des fonctions de récursivité pour résoudre ces types de questions d'entretien de codage.

Le facteur principal que nous devons garder à l'esprit lorsqu'il s'agit de tableaux n'est pas les éléments qui ont des doublons. Le principal problème ici est de supprimer les doublons à la place. Les tableaux sont des structures de données statiques de longueur fixe, donc impossibles à modifier. Ainsi, pour supprimer des éléments des tableaux, vous devez créer de nouveaux tableaux et dupliquer le contenu dans ces nouveaux tableaux.

Tout d'abord, vous devez convertir les tableaux en Arraylists, puis créer des LinkedHashSets à partir de ces ArrayLists. Si les tableaux d'entrée contiennent un plus grand nombre de doublons, cela peut entraîner plusieurs tableaux temporaires, augmentant ainsi le coût d'importation du contenu. Cette restriction impose que nous abordions ce problème d'une manière qui nécessite moins de mémoire et de puissance de traitement.

Nous devons supprimer les doublons mais pas les copier dans les tableaux résultants, donc ne pas supprimer entièrement les doublons mais simplement les remplacer par 0 comme valeur par défaut.

3. Comment vérifier si un nombre est un nombre premier ?

C'est l'une des questions d'entrevue de codage les plus courantes qui consiste à déterminer si le nombre donné est un nombre premier ou non. Ces types de programmes sont à la base de la pensée algorithmique car nous devons trouver des solutions basées sur le fait que les nombres premiers sont tous des nombres naturels qui ne peuvent pas être divisés par des nombres positifs autres que 1.

Nous devons écrire du code pour créer des boucles qui vérifient chaque nombre à partir de 1 jusqu'au nombre cible pour voir si le nombre cible est divisible par tout autre nombre positif autre que lui-même ou 1.

Cette fonction nous conduira à la solution. Lors de la vérification d'un nombre particulièrement grand, nous pouvons simplement vérifier jusqu'à la racine carrée de N, N étant le nombre cible. Il n'est pas nécessaire de vérifier jusqu'à N dans le cas d'une racine carrée éligible.

Si le nombre n'est pas divisible par 2, il n'est pas nécessaire de vérifier s'il est divisible par d'autres nombres pairs, ce qui diminue le temps nécessaire pour trouver la solution. Il s'agit d'une version optimisée de la solution où l'analyse du nombre avant d'écrire la solution est pratique.

4. Comment pouvez-vous vérifier si les chaînes ne contiennent que des chiffres ?

Si vous souhaitez écrire des expressions régulières pour vérifier si les chaînes ne sont que des nombres ou si elles contiennent des caractères non numériques, vous devez d'abord vous familiariser avec l'utilisation des jeux de caractères dans les expressions régulières Java. Les langages de programmation tels que Java prennent en charge les expressions régulières à l'aide de la classe java.util.regex.Matcher et java.util.regex.Pattern. Java.util.regex est un package dédié à cet effet.

Afin de valider l'existence de nombres uniquement à l'aide d'expressions régulières, nous pouvons utiliser du code pour analyser si les chaînes contiennent un entier brut. Nous allons vérifier si la chaîne ne contient que des chiffres entre 0 et 9. Même si la chaîne contient des chiffres mais aussi d'autres caractères, ce n'est pas une simple chaîne numérique. Les expressions régulières ne vérifient que les nombres entiers et ne prennent pas en compte les points (.), ce qui fait que les nombres décimaux et les virgules flottantes échouent au test.

5. Comment pouvez-vous inverser les mots d'une phrase cible sans l'aide des méthodes de la bibliothèque ?

C'est aussi l'une des questions d'entrevue de codage les plus courantes. Tout d'abord, nous devons comprendre l'exigence et comment combler le vide dans cette exigence. Face à de telles questions, nous devons d'abord nous concentrer sur les bonnes questions. Les chaînes ne sont rien d'autre que des phrases de caractères déterminés pouvant contenir un seul mot ou plusieurs mots.

Une phrase peut aussi être vide. Par exemple, si on nous donne la phrase « Programmer, c'est amusant », nous devons l'inverser en « Le plaisir, c'est programmer ». effectivement. Nous devons utiliser des expressions régulières en Java pour diviser les chaînes données en espaces, puis appliquer la méthode reverse() de la classe utilitaire Collections.

Une fois que vous êtes en mesure de diviser les chaînes à l'aide de regex'\\s', un tableau de mots sera renvoyé en conséquence. Cela prend également en charge les mots séparés à l'aide d'espaces multiples. Dès que le tableau est retourné, vous pouvez alors choisir de créer des ArrayLists à partir de ces tableaux suivis en utilisant la méthode Collections.reverse(). Cela inverse les ArrayLists et chaque mot sera réinitialisé dans l'ordre inverse.

Maintenant, il ne reste plus qu'à utiliser StringBuilder pour concaténer plusieurs chaînes via l'itération ArrayList. Il faut s'assurer que la taille est spécifiée car le redimensionnement de StringBuilder est un processus coûteux en termes de puissance de traitement et de mémoire. Le redimensionnement finit par créer de nouveaux tableaux en copiant le contenu des anciens tableaux.

6. Comment pouvez-vous remplacer ou supprimer des caractères de chaînes ?

Supposons que nous ayons une chaîne, 'Woocommerce', et que nous souhaitions remplacer la lettre 'r' par 'n', il existe plusieurs méthodes pour y parvenir. Les classes de chaînes en Java fournissent plusieurs approches pour remplacer les caractères à l'intérieur des chaînes à l'aide de CharSequence et de sous-chaînes.

Vous pouvez facilement appeler une méthode de remplacement à l'intérieur de la chaîne qui finira par remplacer le caractère cible et renverra le caractère souhaité en conséquence. Les chaînes sont immuables dans les langages de programmation tels que Java.

Ainsi, chaque fois que ces opérations telles que la suppression ou le remplacement sont effectuées sur des chaînes, de nouveaux objets chaîne sont générés par défaut. Il existe 4 méthodes surchargées pour remplacer les chaînes à l'aide de Java :

  • remplacer(char oldChar, char newChar)
  • replaceAll(String regex, String replacement)
  • remplacer (cible CharSequence, remplacement CharSequence)
  • replaceFirst(String regex, String replacement)

CharSequence est l'une des super interfaces pour les chaînes, StringBuilder et StringBuffer, nous permettant de faire passer n'importe lequel de ces objets comme arguments pour cette méthode de remplacement. replaceAll() finit par remplacer chaque correspondance par des chaînes de remplacement tandis que replaceFirst() ne remplace que les premières correspondances.

Dans l'ensemble, ce sont toutes des méthodologies puissantes qui acceptent l'expression régulière. La classe Java.lang.String autorise toutes ces méthodes surchargées qui peuvent facilement remplacer des caractères uniques ou des sous-chaînes en Java.

Il est fortement recommandé d'utiliser replaceAll() car cela remplace chaque occurrence de caractères correspondants. Suivre cette approche nous permet d'attendre des modèles d'expressions régulières, gagnant ainsi plus de puissance. Cette méthode peut également remplacer chaque virgule par des tubes pour convertir des fichiers séparés par des virgules en chaînes délimitées par des piles.

Cependant, si l'on souhaite ne remplacer qu'un seul caractère, on peut simplement utiliser la méthode replace () qui prend en compte l'ancien et le nouveau caractère donné.

Lire: Questions et réponses d'entrevue Java

7. Comment pouvez-vous ajouter des textes à des fichiers dans des langages de programmation tels que Java ?

L'ajout est très différent de la création de nouveaux fichiers et de l'écriture de données dans les nouveaux fichiers. En cas d'ajout, les fichiers existent déjà et nous devons simplement ajouter du texte à la fin du fichier. Ceci est similaire aux fichiers journaux car ils sont constamment mis à jour avec le système.

Les fichiers journaux sont l'exemple parfait d'ajout de texte, car les applications continuent d'ajouter de manière itérative les détails du journal dans ces fichiers. Les infrastructures de journalisation ne sont pas nécessaires pour ce problème, mais vous devez savoir comment ajouter du texte dans des fichiers existants. Afin de résoudre ce problème, vous devez connaître les classes de commodité pour écrire des fichiers de caractères.

La classe a des constructeurs qui supposent l'acceptabilité du tampon d'octets et de l'encodage de caractères par défaut. Si vous souhaitez spécifier les valeurs vous-même, vous pouvez simplement construire le OutputStreamWriter en utilisant le FileOutputStream. La disponibilité des fichiers dépend des plates-formes sous-jacentes, qui déterminent si le fichier peut être créé ou non.

Quelques plates-formes permettent d'initialiser des fichiers pour écrire des fonctions à l'aide d'un seul FileWrite ou de plusieurs objets d'écriture de fichiers. Cependant, les constructeurs de cette classe échoueront une fois que le fichier concerné sera déjà initialisé. FileWriter est utilisé pour écrire des flux de caractères et FileOutputStream peut écrire des flux d'octets bruts.

Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

8. Comment peux-tu trouver le plus grand ou le plus petit nombre dans un tableau d'entiers ?

Pour cette solution, nous devons coder une fonction ou une méthode qui peut trouver le plus grand ou le plus petit nombre à partir de tableaux qui sont des entiers à part entière. Nous devons d'abord créer un fichier source en Java en utilisant le nom MaximumMinimumArrayDemo.java et copier le code écrit ici pour la compilation et l'exécution.

Nous pouvons utiliser deux variables que nous pouvons appeler "la plus grande" et "la plus petite" pour stocker respectivement les valeurs maximales et minimales des tableaux. Le plus petit nombre peut être initialisé à l'aide de integer.MIN_VALUE et le plus grand peut être initialisé à l'aide de integer.MAX_VALUE.

À chaque itération des boucles que vous avez initiées, vous pouvez comparer les nombres actuels avec les « plus grands » et « les plus petits » et les mettre à jour en conséquence. Les tableaux ne remplacent pas la méthode toString en Java, vous pouvez donc utiliser Arrays.toString() pour imprimer le contenu des tableaux cibles.

Vous pouvez utiliser cette méthode statique pour appeler directement la fonction main. Vous devez ensuite passer les tableaux aléatoires via cette méthode pour vérifier si les valeurs maximales et minimales ont été renvoyées avec précision. Vous pouvez également choisir d'automatiser ces tests via des tests unitaires dans votre IDE.

Checkout : Top 4 des compétences informatiques à mettre dans votre CV

Conclusion

Les cours axés sur la programmation ne sont pas seulement parfaits pour résoudre des problèmes, mais augmentent également vos chances d'être sélectionné lorsque vous postulez à des emplois. Si vous souhaitez en savoir plus sur la programmation Java et les problèmes de codage plus avancés, vous pouvez vous inscrire à un cours complet tel que le Master of Science in Computer Science d'upGrad ou le cours de développement Full Stack .

Devenir Développeur Full Stack

Postulez pour la certification PG liée à l'emploi d'upGrad en génie logiciel