JavaRush /Java Blog /Random-TL /Antas 35. Mga sagot sa mga tanong sa panayam sa antas ng ...
Afli
Antas
Санкт-Петербург

Antas 35. Mga sagot sa mga tanong sa panayam sa antas ng paksa

Nai-publish sa grupo
Ang mga tanong/dagdag/pagpuna ay malugod na tinatanggap. Уровень 35. Ответы на вопросы к собеседованию по теме уровня - 1
  1. Anong mga version control system ang alam mo?

    Git, SVN, Bazaar, Mercurial

  2. Paano naiiba ang SVN at Git?

    1. Ang GIT ay isang ipinamahagi na VCS, ngunit ang SVN ay hindi. Sa madaling salita, kung mayroong ilang developer na nagtatrabaho sa isang repositoryo, bawat isa ay magkakaroon ng BUONG kopya ng repositoryong ito sa kanilang lokal na makina. Siyempre, mayroon ding sentral na makina kung saan maaari mong i-clone ang repositoryo. Ito ay nagpapaalala sa SVN. Ang pangunahing bentahe ng Git ay kung biglang wala kang access sa Internet, maaari ka pa ring magtrabaho kasama ang repositoryo. Pagkatapos ay gawin lamang ang pag-synchronize nang isang beses at lahat ng iba pang mga developer ay makakatanggap ng buong kasaysayan.

    2. Ang mga tindahan ng GIT ay nagbabago ng metadata, habang ang SVN ay nag-iimbak ng mga buong file. Makakatipid ito ng espasyo at oras.

  3. Ano ang GitHub? Mayroon ka bang mga proyekto sa GitHub?

    Ang GitHub ay isang web-based na serbisyo sa pagho-host ng proyekto gamit ang git version control system, pati na rin ang isang social network para sa mga developer. Ang mga gumagamit ay maaaring lumikha ng isang walang limitasyong bilang ng mga imbakan, para sa bawat isa kung saan ang isang wiki ay ibinigay, isang sistema ng pagsubaybay sa isyu ay ibinigay, posible na magsagawa ng mga pagsusuri sa code, atbp. Bilang karagdagan sa Git, sinusuportahan ng serbisyo ang pagtanggap at pag-edit ng code sa pamamagitan ng SVN at Mercurial.

  4. Bakit kailangan natin ng mga version control system?

    Ginagawang posible ng VCS na ibalik ang mga indibidwal na file sa kanilang dating form, ibalik ang buong proyekto sa dati nitong estado, tingnan ang mga pagbabagong nagaganap sa paglipas ng panahon, tukuyin kung sino ang huling gumawa ng mga pagbabago sa isang module na biglang huminto sa paggana, kung sino at kailan ipinakilala ang ilang uri ng error sa code, atbp. .. Sa pangkalahatan, kung, gamit ang VCS, sinira mo ang lahat o nawala ang mga file, ang lahat ay madaling maibalik.

  5. Ano ang generic? Paano sila ipinatupad sa Java?

    Ang mga generic ay mga uri ng parameter. Sa kanilang tulong, maaari mong ideklara ang mga klase, interface at pamamaraan, kung saan ang uri ng data ay tinukoy bilang isang parameter. Ang mga generic ay nagdagdag ng uri ng kaligtasan sa wika.

    Halimbawang pagpapatupad:

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

    Ang mga angle bracket ay gumagamit ng T , ang pangalan ng uri ng parameter. Ginagamit ang pangalang ito bilang isang placeholder para sa pangalan ng totoong uri na ipinasa sa klase MyClasskapag gumagawa ng mga tunay na uri. Iyon ay, ang uri ng parameter Tay ginagamit sa klase kapag ang isang uri ng parameter ay kinakailangan. Ang mga angle bracket ay nagpapahiwatig na ang parameter ay maaaring pangkalahatan. Ang klase mismo ay tinatawag na generic na klase o parameterized na uri.

    Susunod, ang uri Tay ginagamit upang ipahayag ang isang bagay sa pamamagitan ng pangalan obj:

    T obj;

    Sa halip, Tang tunay na uri ay papalitan, na tutukuyin kapag lumilikha ng isang bagay ng klase MyClass. Ang bagay objay magiging isang bagay ng uri na ipinasa sa uri ng parameter T. Kung Tipapasa mo ang uri bilang isang parameter String, ang halimbawa objay magkakaroon ng uri String.

    Isaalang-alang ang tagabuo 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.

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