JavaRush /Java blogi /Random-UZ /35-daraja. Daraja mavzusi bo'yicha suhbat savollariga jav...
Afli
Daraja
Санкт-Петербург

35-daraja. Daraja mavzusi bo'yicha suhbat savollariga javoblar

Guruhda nashr etilgan
Savollar/qo'shimchalar/tanqidlar qabul qilinadi. 35-daraja. Daraja mavzusi bo'yicha suhbat savollariga javoblar - 1
  1. Qanday versiyalarni boshqarish tizimlarini bilasiz?

    Git, SVN, Bazaar, Mercurial

  2. SVN va Git qanday farq qiladi?

    1. GIT taqsimlangan VCS, lekin SVN emas. Boshqacha qilib aytadigan bo'lsak, agar ombor bilan ishlaydigan bir nechta ishlab chiquvchilar bo'lsa, ularning har biri o'z mahalliy mashinasida ushbu omborning TO'LIQ nusxasiga ega bo'ladi. Albatta, siz omborni klonlashingiz mumkin bo'lgan markaziy mashina ham mavjud. Bu SVNni eslatadi. Gitning asosiy afzalligi shundaki, agar siz to'satdan Internetga kirish imkoniga ega bo'lmasangiz, siz hali ham ombor bilan ishlashingiz mumkin. Keyin sinxronizatsiyani bir marta bajaring va boshqa barcha ishlab chiquvchilar to'liq tarixni oladi.

    2. GIT o'zgarishlar metama'lumotlarini saqlaydi, SVN esa butun fayllarni saqlaydi. Bu joy va vaqtni tejaydi.

  3. GitHub nima? GitHub-da loyihalaringiz bormi?

    GitHub - bu git versiyasini boshqarish tizimidan foydalanadigan vebga asoslangan loyiha hosting xizmati, shuningdek, ishlab chiquvchilar uchun ijtimoiy tarmoq. Foydalanuvchilar cheksiz miqdordagi omborlarni yaratishi mumkin, ularning har biri uchun viki taqdim etiladi, muammolarni kuzatish tizimi taqdim etiladi, kodlarni ko'rib chiqish mumkin va hokazo. Git-dan tashqari, xizmat SVN va Mercurial orqali kodni qabul qilish va tahrirlashni qo'llab-quvvatlaydi.

  4. Nima uchun bizga versiyani boshqarish tizimlari kerak?

    VCS alohida fayllarni avvalgi ko'rinishiga qaytarish, butun loyihani avvalgi holatiga qaytarish, vaqt o'tishi bilan sodir bo'lgan o'zgarishlarni ko'rish, to'satdan ishlamay qolgan modulga oxirgi marta kim o'zgartirish kiritganligini, kim va qachon kiritilganligini aniqlash imkonini beradi. koddagi xatolik va hokazo.

  5. Umumiy nima? Ular Java-da qanday amalga oshiriladi?

    Generiklar parametrlangan turlardir. Ularning yordami bilan siz ma'lumotlar turi parametr sifatida ko'rsatilgan sinflar, interfeyslar va usullarni e'lon qilishingiz mumkin. Generics tilga xavfsizlik turini qo'shdi.

    Amalga oshirish misoli:

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

    Burchak qavslari T dan foydalaniladi , tip parametrining nomi. MyClassBu nom haqiqiy turlarni yaratishda sinfga o'tgan haqiqiy tur nomi uchun o'rinbosar sifatida ishlatiladi . Ya'ni, Tsinfda tip parametri kerak bo'lganda tur parametri ishlatiladi. Burchakli qavslar parametrni umumlashtirish mumkinligini ko'rsatadi. Sinfning o'zi umumiy sinf yoki parametrlashtirilgan tip deb ataladi.

    Keyinchalik, turdagi Tob'ektni nomi bilan e'lon qilish uchun ishlatiladi obj:

    T obj;

    Buning o'rniga Thaqiqiy tur almashtiriladi, bu sinf ob'ektini yaratishda ko'rsatiladi MyClass. Ob'ekt objturi parametrida o'tgan turdagi ob'ekt bo'ladi T. Agar Tsiz turni parametr sifatida o'tkazsangiz String, namuna objturiga ega bo'ladi String.

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

    Пример:

    35-daraja. 2-darajali mavzu bo'yicha suhbat savollariga javoblar
  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.

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