JavaRush /Blog Java /Random-PL /Poziom 35. Odpowiedzi na pytania podczas rozmowy kwalifik...
Afli
Poziom 41
Санкт-Петербург

Poziom 35. Odpowiedzi na pytania podczas rozmowy kwalifikacyjnej na temat poziomu

Opublikowano w grupie Random-PL
Pytania/dodatki/krytyka są mile widziane. Poziom 35. Odpowiedzi na pytania z rozmowy kwalifikacyjnej na temat poziomu - 1
  1. Jakie znasz systemy kontroli wersji?

    Git, SVN, Bazar, Mercurial

  2. Czym różnią się SVN i Git?

    1. GIT jest rozproszonym VCS, ale SVN nim nie jest. Innymi słowy, jeśli z repozytorium pracuje kilku programistów, każdy z nich będzie miał PEŁNĄ kopię tego repozytorium na swoim komputerze lokalnym. Oczywiście istnieje również maszyna centralna, z której można sklonować repozytorium. Przypomina to SVN. Główną zaletą Gita jest to, że jeśli nagle nie będziesz miał dostępu do Internetu, nadal możesz pracować z repozytorium. Następnie wystarczy wykonać synchronizację raz, a wszyscy pozostali programiści otrzymają pełną historię.

    2. GIT przechowuje metadane zmian, podczas gdy SVN przechowuje całe pliki. Oszczędza to miejsce i czas.

  3. Co to jest GitHub? Czy masz projekty na GitHubie?

    GitHub to internetowa usługa hostingu projektów wykorzystująca system kontroli wersji git, a także sieć społecznościowa dla programistów. Użytkownicy mogą tworzyć nieograniczoną liczbę repozytoriów, dla każdego z nich dostępna jest wiki, dostępny jest system śledzenia problemów, istnieje możliwość przeprowadzania przeglądów kodu itp. Oprócz Git usługa obsługuje odbieranie i edycję kodu za pośrednictwem SVN i Mercurial.

  4. Dlaczego potrzebujemy systemów kontroli wersji?

    VCS umożliwia przywrócenie poszczególnych plików do ich poprzedniej postaci, przywrócenie całego projektu do poprzedniego stanu, podgląd zmian zachodzących w czasie, ustalenie, kto jako ostatni wprowadzał zmiany w module, który nagle przestał działać, kto i kiedy wprowadził jakieś zmiany błędów w kodzie itp. Ogólnie rzecz biorąc, jeśli używając VCS wszystko zniszczysz lub stracisz pliki, wszystko można łatwo przywrócić.

  5. Co to jest rodzajowe? Jak są one zaimplementowane w Javie?

    Generics to typy sparametryzowane. Za ich pomocą można deklarować klasy, interfejsy i metody, gdzie typ danych jest określony jako parametr. Generics dodało do języka bezpieczeństwo typów.

    Przykładowa realizacja:

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

    W nawiasach ostrokątnych używana jest nazwa parametru typu T. Nazwa ta jest używana jako symbol zastępczy nazwy typu rzeczywistego przekazywanej do klasy MyClasspodczas tworzenia typów rzeczywistych. Oznacza to, że parametr typu Tjest używany w klasie zawsze, gdy wymagany jest parametr typu. Nawiasy ostrokątne wskazują, że parametr można uogólnić. Sama klasa nazywana jest klasą ogólną lub typem sparametryzowanym.

    Następnie typ Tsłuży do zadeklarowania obiektu według nazwy obj:

    T obj;

    Zamiast tego Tzostanie podstawiony typ rzeczywisty, który zostanie określony podczas tworzenia obiektu klasy MyClass. Obiekt objbędzie obiektem typu przekazanego w parametrze type T. Jeśli Tprzekażesz typ jako parametr String, instancja objbędzie miała typ String.

    Rozważmy konstruktora MyClass():

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

    Parametr objjest typu T. Oznacza to, że rzeczywisty typ parametru objjest określony przez typ przekazany przez parametr type Tpodczas tworzenia obiektu klasy MyClass.

    Parametru type Tmożna również użyć do określenia typu zwracanego przez metodę.

    W nazwach zmiennych typu zwyczajowo używa się wielkich liter. Zwykle w przypadku kolekcji używana jest litera E, litery Ki są używane Vdo typów kluczy i wartości (Klucz/Wartość), a litera T(oraz, jeśli to konieczne, litery Si U) jest dowolnego typu.

    Generics działają tylko z obiektami. intDlatego nie można używać typów elementarnych, takich jak lub jako parametru char.

    *Uważam również, że należy wspomnieć o metodach generycznych. Są to metody takie jak:

    modyfikatory <T, ...> returnTypeNazwaMetody(T t, ...)

    Jak rozumiem, jeśli parametry są używane jako typ w sygnaturze metody, konieczne jest ich wyświetlenie przed typem wartości zwracanej. Czy to prawda?

    Bardziej szczegółowe informacje można znaleźć pod poniższymi linkami:

  6. Co to jest usuwanie typu?

    Informacje o parametrze typu nie są przechowywane w klasie ogólnej. Nazywa się to usuwaniem typu. Na etapie kompilacji obiekt klasy jest rzutowany na typ określony podczas deklaracji.

    Przykład:

    Poziom 35. Odpowiedzi na pytania z rozmowy kwalifikacyjnej na temat poziomu - 2
  7. Co to jest symbol wieloznaczny?

    Symbol wieloznaczny jest odmianą formy <?>, co oznacza, że ​​typem może być dowolny. Używany na przykład w kolekcjach, w których typem podstawowym dla wszystkich kolekcji jest Collection<?>.

    Przydatny link: Teoria i praktyka Java. Eksperymentowanie z metodami ogólnymi

  8. Opowiedz nam o rozszerzeniach i super w Generics?

    Aby nałożyć ograniczenie na symbol wieloznaczny, musisz użyć konstrukcji takich jak:

    • ? extends SomeClass— oznacza, że ​​można użyć dowolnej klasy wywodzącej się z SomeClass
    • ? super SomeClass — означает, что может быть использован класс SomeClass, либо класс-родитель (Lub интерфейс) SomeClass

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

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

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

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

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

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

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

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

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

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

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