JavaRush /Java Blog /Random-IT /Livello 36. Risposte alle domande dell'intervista su un a...
lichMax
Livello 40
Санкт-Петербург

Livello 36. Risposte alle domande dell'intervista su un argomento di livello

Pubblicato nel gruppo Random-IT
Ancora una volta, ho cercato di tutto e non sono riuscito a trovare alcuna risposta. BENE. Pubblicherò i miei, anche se li ho scritti esclusivamente per me stesso e, se possibile, brevemente. Ma qualsiasi cosa è meglio di niente. Quindi, c'erano le seguenti domande: Livello 36.  Risposte alle domande per un colloquio su un argomento di livello - 1Domande per l'intervista:
  1. Cos'è MVC ?
  2. Cosa sono DAO e DTO ?
  3. Cos'è POJO ?
  4. Cos'è l'Entità ?
  5. Quali raccolte di elenchi conosci?
  6. Quali set di collezioni conosci?
  7. Cos'è una mappa e in cosa differisce da un “ dizionario ”?
  8. Cosa sono la coda e la rimozione dalla coda ?
  9. Quali classi che implementano l'interfaccia Queeue conosci?
  10. Cos'è un albero ?
E ora le mie risposte:
  1. MVC è un modello di progettazione dell'applicazione in cui l'applicazione è divisa in tre parti separate: modello, vista e controller. Il modello fornisce dati e risponde ai comandi del controller modificando il proprio stato. La vista è responsabile della visualizzazione dei dati del modello all'utente, rispondendo alle modifiche nel modello. E il controller interpreta le azioni dell’utente, notificando al modello la necessità di modifiche. Pertanto, ciascuno dei componenti di questo circuito è liberamente accoppiato con altri componenti, ottenendo così la flessibilità del programma. Molto spesso, tutta la logica aziendale è contenuta nel modello, sebbene a volte sia contenuta anche nel controller. Nel primo caso, il modello si chiama sottile, nel secondo - spesso.

  2. DAO (Data Access Object) è un oggetto il cui compito principale è salvare i dati in un database, nonché recuperarli da esso. DTO (Data Transfer Object) è un oggetto progettato per trasportare dati. Pertanto, il suo compito principale è archiviare questi dati. Non contiene alcuna logica. Inoltre, deve essere serializzabile, poiché il trasporto degli oggetti avviene solitamente tramite serializzazione-deserializzazione.

  3. POJO sta per "Oggetto Java vecchio stile". Sono in contrasto con gli oggetti EJB. Questi ultimi seguono una convenzione speciale e sono solitamente strettamente legati a uno specifico framework aziendale (ad esempio devono avere un costruttore pubblico senza parametri, devono avere getter e setter per i campi, devono essere serializzabili, ecc.). POJO è, di conseguenza, una classe regolare che non eredita da nessuna classe speciale e non implementa alcuna libreria speciale. In genere un POJO non fa nulla di speciale e contiene solo lo stato.

  4. Un Entity Bean è un bean il cui scopo è memorizzare alcuni dati. La logica di tale bean ha un meccanismo integrato per salvare se stesso e i suoi campi nel database. Un oggetto di questo tipo può essere distrutto e quindi ricreato nuovamente dal database. Ma a parte la memorizzazione dei dati, non ha alcuna logica. Un bean, a sua volta, è una classe speciale che deve rispettare le seguenti regole:

    • La classe deve avere un costruttore senza parametri con il modificatore di accesso pubblico. Questo costruttore consente agli strumenti di creare un oggetto senza la complessità aggiuntiva dei parametri.
    • Le proprietà di una classe devono essere accessibili tramite get, set e altri metodi (chiamati accessori), che devono seguire una convenzione di denominazione standard. Ciò consente facilmente agli strumenti di rilevare e aggiornare automaticamente il contenuto dei bean. Molti strumenti dispongono anche di editor specializzati per diversi tipi di proprietà.
    • La classe deve essere serializzabile. Ciò rende possibile salvare, archiviare e ripristinare in modo affidabile lo stato del bean in modo indipendente dalla piattaforma e dalla macchina virtuale.
    • La classe deve avere i metodi equals(), hashCode() e toString() sovrascritti.
  5. Tutte le raccolte di elenchi implementano l'interfaccia List<E> ed ereditano dalla classe astratta AbstractList<E>. Tra questi ci sono ArrayList<E> e LinkedList<E7gt;. ArrayList7lt;E> è un elenco basato su array, mentre LinkedList<E> è un classico elenco doppiamente collegato.

  6. Коллекции-множества в Java реализуют интерфейс Set<E> и наследуются от AbstractSet<E>. Множества — это такие наборы данных, в которых все элементы уникальны. Среди них в Java есть HashSet, LinkedHashSet и TreeSet. Первая коллекция хранит свои an objectы на основе хеш-codeов. Вторая — это модифицированная первая, в ней элементы ещё к тому же располагаются в связном списке, поэтому они все расположены в порядке добавления. Третья коллекция обеспечивает сортировку своих элементов.

  7. Map — это вид коллекций, хранящих свои элементы в виде пар "ключ-значения". Причём все ключи должны быть уникальными. Среди реализаций есть HashMap и TreeMap. Первая реализация хранит элементы с использованием хэш-codeов. Вторая - хранит элементы в отсортированном по ключу порядке.

  8. Очередь (Queue) — это структура данных, работающая по принципу "Первый вошёл — первый вышел". То есть элементы в очередь добавляются с одного конца, а извлекаются — с другого. Deque — это двусторонняя очередь. В этой очереди элементы можно добавлять How в начало, так и в конец, а также брать элементы тоже можно и из начала, и из конца очереди. Соответственно есть методы, которые позволяю положить элемент (это методы add(e) и offer(e)), и есть методы, позволяющие извлечь элемент из очереди (это такие методы, How remove() и poll()). Кроме того, есть методы, которые позволяют просто получить элемент из очереди без его удаления оттуда (это методы element() и peek()). В интерфейсе Deque дополнительно есть методы для добавления элементов в начало и конец очереди, извлечения элементов из начала or конца, а также получения элементов из начала or конца очереди (без их удаления из очереди).

  9. Среди простых реализаций можно отметить ArrayDeque, LinkedList и PriorityQueue. Также существуют много классов в Concurrent Collections, которые реализуют эти два интерфейса (оба сразу or только один из них).

  10. Un albero è un grafo connesso senza anelli o bordi multipli. Tipicamente, se ci sono N vertici in un albero, allora il numero di spigoli è almeno N-1. Inoltre, un vertice dell'albero viene scelto come radice. I restanti vertici sono rami dichiarati. I rami che non hanno rami propri sono chiamati foglie di un albero.
    Gli alberi sono ampiamente utilizzati nella programmazione e molti tipi di alberi sono già stati inventati. Uno degli alberi più utilizzati è l’albero binario. In questo albero ogni elemento ha al massimo due figli (ovvero possono essercene da 0 a 2). Un tipo di albero binario è BST: albero di ricerca binario. In questo albero viene imposta una regola sugli elementi: il figlio sinistro dell'elemento deve avere un valore inferiore a quello, e il figlio destro deve essere maggiore o uguale ad esso in valore.
    Ci sono anche alberi rosso-neri. Questo è un tipo di albero di ricerca binario. Negli alberi rosso-neri viene introdotta un'altra proprietà dell'elemento: il colore. Il colore può essere nero o rosso. Inoltre, ogni albero rosso-nero deve soddisfare i seguenti requisiti:

    1. la radice dell'albero è nera;
    2. il nodo è rosso o nero;
    3. tutte le foglie dell'albero sono nere;
    4. entrambi i discendenti del nodo rosso sono neri;
    5. Ogni percorso da un dato nodo a qualsiasi nodo foglia che sia il suo discendente contiene lo stesso numero di nodi neri.
Queste regole ti consentono di ottenere un albero equilibrato. Un albero è equilibrato quando la lunghezza del percorso dalla radice a qualsiasi nodo foglia differisce non più di 1 (ovvero, in termini semplici, non ci sono distorsioni o rami lunghi nell'albero).
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION