JavaRush /Java Blog /Random-KO /레벨 35. 레벨 주제에 대한 인터뷰 질문에 대한 답변
Afli
레벨 41
Санкт-Петербург

레벨 35. 레벨 주제에 대한 인터뷰 질문에 대한 답변

Random-KO 그룹에 게시되었습니다
질문/추가/비판 환영합니다. 레벨 35. 레벨-1 주제에 관한 인터뷰 질문에 대한 답변
  1. 어떤 버전 관리 시스템을 알고 있나요?

    힘내, SVN, 바자, 머큐리얼

  2. SVN과 Git은 어떻게 다른가요?

    1. GIT는 분산 VCS이지만 SVN은 그렇지 않습니다. 즉, 저장소를 사용하는 개발자가 여러 명인 경우 각 개발자는 자신의 로컬 컴퓨터에 이 저장소의 전체 복사본을 갖게 됩니다. 물론 저장소를 복제할 수 있는 중앙 시스템도 있습니다. 이는 SVN을 연상시킵니다. Git의 가장 큰 장점은 갑자기 인터넷에 액세스할 수 없는 경우에도 저장소를 사용하여 작업할 수 있다는 것입니다. 그런 다음 동기화를 한 번만 수행하면 다른 모든 개발자가 전체 기록을 받게 됩니다.

    2. GIT는 변경 메타데이터를 저장하고 SVN은 전체 파일을 저장합니다. 이렇게 하면 공간과 시간이 절약됩니다.

  3. GitHub란 무엇인가요? GitHub에 프로젝트가 있나요?

    GitHub는 Git 버전 관리 시스템을 사용하는 웹 기반 프로젝트 호스팅 서비스이자 개발자를 위한 소셜 네트워크입니다. 사용자는 위키가 제공되고, 문제 추적 시스템이 제공되며, 코드 검토 등을 수행할 수 있는 저장소를 무제한으로 생성할 수 있습니다. Git 외에도 SVN 및 Mercurial을 통한 코드 수신 및 편집을 지원합니다.

  4. 버전 관리 시스템이 필요한 이유는 무엇입니까?

    VCS를 사용하면 개별 파일을 이전 형식으로 되돌리고, 전체 프로젝트를 이전 상태로 되돌리고, 시간이 지남에 따라 발생하는 변경 사항을 보고, 갑자기 작동이 멈춘 모듈을 마지막으로 변경한 사람이 누구인지, 언제 어떤 종류의 변경 사항을 도입했는지 확인할 수 있습니다. 코드 등에 오류가 발생합니다. .. 일반적으로 VCS를 사용하면 모든 것이 망가지거나 파일이 손실되면 모든 것을 쉽게 복원할 수 있습니다.

  5. 일반이란 무엇입니까? Java에서는 어떻게 구현됩니까?

    제네릭은 매개변수화된 유형입니다. 도움을 받으면 데이터 유형이 매개변수로 지정되는 클래스, 인터페이스 및 메소드를 선언할 수 있습니다. Generics는 언어에 유형 안전성을 추가했습니다.

    구현 예:

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

    꺾쇠 괄호는 유형 매개변수의 이름인 T 를 사용합니다. 이 이름은 실제 유형을 생성할 때 클래스에 전달된 실제 유형 이름의 자리 표시자로 사용됩니다 MyClass. 즉, 유형 매개변수가 T필요할 때마다 클래스에서 유형 매개변수가 사용됩니다. 꺾쇠 괄호는 매개변수가 일반화될 수 있음을 나타냅니다. 클래스 자체를 일반 클래스 또는 매개변수화된 유형이라고 합니다.

    다음으로, 이 유형은 T이름으로 객체를 선언하는 데 사용됩니다 obj.

    T obj;

    T클래스의 객체를 생성할 때 지정되는 실제 유형이 대체 됩니다 MyClass. 객체는 obj유형 매개변수에 전달된 유형의 객체가 됩니다 T. T유형을 매개변수로 전달하면 인스턴스 Stringobj해당 유형을 갖게 됩니다 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