JavaRush /Java Blog /Random-ID /Level 35. Jawaban pertanyaan wawancara pada topik level
Afli
Level 41
Санкт-Петербург

Level 35. Jawaban pertanyaan wawancara pada topik level

Dipublikasikan di grup Random-ID
Pertanyaan/tambahan/kritik dipersilahkan. Level 35. Jawaban pertanyaan wawancara tentang topik level - 1
  1. Sistem kontrol versi apa yang Anda ketahui?

    Git, SVN, Bazaar, Mercurial

  2. Apa perbedaan SVN dan Git?

    1. GIT adalah VCS terdistribusi, namun SVN bukan. Dengan kata lain, jika ada beberapa pengembang yang bekerja dengan sebuah repositori, masing-masing akan memiliki salinan LENGKAP dari repositori ini di mesin lokalnya. Tentu saja, ada juga mesin pusat tempat Anda dapat mengkloning repositori. Ini mengingatkan pada SVN. Keuntungan utama Git adalah jika tiba-tiba Anda tidak memiliki akses ke Internet, Anda masih dapat bekerja dengan repositori. Kemudian cukup lakukan sinkronisasi satu kali dan semua pengembang lainnya akan menerima riwayat lengkap.

    2. GIT menyimpan perubahan metadata, sementara SVN menyimpan seluruh file. Ini menghemat ruang dan waktu.

  3. Apa itu GitHub? Apakah Anda memiliki proyek di GitHub?

    GitHub adalah layanan hosting proyek berbasis web yang menggunakan sistem kontrol versi git, serta jaringan sosial untuk pengembang. Pengguna dapat membuat repositori dalam jumlah tak terbatas, untuk masing-masing repositori disediakan wiki, sistem pelacakan masalah disediakan, dimungkinkan untuk melakukan tinjauan kode, dll. Selain Git, layanan ini mendukung penerimaan dan pengeditan kode melalui SVN dan Mercurial.

  4. Mengapa kita memerlukan sistem kontrol versi?

    VCS memungkinkan untuk mengembalikan file individual ke bentuk sebelumnya, mengembalikan seluruh proyek ke keadaan sebelumnya, melihat perubahan yang terjadi seiring waktu, menentukan siapa yang terakhir membuat perubahan pada modul yang tiba-tiba berhenti bekerja, siapa dan kapan memperkenalkan beberapa jenis kesalahan dalam kode, dll.. Secara umum, jika, dengan menggunakan VCS, Anda merusak segalanya atau kehilangan file, semuanya dapat dengan mudah dipulihkan.

  5. Apa itu generik? Bagaimana penerapannya di Jawa?

    Generik adalah tipe yang diparameterisasi. Dengan bantuan mereka, Anda dapat mendeklarasikan kelas, antarmuka, dan metode, di mana tipe datanya ditentukan sebagai parameter. Generik menambahkan keamanan tipe ke bahasa.

    Contoh implementasi:

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

    Tanda kurung sudut menggunakan T , nama parameter tipe. Nama ini digunakan sebagai pengganti nama tipe sebenarnya yang diteruskan ke kelas MyClasssaat membuat tipe nyata. Artinya, parameter tipe Tdigunakan di kelas kapan pun parameter tipe diperlukan. Tanda kurung sudut menunjukkan bahwa parameter dapat digeneralisasikan. Kelas itu sendiri disebut kelas generik atau tipe berparameter.

    Selanjutnya, tipe tersebut Tdigunakan untuk mendeklarasikan suatu objek dengan nama obj:

    T obj;

    Sebaliknya, Ttipe sebenarnya akan diganti, yang akan ditentukan saat membuat objek kelas MyClass. Objek tersebut objakan menjadi objek dengan tipe yang diteruskan dalam parameter tipe T. Jika TAnda meneruskan tipe tersebut sebagai parameter String, instance objakan memiliki tipe tersebut String.

    Pertimbangkan konstruktornya MyClass():

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

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

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

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

    Обобщения работают только с an objectми. Поэтому нельзя использовать в качестве параметра elementрные типы вроде int or char.

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

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

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

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

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

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

    Пример:

    Level 35. Jawaban pertanyaan wawancara tentang topik level - 2
  7. What такое wildcard?

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

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

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

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

    • ? extends SomeClass — означает, что может быть использован любой класс-наследник SomeClass
    • ? 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.

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