JavaRush /Blog Java /Random-MS /Aras 35. Jawapan kepada soalan temu bual mengenai topik a...
Afli
Tahap
Санкт-Петербург

Aras 35. Jawapan kepada soalan temu bual mengenai topik aras

Diterbitkan dalam kumpulan
Soalan/tambahan/kritikan dialu-alukan. Tahap 35. Jawapan kepada soalan temu bual mengenai topik tahap - 1
  1. Apakah sistem kawalan versi yang anda tahu?

    Git, SVN, Bazar, Mercurial

  2. Bagaimanakah SVN dan Git berbeza?

    1. GIT ialah VCS yang diedarkan, tetapi SVN tidak. Dalam erti kata lain, jika terdapat beberapa pembangun yang bekerja dengan repositori, masing-masing akan mempunyai salinan PENUH repositori ini pada mesin tempatan mereka. Sudah tentu, terdapat juga mesin pusat dari mana anda boleh mengklon repositori. Ini mengingatkan SVN. Kelebihan utama Git ialah jika tiba-tiba anda tidak mempunyai akses ke Internet, anda masih boleh bekerja dengan repositori. Kemudian hanya lakukan penyegerakan sekali dan semua pembangun lain akan menerima sejarah penuh.

    2. Simpanan GIT menukar metadata, manakala SVN menyimpan keseluruhan fail. Ini menjimatkan ruang dan masa.

  3. Apakah GitHub? Adakah anda mempunyai projek di GitHub?

    GitHub ialah perkhidmatan pengehosan projek berasaskan web menggunakan sistem kawalan versi git, serta rangkaian sosial untuk pembangun. Pengguna boleh mencipta bilangan repositori yang tidak terhad, untuk setiap satu wiki disediakan, sistem penjejakan isu disediakan, adalah mungkin untuk menjalankan semakan kod, dsb. Selain Git, perkhidmatan ini menyokong penerimaan dan penyuntingan kod melalui SVN dan Mercurial.

  4. Mengapa kita memerlukan sistem kawalan versi?

    VCS membolehkan untuk mengembalikan fail individu ke bentuk sebelumnya, mengembalikan keseluruhan projek kepada keadaan sebelumnya, melihat perubahan yang berlaku dari semasa ke semasa, menentukan siapa yang terakhir membuat perubahan pada modul yang tiba-tiba berhenti berfungsi, siapa dan apabila diperkenalkan beberapa jenis ralat ke dalam kod, dll.. Secara umum, jika, menggunakan VCS, anda merosakkan segala-galanya atau kehilangan fail, semuanya boleh dipulihkan dengan mudah.

  5. Apakah generik? Bagaimanakah ia dilaksanakan di Jawa?

    Generik ialah jenis berparameter. Dengan bantuan mereka, anda boleh mengisytiharkan kelas, antara muka dan kaedah, di mana jenis data ditentukan sebagai parameter. Generik menambahkan keselamatan jenis pada bahasa.

    Contoh pelaksanaan:

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

    Kurungan sudut menggunakan T , nama parameter jenis. Nama ini digunakan sebagai pemegang tempat untuk nama jenis sebenar yang dihantar kepada kelas MyClasssemasa membuat jenis sebenar. Iaitu, parameter jenis Tdigunakan dalam kelas apabila parameter jenis diperlukan. Tanda kurung sudut menunjukkan bahawa parameter boleh digeneralisasikan. Kelas itu sendiri dipanggil kelas generik atau jenis parameter.

    Seterusnya, jenis Tdigunakan untuk mengisytiharkan objek dengan nama obj:

    T obj;

    Jenis sebenar akan digantikan T, yang akan ditentukan apabila mencipta objek kelas MyClass. Objek objakan menjadi objek jenis yang diluluskan dalam parameter jenis T. Jika Tanda lulus jenis sebagai parameter String, contoh objakan mempunyai jenis String.

    Pertimbangkan pembina 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 класса к типу, который был указан при объявлении.

    Пример:

    Tahap 35. Jawapan kepada soalan temu bual mengenai topik tahap - 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.

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