JavaRush /Java-Blog /Random-DE /Level 35. Antworten auf Interviewfragen zum Levelthema
Afli
Level 41
Санкт-Петербург

Level 35. Antworten auf Interviewfragen zum Levelthema

Veröffentlicht in der Gruppe Random-DE
Fragen/Ergänzungen/Kritik sind willkommen. Stufe 35. Antworten auf Interviewfragen zum Thema Stufe - 1
  1. Welche Versionskontrollsysteme kennen Sie?

    Git, SVN, Bazaar, Mercurial

  2. Wie unterscheiden sich SVN und Git?

    1. GIT ist ein verteiltes VCS, SVN jedoch nicht. Mit anderen Worten: Wenn mehrere Entwickler mit einem Repository arbeiten, verfügt jeder über eine VOLLSTÄNDIGE Kopie dieses Repositorys auf seinem lokalen Computer. Natürlich gibt es auch eine zentrale Maschine, von der aus Sie das Repository klonen können. Das erinnert an SVN. Der Hauptvorteil von Git besteht darin, dass Sie, wenn Sie plötzlich keinen Zugang zum Internet haben, immer noch mit dem Repository arbeiten können. Führen Sie dann einfach einmal die Synchronisierung durch und alle anderen Entwickler erhalten die vollständige Historie.

    2. GIT speichert Änderungsmetadaten, während SVN ganze Dateien speichert. Das spart Platz und Zeit.

  3. Was ist GitHub? Haben Sie Projekte auf GitHub?

    GitHub ist ein webbasierter Projekt-Hosting-Dienst, der das Git-Versionskontrollsystem nutzt, sowie ein soziales Netzwerk für Entwickler. Benutzer können eine unbegrenzte Anzahl von Repositorys erstellen, für die jeweils ein Wiki bereitgestellt wird, ein Problemverfolgungssystem bereitgestellt wird, Codeüberprüfungen durchgeführt werden können usw. Zusätzlich zu Git unterstützt der Dienst das Empfangen und Bearbeiten von Code über SVN und Mercurial.

  4. Warum brauchen wir Versionskontrollsysteme?

    VCS ermöglicht es, einzelne Dateien in ihre vorherige Form zurückzusetzen, das gesamte Projekt in seinen vorherigen Zustand zurückzusetzen, Änderungen anzuzeigen, die im Laufe der Zeit aufgetreten sind, festzustellen, wer als letzter Änderungen an einem Modul vorgenommen hat, das plötzlich nicht mehr funktionierte, und wer und wann etwas eingeführt hat Fehler im Code usw. Wenn Sie mit VCS alles ruinieren oder Dateien verlieren, kann im Allgemeinen alles problemlos wiederhergestellt werden.

  5. Was ist generisch? Wie werden sie in Java implementiert?

    Generics sind parametrisierte Typen. Mit ihrer Hilfe können Sie Klassen, Schnittstellen und Methoden deklarieren, bei denen der Datentyp als Parameter angegeben wird. Generics haben der Sprache Typsicherheit hinzugefügt.

    Beispielimplementierung:

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

    Die spitzen Klammern verwenden T , den Namen des Typparameters. Dieser Name wird als Platzhalter für den Namen des realen Typs verwendet, der MyClassbeim Erstellen realer Typen an die Klasse übergeben wird. Das heißt, der Typparameter Twird in der Klasse immer dann verwendet, wenn ein Typparameter erforderlich ist. Spitze Klammern geben an, dass der Parameter verallgemeinert werden kann. Die Klasse selbst wird als generische Klasse oder parametrisierter Typ bezeichnet.

    Als nächstes wird der Typ Tverwendet, um ein Objekt nach Namen zu deklarieren obj:

    T obj;

    Stattdessen Twird der reale Typ ersetzt, der beim Erstellen eines Objekts der Klasse angegeben wird MyClass. Das Objekt objist ein Objekt des Typs, der im Typparameter übergeben wird T. Wenn TSie den Typ als Parameter übergeben , hat Stringdie Instanz den Typ .objString

    Betrachten Sie den Konstruktor MyClass():

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

    Параметр obj имеет тип T. Это значит, что реальный тип параметра obj определяется типом, переданным параметром типа T при создании ein Objektа класса MyClass.

    Параметр типа T также может быть использован для указания типа возвращаемого значения метода.

    В именах переменных типа принято использовать заглавные буквы. Обычно для коллекций используется буква E, буквами K и V — типы ключей и Bedeutung (Key/Value), а буквой T (и при необходимости буквы S и U) — любой тип.

    Обобщения работают только с ein Objektами. Поэтому нельзя использовать в качестве параметра Elementрные типы вроде int oder char.

    *Так же считаю нужным упомянуть generic методы. Это методы вида:

    модификаторы <T, ...> возвращаемыйТип Methodenname(T t, ...)

    Как я понял, если в качестве типа в сигнатуре метода используются параметры, необходимо перед типом возвращаемого значения их перечислить. Верно ли это?

    Более подробную информацию можно посмотреть по следующим Verknüpfungм:

  6. Was такое стирание типов?

    Внутри класса-дженерика не хранится информация о его типе параметре. Это и называется стиранием типов. На стадии компиляции происходит приведение ein Objektа класса к типу, который был указан при объявлении.

    Пример:

    Level 35. Antworten auf Interviewfragen zum Thema Level - 2
  7. Was такое wildcard?

    Wildcard — это дженерик вида <?>, что означает, что тип может быть чем угодно. Используется, например, в коллекциях, где для всех коллекций базовым типом является Сollection<?>.

    Полезная Verknüpfung: Теория и практика Java. Эксперименты с generic-методами

  8. Расскажите про extends и super в Generic'ах?

    Wasбы наложить ограничение на wildcard необходимо использовать конструкции типа:

    • ? extends SomeClass — означает, что может быть использован любой класс-наследник SomeClass
    • ? super SomeClass — означает, что может быть использован класс SomeClass, либо класс-родитель (oder интерфейс) SomeClass

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

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

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

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

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

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

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

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

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

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

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