JavaRush /Java блогу /Random-KY /35-деңгээл. Деңгээлдеги тема боюнча интервью суроолоруна ...
Afli
Деңгээл
Санкт-Петербург

35-деңгээл. Деңгээлдеги тема боюнча интервью суроолоруна жооптор

Группада жарыяланган
Суроолор/кошумчалар/сын кабыл алынат. 35-деңгээл. Деңгээлдин темасы боюнча интервью суроолоруна жооптор - 1
  1. Сиз кандай versionларды башкаруу системаларын билесиз?

    Git, SVN, Bazaar, Mercurial

  2. SVN жана Git кандайча айырмаланат?

    1. GIT бөлүштүрүлгөн VCS, бирок SVN андай эмес. Башкача айтканда, репозиторий менен иштеген бир нече иштеп чыгуучулар болсо, ар биринин жергorктүү машинасында бул репозиторийдин ТОЛУК көчүрмөсү болот. Албетте, ошондой эле репозиторийди клондой турган борбордук машина бар. Бул SVNди эске салат. Гиттин негизги артыкчылыгы - эгер сизде күтүлбөгөн жерден Интернетке кирүү мүмкүнчүлүгү жок болсо, анда дагы эле репозиторий менен иштей аласыз. Андан кийин синхрондоштурууну бир жолу аткарыңыз жана бардык башка иштеп чыгуучулар толук тарыхты алышат.

    2. GIT өзгөртүү метаберorштерин сактайт, ал эми SVN бүт файлдарды сактайт. Бул мейкиндикти жана убакытты үнөмдөйт.

  3. GitHub деген эмне? GitHubда долбоорлоруңуз барбы?

    GitHub – бул git versionсын башкаруу тутумун, ошондой эле иштеп чыгуучулар үчүн социалдык тармакты колдонгон веб-негизделген долбоордун хостинг кызматы. Колдонуучулар чексиз сандагы репозиторийлерди түзө алышат, алардын ар бири үчүн вики берилет, маселени көзөмөлдөө системасы каралган, codeду карап чыгуу мүмкүн ж.б. Gitтен тышкары, кызмат SVN жана Mercurial аркылуу codeду кабыл алууну жана түзөтүүнү колдойт.

  4. Эмне үчүн бизге versionны башкаруу системалары керек?

    VCS айрым файлдарды мурунку формасына кайтарууга, бүткүл долбоорду мурунку абалына кайтарууга, убакыттын өтүшү менен болуп жаткан өзгөрүүлөрдү кароого, күтүлбөгөн жерден иштебей калган модулга ким акыркы өзгөртүү киргизгенин, ким жана качан кандайдыр бир түрүн киргизгенин аныктоого мүмкүндүк берет. codeдогу каталар ж.б.. .. Жалпысынан алганда, VCS колдонуп, сиз баарын бузуп же файлдарды жоготуп алсаңыз, бардыгын оңой калыбына келтирүүгө болот.

  5. жалпы деген эмне? Алар Javaда кантип ишке ашырылат?

    Генериктер параметрленген типтер. Алардын жардамы менен сиз класстарды, интерфейстерди жана методдорду жарыялай аласыз, мында маалымат түрү параметр катары көрсөтүлгөн. Generics тилге коопсуздук түрүн кошту.

    Мисал ишке ашыруу:

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

    Бурчтуу кашаалар T колдонушат , тип параметринин аталышы. MyClassБул ат чыныгы типтерди түзүүдө класска өткөн чыныгы типтин аталышы үчүн толтургуч катары колдонулат . Башкача айтканда, типтин параметри Tкласста типтин параметри талап кылынганда колдонулат. Бурчтуу кашаалар параметр жалпылаштырылышы мүмкүн экенин көрсөтүп турат. Класстын өзү жалпы класс же параметрленген тип деп аталат.

    Андан кийин, түрү Tan objectти аты менен жарыялоо үчүн колдонулат obj:

    T obj;

    Анын ордуна Tчыныгы түрү алмаштырылат, ал класстын an objectисин түзүүдө көрсөтүлөт MyClass. Объект objtype параметринде өткөн типтеги an object болот 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