JavaRush /Blog Java /Random-ES /Nivel 35. Respuestas a las preguntas de la entrevista sob...
Afli
Nivel 41
Санкт-Петербург

Nivel 35. Respuestas a las preguntas de la entrevista sobre el tema del nivel.

Publicado en el grupo Random-ES
Se aceptan preguntas, adiciones y críticas. Nivel 35. Respuestas a las preguntas de la entrevista sobre el tema del nivel - 1
  1. ¿Qué sistemas de control de versiones conoces?

    Git, SVN, Bazar, Mercurial

  2. ¿En qué se diferencian SVN y Git?

    1. GIT es un VCS distribuido, pero SVN no lo es. En otras palabras, si hay varios desarrolladores trabajando con un repositorio, cada uno tendrá una copia COMPLETA de este repositorio en su máquina local. Por supuesto, también hay una máquina central desde la que puedes clonar el repositorio. Esto recuerda a SVN. La principal ventaja de Git es que si de repente no tienes acceso a Internet, aún puedes trabajar con el repositorio. Luego simplemente realice la sincronización una vez y todos los demás desarrolladores recibirán el historial completo.

    2. GIT almacena metadatos modificados, mientras que SVN almacena archivos completos. Esto ahorra espacio y tiempo.

  3. ¿Qué es GitHub? ¿Tienes proyectos en GitHub?

    GitHub es un servicio de alojamiento de proyectos basado en web que utiliza el sistema de control de versiones git, así como una red social para desarrolladores. Los usuarios pueden crear un número ilimitado de repositorios, para cada uno de los cuales se proporciona un wiki, un sistema de seguimiento de problemas, es posible realizar revisiones de código, etc. Además de Git, el servicio admite la recepción y edición de código a través de SVN y Mercurial.

  4. ¿Por qué necesitamos sistemas de control de versiones?

    VCS permite devolver archivos individuales a su forma anterior, devolver todo el proyecto a su estado anterior, ver los cambios que ocurren a lo largo del tiempo, determinar quién fue el último en realizar cambios en un módulo que dejó de funcionar repentinamente, quién y cuándo introdujo algún tipo de error en el código, etc... En general, si, usando VCS, arruinas todo o pierdes archivos, todo se puede restaurar fácilmente.

  5. ¿Qué es genérico? ¿Cómo se implementan en Java?

    Los genéricos son tipos parametrizados. Con su ayuda, puede declarar clases, interfaces y métodos, donde el tipo de datos se especifica como parámetro. Los genéricos agregaron seguridad de tipos al lenguaje.

    Implementación de ejemplo:

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

    Los corchetes angulares usan T , el nombre del parámetro de tipo. Este nombre se utiliza como marcador de posición para el nombre del tipo real pasado a la clase MyClassal crear tipos reales. Es decir, el parámetro de tipo Tse utiliza en la clase siempre que se requiere un parámetro de tipo. Los corchetes angulares indican que el parámetro se puede generalizar. La clase en sí se denomina clase genérica o tipo parametrizado.

    A continuación, el tipo Tse utiliza para declarar un objeto por nombre obj:

    T obj;

    En su lugar, Tse sustituirá el tipo real, que se especificará al crear un objeto de la clase MyClass. El objeto objserá un objeto del tipo pasado en el parámetro de tipo T. Si Tpasa el tipo como parámetro String, la instancia objtendrá el tipo String.

    Considere el constructor MyClass():

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

    Параметр obj имеет тип T. Это значит, что реальный тип параметра obj определяется типом, переданным параметром типа T при создании un objetoа класса MyClass.

    Параметр типа T также может быть использован для указания типа возвращаемого значения метода.

    В именах переменных типа принято использовать заглавные буквы. Обычно для коллекций используется буква E, буквами K и V — типы ключей и significado (Key/Value), а буквой T (и при необходимости буквы S и U) — любой тип.

    Обобщения работают только с un objetoами. Поэтому нельзя использовать в качестве параметра elementoрные типы вроде int o char.

    *Так же считаю нужным упомянуть generic методы. Это методы вида:

    модификаторы <T, ...> возвращаемыйТип nombre del método(T t, ...)

    Как я понял, если в качестве типа в сигнатуре метода используются параметры, необходимо перед типом возвращаемого значения их перечислить. Верно ли это?

    Более подробную информацию можно посмотреть по следующим enlaceм:

  6. Qué такое стирание типов?

    Внутри класса-дженерика не хранится информация о его типе параметре. Это и называется стиранием типов. На стадии компиляции происходит приведение un objetoа класса к типу, который был указан при объявлении.

    Пример:

    Nivel 35. Respuestas a las preguntas de la entrevista sobre el tema del nivel - 2
  7. Qué такое wildcard?

    Wildcard — это дженерик вида <?>, что означает, что тип может быть чем угодно. Используется, например, в коллекциях, где для всех коллекций базовым типом является Сollection<?>.

    Полезная enlace: Теория и практика Java. Эксперименты с generic-методами

  8. Расскажите про extends и super в Generic'ах?

    Quéбы наложить ограничение на wildcard необходимо использовать конструкции типа:

    • ? extends SomeClass — означает, что может быть использован любой класс-наследник SomeClass
    • ? super SomeClass — означает, что может быть использован класс SomeClass, либо класс-родитель (o интерфейс) SomeClass

    Это называется bounded wildcard.

    Для того, чтобы определиться с выбором между extends и super был придуман метод PECS.

    Подробно про это можно прочитать по ссылке ниже: Использование generic wildcards для повышения удобства Java API

  9. Как использовать wildcard?

    Пример использования wildcard:

    List<?> numList = new ArrayList<Integer>();

    Вопрос я не понял, но в принципе использование wildcard’ов рассматривается в материалах по enlaceм выше.

  10. В чем отличие ArrayList и ArrayList<?>

    Запись вида ArrayList называется raw type (обычный тип). Она эквивалентна записи вида ArrayList<T> и используется для обратной совместимости, т.к. до Java 1.5 не было дженерик коллекций. По возможности такой формы записи следует избегать.

    ArrayList<?> является супертипом для ArrayList.

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