JavaRush /Java блогы /Random-KK /Деңгей 35. Деңгейлік тақырып бойынша сұхбат сұрақтарына ж...
Afli
Деңгей
Санкт-Петербург

Деңгей 35. Деңгейлік тақырып бойынша сұхбат сұрақтарына жауаптар

Топта жарияланған
Сұрақтар/толықтырулар/сын пікірлер қабылданады. 35-деңгей. Деңгей тақырыбы бойынша сұхбат сұрақтарына жауаптар – 1
  1. Қандай нұсқаларды басқару жүйелерін білесіз?

    Git, SVN, Bazaar, Mercurial

  2. SVN мен Git қалай ерекшеленеді?

    1. GIT - таратылған VCS, бірақ SVN емес. Басқаша айтқанда, репозиториймен жұмыс істейтін бірнеше әзірлеушілер болса, олардың әрқайсысында жергілікті компьютерде осы репозиторийдің ТОЛЫҚ көшірмесі болады. Әрине, репозиторийді клондауға болатын орталық машина да бар. Бұл SVN-ді еске түсіреді. Git-тің басты артықшылығы - егер кенеттен Интернетке қол жеткізе алмасаңыз, репозиториймен жұмыс істей аласыз. Содан кейін синхрондауды бір рет орындаңыз және барлық басқа әзірлеушілер толық тарихты алады.

    2. GIT өзгерістер метадеректерін сақтайды, ал SVN бүкіл файлдарды сақтайды. Бұл кеңістік пен уақытты үнемдейді.

  3. GitHub дегеніміз не? GitHub-та жобаларыңыз бар ма?

    GitHub – git нұсқасын басқару жүйесін, сондай-ақ әзірлеушілерге арналған әлеуметтік желіні пайдаланатын веб-негізделген жоба хостинг қызметі. Пайдаланушылар репозиторийлердің шектеусіз санын жасай алады, олардың әрқайсысы үшін вики беріледі, мәселені бақылау жүйесі қамтамасыз етіледі, codeты шолулар жүргізуге болады және т.б. Git-тен басқа, қызмет SVN және Mercurial арқылы codeты қабылдауды және өңдеуді қолдайды.

  4. Неліктен бізге нұсқаларды басқару жүйелері қажет?

    VCS жеке файлдарды бұрынғы пішініне қайтаруға, бүкіл жобаны бұрынғы күйіне қайтаруға, уақыт өте келе болған өзгерістерді көруге, кенеттен жұмысын тоқтатқан модульге ең соңғы болып кім өзгерістер енгізгенін, қандай да бір түрді кім және қашан енгізгенін анықтауға мүмкіндік береді. codeтағы қателер және т.б. .. Жалпы, егер VCS көмегімен сіз бәрін бұзсаңыз немесе файлдарды жоғалтсаңыз, барлығын оңай қалпына келтіруге болады.

  5. Жалпы деген не? Олар Java тілінде қалай жүзеге асырылады?

    Генериктер параметрленген типтер болып табылады. Олардың көмегімен деректер түрі параметр ретінде көрсетілген сыныптарды, интерфейстерді және әдістерді жариялауға болады. Генериктер тілге қауіпсіздік түрін қосты.

    Іске асыру мысалы:

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

    Бұрыш жақшалары T пайдаланады , түр параметрінің атауы. Бұл атау нақты типтерді құру кезінде сыныпқа берілген нақты түр атауының толтырғышы ретінде пайдаланылады MyClass. Яғни, тип параметрі Tсыныпта тип параметрі қажет болған кезде пайдаланылады. Бұрыштық жақшалар параметрді жалпылауға болатынын көрсетеді. Класстың өзі жалпы класс немесе параметрленген тип деп аталады.

    Әрі қарай, түрі Tнысанды аты бойынша жариялау үшін пайдаланылады obj:

    T obj;

    Оның орнына Tсыныптың an objectісін жасау кезінде көрсетілетін нақты түрі ауыстырылады MyClass. Нысан objtype параметрінде берілген түрдегі нысан болады T. Егер Tсіз түрді параметр ретінде берсеңіз String, данада objтүрі болады String.

    Конструкторды қарастырыңыз 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-деңгей. Деңгей – 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.

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION