JavaRush /Java Blog /Random-IT /Livello 35. Risposte alle domande dell'intervista sull'ar...
Afli
Livello 41
Санкт-Петербург

Livello 35. Risposte alle domande dell'intervista sull'argomento del livello

Pubblicato nel gruppo Random-IT
Domande/integrazioni/critiche sono benvenute. Livello 35. Risposte alle domande dell'intervista sull'argomento del livello - 1
  1. Quali sistemi di controllo della versione conosci?

    Git, SVN, Bazaar, Mercurial

  2. In cosa differiscono SVN e Git?

    1. GIT è un VCS distribuito, ma SVN no. In altre parole, se ci sono più sviluppatori che lavorano con un repository, ognuno avrà una copia COMPLETA di questo repository sul proprio computer locale. Naturalmente esiste anche una macchina centrale dalla quale è possibile clonare il repository. Questo ricorda SVN. Il vantaggio principale di Git è che se all'improvviso non hai accesso a Internet, puoi comunque lavorare con il repository. Quindi esegui semplicemente la sincronizzazione una volta e tutti gli altri sviluppatori riceveranno la cronologia completa.

    2. GIT memorizza i metadati modificati, mentre SVN memorizza interi file. Ciò consente di risparmiare spazio e tempo.

  3. Cos'è GitHub? Hai progetti su GitHub?

    GitHub è un servizio di hosting di progetti basato sul web che utilizza il sistema di controllo della versione git, nonché un social network per sviluppatori. Gli utenti possono creare un numero illimitato di repository, per ognuno dei quali viene fornita una wiki, viene fornito un sistema di tracciamento dei problemi, è possibile condurre revisioni del codice, ecc. Oltre a Git, il servizio supporta la ricezione e la modifica del codice tramite SVN e Mercurial.

  4. Perché abbiamo bisogno di sistemi di controllo della versione?

    VCS rende possibile riportare singoli file alla loro forma precedente, riportare l'intero progetto al suo stato precedente, visualizzare le modifiche avvenute nel tempo, determinare chi è stato l'ultimo ad apportare modifiche a un modulo che improvvisamente ha smesso di funzionare, chi e quando ha introdotto qualche tipo di modifica di errori nel codice, ecc.. In generale, se utilizzando VCS si rovina tutto o si perdono file, si può ripristinare tutto facilmente.

  5. Cos'è generico? Come vengono implementati in Java?

    I generici sono tipi parametrizzati. Con il loro aiuto puoi dichiarare classi, interfacce e metodi, dove il tipo di dati è specificato come parametro. I generici hanno aggiunto l'indipendenza dai tipi al linguaggio.

    Esempio di implementazione:

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

    Le parentesi angolari utilizzano T , il nome del parametro di tipo. Questo nome viene utilizzato come segnaposto per il nome del tipo reale passato alla classe MyClassdurante la creazione dei tipi reali. Cioè, il parametro di tipo Tviene utilizzato nella classe ogni volta che è richiesto un parametro di tipo. Le parentesi angolari indicano che il parametro può essere generalizzato. La classe stessa è chiamata classe generica o tipo parametrico.

    Successivamente, il tipo Tviene utilizzato per dichiarare un oggetto per nome obj:

    T obj;

    Verrà invece Tsostituito il tipo reale, che verrà specificato durante la creazione di un oggetto della classe MyClass. L'oggetto objsarà un oggetto del tipo passato nel parametro type T. Se Tpassi il tipo come parametro String, l'istanza objavrà il tipo String.

    Consideriamo il costruttore MyClass():

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

    Il parametro objè di tipo T. Ciò significa che il tipo reale del parametro objè determinato dal tipo passato dal parametro type Tal momento della creazione dell'oggetto classe MyClass.

    Il parametro type Tpuò essere utilizzato anche per specificare il tipo restituito di un metodo.

    È consuetudine utilizzare lettere maiuscole nei nomi delle variabili di tipo. In genere, per le raccolte, viene utilizzata la lettera E, le lettere Ke vengono utilizzate Vper i tipi di chiave e il valore (Chiave/Valore) e la lettera T(e, se necessario, le lettere Se U) è qualsiasi tipo.

    I generici funzionano solo con gli oggetti. intPertanto, non è possibile utilizzare tipi elementari come o come parametro char.

    *Ritengo necessario citare anche metodi generici. Questi sono metodi come:

    modificatori <T, ...> returnTypeMethodname(T t, ...)

    A quanto ho capito, se i parametri vengono utilizzati come tipo nella firma di un metodo, è necessario elencarli prima del tipo del valore restituito. È vero?

    Informazioni più dettagliate sono reperibili ai seguenti link:

  6. Cos'è la cancellazione del tipo?

    Le informazioni sul relativo parametro di tipo non vengono archiviate all'interno di una classe generica. Questo si chiama cancellazione del tipo. Nella fase di compilazione, l'oggetto classe viene convertito nel tipo specificato al momento della dichiarazione.

    Esempio:

    Livello 35. Risposte alle domande dell'intervista sull'argomento del livello - 2
  7. Cos'è un carattere jolly?

    Il carattere jolly è una forma generica <?>, il che significa che il tipo può essere qualsiasi cosa. Utilizzato, ad esempio, nelle raccolte in cui il tipo di base per tutte le raccolte è Collection<?>.

    Link utili: Teoria e pratica Java. Sperimentazione con metodi generici

  8. Ci parli di extends e super in Generics?

    Per imporre una restrizione su un carattere jolly, è necessario utilizzare costruzioni come:

    • ? extends SomeClass— significa che è possibile utilizzare qualsiasi classe derivata da 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.

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