JavaRush /Blog Java /Random-PL /Poziom 36. Odpowiedzi na pytania podczas rozmowy kwalifik...
lichMax
Poziom 40
Санкт-Петербург

Poziom 36. Odpowiedzi na pytania podczas rozmowy kwalifikacyjnej na temat poziomu

Opublikowano w grupie Random-PL
Ponownie przejrzałem wszystko i nie znalazłem żadnej odpowiedzi. Dobrze. Zamieszczam swoje, choć pisałem je wyłącznie dla siebie i jeśli to możliwe, krótko. Ale wszystko jest lepsze niż nic. Pojawiły się więc następujące pytania: Poziom 36.  Odpowiedzi na pytania do rozmowy kwalifikacyjnej na poziomie - 1 tematPytania do rozmowy kwalifikacyjnej:
  1. Co to jest MVC ?
  2. Co to jest DAO i DTO ?
  3. Co to jest POJO ?
  4. Co to jest byt ?
  5. Jakie znasz kolekcje list ?
  6. Jakie kolekcje-zestawy znacie?
  7. Czym jest mapa , czym różni się od „ słownika ”?
  8. Co to jest kolejka i usuwanie z kolejki ?
  9. Jakie znasz klasy implementujące interfejs Queeue ?
  10. Co to jest drzewo ?
A teraz moje odpowiedzi:
  1. MVC to wzorzec projektowania aplikacji, w którym aplikacja jest podzielona na trzy oddzielne części: model, widok i kontroler. Model dostarcza dane i reaguje na polecenia sterownika zmieniając swój stan. Widok odpowiada za wyświetlanie użytkownikowi danych modelu, reagując na zmiany w modelu. A kontroler interpretuje działania użytkownika, powiadamiając model o potrzebie zmian. W ten sposób każdy element tego obwodu jest luźno powiązany z innymi elementami, co zapewnia elastyczność programu. Najczęściej cała logika biznesowa zawarta jest w modelu, chociaż czasami jest ona zawarta także w kontrolerze. W pierwszym przypadku model nazywa się cienkim, w drugim - grubym.

  2. DAO (ang. Data Access Object) to obiekt, którego głównym zadaniem jest zapisywanie danych w bazie danych, a także ich pobieranie z niej. DTO (Data Transfer Object) to obiekt przeznaczony do transportu danych. Dlatego jego głównym zadaniem jest przechowywanie tych danych. Nie zawiera żadnej logiki. Ponadto musi nadawać się do serializacji, ponieważ transport obiektów zwykle odbywa się poprzez serializację-deserializację.

  3. POJO oznacza „obiekt Java w starym stylu”. Są skontrastowane z obiektami EJB. Te ostatnie działają według specjalnej konwencji i są zwykle ściśle powiązane z konkretnym frameworkiem przedsiębiorstwa (na przykład muszą mieć publiczny konstruktor bez parametrów, muszą mieć moduły pobierające i ustawiające pola, muszą umożliwiać serializację itp.). POJO jest zatem zwykłą klasą, która nie dziedziczy po żadnych klasach specjalnych i nie implementuje żadnych specjalnych bibliotek. Zazwyczaj POJO nie robi nic specjalnego i zawiera tylko stan.

  4. Entity Bean — это бин, цель которого хранить некоторые данные. В логику такого бина встроен механизм сохранения себя и своих полей в базу данных. Такой obiekt может быть уничтожен, а потом воссоздан из базы заново. Но кроме хранения данных у него нет ниJakой логики. А бин в свою очередь — это особый класс, которые должен выполнять следующие правила:

    • Класс должен иметь конструктор без параметров, с модификатором доступа public. Такой конструктор позволяет инструментам создать obiekt без дополнительных сложностей с параметрами.
    • Свойства класса должны быть доступны через get, set и другие методы (так называемые методы доступа), которые должны подчиняться стандартному соглашению об именах. Это легко позволяет инструментам автоматически определять и обновлять содержание bean’ов. Многие инструменты даже имеют специализированные редакторы для различных типов свойств.
    • Класс должен быть сериализуем. Это даёт возможность надёжно сохранять, хранить и восстанавливать состояние bean независимым от платформы и виртуальной машины способом.
    • Класс должен иметь переопределенные методы equals(), hashCode() и toString().
  5. Все коллекции-списки реализуют интерфейс List<E> и наследуются от абстрактного класса AbstractList<E>. Среди них можно выделить ArrayList<E> и LinkedList<E7gt;. ArrayList7lt;E> — это список, основаный на массиве, а LinkedList<E> — это классический двусвязный список.

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

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

  8. Kolejka to struktura danych, która działa na zasadzie „pierwszy na wejściu, pierwszy na wyjściu”. Oznacza to, że elementy są dodawane do kolejki z jednego końca i usuwane z drugiego. Deque to kolejka dwukierunkowa. W tej kolejce elementy można dodawać zarówno na początek, jak i na koniec, można także pobierać elementy zarówno z początku, jak i z końca kolejki. W związku z tym istnieją metody, które pozwalają na dodanie elementu (są to metody add(e) i oferta(e)), oraz istnieją metody, które pozwalają na usunięcie elementu z kolejki (są to metody takie jak Remove( ) i ankieta()). Ponadto istnieją metody, które pozwalają po prostu pobrać element z kolejki bez usuwania go z kolejki (są to metody element() i peek()). Interfejs Deque dodatkowo posiada metody dodawania elementów na początek i koniec kolejki, pobieranie elementów z początku lub końca oraz pobieranie elementów z początku lub końca kolejki (bez usuwania ich z kolejki).

  9. Proste implementacje obejmują ArrayDeque , LinkedList i PriorityQueue . Istnieje również wiele klas w kolekcjach współbieżnych, które implementują te dwa interfejsy (oba jednocześnie lub tylko jeden z nich).

  10. Drzewo to spójny graf bez pętli i wielu krawędzi. Zwykle, jeśli w drzewie jest N wierzchołków, liczba krawędzi wynosi co najmniej N-1. Jako korzeń wybierany jest także jeden wierzchołek drzewa. Pozostałe wierzchołki są zadeklarowanymi gałęziami. Gałęzie, które nie mają własnych gałęzi, nazywane są liśćmi drzewa.
    Drzewa są dość szeroko stosowane w programowaniu i wynaleziono już wiele rodzajów tego drzewa. Jednym z najczęściej używanych drzew jest drzewo binarne. W tym drzewie każdy element ma co najwyżej dwoje dzieci (to znaczy może ich być od 0 do 2). Jednym z typów drzewa binarnego jest BST – drzewo wyszukiwania binarnego. W tym drzewie na elementy narzucona jest reguła: lewe dziecko elementu musi być od niego mniejsze pod względem wartości, a prawe dziecko musi być od niego większe lub równe.
    Są też drzewa czerwono-czarne. Jest to rodzaj drzewa wyszukiwania binarnego. W czerwono-czarnych drzewach wprowadzono inną właściwość elementu - kolor. Kolor może być czarny lub czerwony. Ponadto każde czerwono-czarne drzewo musi spełniać następujące wymagania:

    1. korzeń drzewa jest czarny;
    2. węzeł jest czerwony lub czarny;
    3. wszystkie liście drzewa są czarne;
    4. obaj potomkowie węzła czerwonego są czarni;
    5. Każda ścieżka od danego węzła do dowolnego węzła liścia będącego jego potomkiem zawiera tę samą liczbę czarnych węzłów.
Zasady te pozwalają osiągnąć zrównoważone drzewo. Drzewo jest zrównoważone, gdy długość ścieżki od korzenia do dowolnego węzła liścia różni się nie więcej niż o 1. (To znaczy, mówiąc prościej, w drzewie nie ma zniekształceń ani długich gałęzi).
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION