JavaRush /Java Blogu /Random-AZ /Səviyyə 35. Səviyyə mövzusu üzrə müsahibə suallarına cava...
Afli
Səviyyə
Санкт-Петербург

Səviyyə 35. Səviyyə mövzusu üzrə müsahibə suallarına cavablar

Qrupda dərc edilmişdir
Suallar/əlavələr/tənqidlər qəbul olunur. Səviyyə 35. Səviyyə - 1 mövzusu üzrə müsahibə suallarına cavablar
  1. Hansı versiyaya nəzarət sistemlərini bilirsiniz?

    Git, SVN, Bazaar, Mercurial

  2. SVN və Git nə ilə fərqlənir?

    1. GIT paylanmış VCS-dir, lakin SVN deyil. Başqa sözlə, bir depo ilə işləyən bir neçə tərtibatçı varsa, hər birinin yerli maşınında bu deponun TAM nüsxəsi olacaq. Əlbəttə ki, anbarı klonlaya biləcəyiniz mərkəzi bir maşın da var. Bu SVN-ni xatırladır. Git-in əsas üstünlüyü ondan ibarətdir ki, birdən İnternetə çıxışınız yoxdursa, yenə də repozitoriya ilə işləyə bilərsiniz. Sonra sinxronizasiyanı bir dəfə edin və bütün digər tərtibatçılar tam tarixçəni alacaqlar.

    2. GIT dəyişikliklər metadatasını saxlayır, SVN isə bütün faylları saxlayır. Bu, yerə və vaxta qənaət edir.

  3. GitHub nədir? GitHub-da layihələriniz varmı?

    GitHub git versiyasına nəzarət sistemindən istifadə edən veb-əsaslı layihə hostinq xidməti, həmçinin tərtibatçılar üçün sosial şəbəkədir. İstifadəçilər məhdudiyyətsiz sayda repozitoriya yarada bilərlər, onların hər biri üçün viki təqdim olunur, problemin izlənilməsi sistemi təqdim olunur, kod təhlili aparmaq mümkündür və s. Git ilə yanaşı, xidmət SVN və Mercurial vasitəsilə kodun qəbulunu və redaktəsini dəstəkləyir.

  4. Nə üçün versiyaya nəzarət sistemlərinə ehtiyacımız var?

    VCS fərdi faylları əvvəlki formasına qaytarmağa, bütün layihəni əvvəlki vəziyyətinə qaytarmağa, zamanla baş verən dəyişikliklərə baxmağa, qəflətən fəaliyyətini dayandıran modulda ən son kimin dəyişiklik etdiyini, kimin və nə vaxt bir növ təqdim edildiyini müəyyən etməyə imkan verir. koda daxil olan səhv və s. .. Ümumiyyətlə, VCS istifadə edərək hər şeyi məhv etsəniz və ya faylları itirsəniz, hər şeyi asanlıqla bərpa etmək olar.

  5. Ümumi nədir? Onlar Java-da necə həyata keçirilir?

    Generiklər parametrli tiplərdir. Onların köməyi ilə siz verilənlər tipinin parametr kimi göstərildiyi sinifləri, interfeysləri və metodları elan edə bilərsiniz. Generiklər dilə növ təhlükəsizliyi əlavə etdi.

    İcra nümunəsi:

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

    Bucaq mötərizələri tip parametrinin adı olan T istifadə edir. MyClassBu ad real tiplər yaratarkən sinfə ötürülən real növün adı üçün yer tutucu kimi istifadə olunur . Yəni, tip parametri Tistənilən növ parametr tələb olunduqda sinifdə istifadə olunur. Bucaqlı mötərizələr parametrin ümumiləşdirilə biləcəyini göstərir. Sinfin özü ümumi sinif və ya parametrləşdirilmiş tip adlanır.

    Sonra, növ Tobyekti adla elan etmək üçün istifadə olunur obj:

    T obj;

    Əvəzində Tsinif obyekti yaradılarkən müəyyən ediləcək real tip əvəz olunacaq MyClass. Obyekt objtype parametrində ötürülən tipin obyekti olacaq T. TNövü parametr kimi ötürsəniz , Stringnümunədə objtip olacaq String.

    Konstruktoru nəzərdən keçirin 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 класса к типу, который был указан при объявлении.

    Пример:

    Səviyyə 35. Səviyyə - 2 mövzusu üzrə müsahibə suallarına cavablar
  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.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION