JavaRush /Blog Java /Random-FR /Niveau 35. Réponses aux questions d'entretien sur le suje...
Afli
Niveau 41
Санкт-Петербург

Niveau 35. Réponses aux questions d'entretien sur le sujet du niveau

Publié dans le groupe Random-FR
Les questions/ajouts/critiques sont les bienvenus. Niveau 35. Réponses aux questions d'entretien sur le thème du niveau - 1
  1. Quels systèmes de contrôle de version connaissez-vous ?

    Git, SVN, Bazar, Mercurial

  2. En quoi SVN et Git sont-ils différents ?

    1. GIT est un VCS distribué, mais pas SVN. En d’autres termes, si plusieurs développeurs travaillent avec un référentiel, chacun disposera d’une copie COMPLÈTE de ce référentiel sur sa machine locale. Bien entendu, il existe également une machine centrale à partir de laquelle vous pouvez cloner le référentiel. Cela rappelle SVN. Le principal avantage de Git est que si soudainement vous n'avez plus accès à Internet, vous pouvez toujours travailler avec le référentiel. Ensuite, effectuez simplement la synchronisation une fois et tous les autres développeurs recevront l'historique complet.

    2. GIT stocke les métadonnées modifiées, tandis que SVN stocke des fichiers entiers. Cela permet d'économiser de l'espace et du temps.

  3. Qu’est-ce que GitHub ? Avez-vous des projets sur GitHub ?

    GitHub est un service d'hébergement de projets Web utilisant le système de contrôle de version git, ainsi qu'un réseau social pour les développeurs. Les utilisateurs peuvent créer un nombre illimité de référentiels, pour chacun desquels un wiki est fourni, un système de suivi des problèmes est fourni, il est possible d'effectuer des révisions de code, etc. En plus de Git, le service prend en charge la réception et l'édition de code via SVN et Mercurial.

  4. Pourquoi avons-nous besoin de systèmes de contrôle de version ?

    VCS permet de remettre des fichiers individuels à leur forme précédente, de remettre l'ensemble du projet à son état précédent, de visualiser les changements survenus au fil du temps, de déterminer qui a été le dernier à apporter des modifications à un module qui a soudainement cessé de fonctionner, qui et quand a introduit une sorte de modification. d'erreur dans le code, etc.. En général, si, en utilisant VCS, vous gâchez tout ou perdez des fichiers, tout peut être facilement restauré.

  5. Qu'est-ce qui est générique ? Comment sont-ils implémentés en Java ?

    Les génériques sont des types paramétrés. Avec leur aide, vous pouvez déclarer des classes, des interfaces et des méthodes, où le type de données est spécifié en paramètre. Les génériques ont ajouté la sécurité des types au langage.

    Exemple de mise en œuvre :

    class MyClass<T>{
      T obj;
      public MyClass(T obj){
        this.obj = obj;
      }
    }
    class MyClass<T>

    Les crochets angulaires utilisent T , le nom du paramètre de type. Ce nom est utilisé comme espace réservé pour le nom du type réel transmis à la classe MyClasslors de la création de types réels. Autrement dit, le paramètre de type Test utilisé dans la classe chaque fois qu'un paramètre de type est requis. Les crochets angulaires indiquent que le paramètre peut être généralisé. La classe elle-même est appelée classe générique ou type paramétré.

    Ensuite, le type Test utilisé pour déclarer un objet par son nom obj:

    T obj;

    Au lieu de cela, Tle type réel sera remplacé, qui sera spécifié lors de la création d'un objet de classe MyClass. L'objet objsera un objet du type passé dans le paramètre type T. Si Tvous passez le type en paramètre String, l'instance objaura le type String.

    Considérons le constructeurMyClass() :

    public MyClass(T obj){
      this.obj = obj;
    }

    Le paramètre objest de type T. Cela signifie que le type réel du paramètre objest déterminé par le type transmis par le paramètre type Tlors de la création de l'objet de classe MyClass.

    Le paramètre type Tpeut également être utilisé pour spécifier le type de retour d'une méthode.

    Il est d'usage d'utiliser des majuscules dans les noms de variables de type. Généralement, pour les collections, la lettre est utilisée E, les lettres Ket sont utilisées Vpour les types de clé et la valeur (Clé/Valeur), et la lettre T(et, si nécessaire, les lettres Set U) est de n'importe quel type.

    Les génériques ne fonctionnent qu'avec des objets. intPar conséquent, vous ne pouvez pas utiliser de types élémentaires comme ou comme paramètre char.

    *J'estime également nécessaire de mentionner les méthodes génériques. Ce sont des méthodes comme :

    modificateurs <T, ...> returnTypeMethodname(T t, ...)

    Si je comprends bien, si les paramètres sont utilisés comme type dans une signature de méthode, il est nécessaire de les lister avant le type de valeur de retour. Est-ce vrai?

    Des informations plus détaillées peuvent être trouvées sur les liens suivants :

  6. Qu’est-ce que l’effacement de texte ?

    Les informations sur son paramètre de type ne sont pas stockées dans une classe générique. C’est ce qu’on appelle l’effacement de type. Au stade de la compilation, l'objet de classe est converti selon le type spécifié lors de sa déclaration.

    Exemple:

    Niveau 35. Réponses aux questions d'entretien sur le thème du niveau - 2
  7. Qu'est-ce qu'un caractère générique ?

    Wildcard est un générique de la forme <?>, ce qui signifie que le type peut être n'importe quoi. Utilisé, par exemple, dans les collections où le type de base de toutes les collections est Collection<?>.

    Lien utile : Théorie et pratique Java. Expérimenter des méthodes génériques

  8. Parlez-nous des extensions et des super dans les génériques ?

    Pour imposer une restriction sur un caractère générique, vous devez utiliser des constructions telles que :

    • ? extends SomeClass- signifie que n'importe quelle classe dérivée de SomeClass peut être utilisée
    • ? super SomeClass — означает, что может быть использован класс SomeClass, либо класс-родитель (or интерфейс) SomeClass

    Это называется bounded wildcard.

    Для того, чтобы определиться с выбором между extends и super был придуман метод PECS.

    Подробно про это можно прочитать по ссылке ниже: Использование generic wildcards для повышения удобства Java API

  9. Как использовать wildcard?

    Пример использования wildcard:

    List<?> numList = new ArrayList<Integer>();

    Вопрос я не понял, но в принципе использование wildcard’ов рассматривается в материалах по linkм выше.

  10. В чем отличие ArrayList и ArrayList<?>

    Запись вида ArrayList называется raw type (обычный тип). Она эквивалентна записи вида ArrayList<T> и используется для обратной совместимости, т.к. до Java 1.5 не было дженерик коллекций. По возможности такой формы записи следует избегать.

    ArrayList<?> является супертипом для ArrayList.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION