CORE Flashcards

1
Q

Czym jest JVM ?

A

Java Virtual Machine (JVM) to środowisko uruchomieniowe, które umożliwia wykonywanie kodu napisanego w języku Java na różnych platformach

  • Działa jako warstwa abstrakcyjna pomiędzy kodem źródłowym, a systemem operacyjnym, co pozwala na tłumaczenie i wykonywanie kodu Java bezpośrednio na danej platformie.
  • JVM jest wykorzystywany do interpretacji kodu bajtowego, a także do optymalizacji wydajności aplikacji.
  • odśmiecanie pamięci
  • obługa wyjątków
  • biblioteka standardowa
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Czym jest byte code ?

A

Kod bajtowy jest zestawem instrukcji dla wirtualnej maszyny Javy (ang. Java Virtual Machine: JVM). Interpreter kodu bajtowego Javy umożliwia wykonanie programu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Z czego składa sie JVM ?

A
  1. Ładowarka klas (Class Loader).
  2. Sterta (Heap).
  3. Stosy języka (language Stacks)
  4. Rejestr komputera PC (PC Registers).
  5. Stosy metod natywnych (Native Method Stacks).
  6. Platforma programistyczna (Native Method Interface).
    Biblioteki (Native Method Libraries).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Co to jest Execution Engine ?

A

wykonuje “.class” (kod bajtowy). Odczytuje kod bajtowy wiersz po wierszu, wykorzystuje dane i informacje obecne w różnych obszarach pamięci i wykonuje instrukcje

Składa się z :
- interpretera
- Just-in-time compiler
- garbage collector

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Co to jest Class Loader ?

A

Jest to podsystem, który wykorzystuje się do ładowania plików klas. Wykonuje on ładowanie, inicjowanie i łączenie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Method Arera

A
  • wszystkie informacje o klasach
  • bazwa klasy, metody, zmienne
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Stack

A
  • zmienne loklane
  • wszystkie wątki mają swój stack
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

PC Registers

A

Przechowuje on adres aktualnie realizowanej instrukcji maszyny wirtualnej Java. Każdy wątek w Java posiada osobny rejestr PC.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Native Method Stacks

A

Zawiera wszystkie metody natywne używane w aplikacji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Interpreter

A

wykonuje krok po kroku instrukcje programu zapisane w postaci kodu bajtowego

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

JIT w JVM

A
  • FEATURE JVM które poprawia wydajność aplikacji
  • kompiluje bytecode do kodu maszynowego w czasie wykonywania
  • analizuje kod bajtowy i kompiluje do maszynowego jeśli zdecyduje, że jest często wykonywany kod
  • pozwala to na szybsze wykonywanie kodu niż intepretowaniu kodu za każdym wykonaniem
  • kompilator może reagować na faktyczne zapotrzebowanie użytkowników aplikacji w trakcie jej działania
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Heap

A
  • obiekty
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Garbage Collection

A
  • ## proces automatycznego uwalniania pamięci sterty przez usuwanie obiektów które nie są juz osiągalne przez program
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Które obiekty są do Garabage Collection

A

Obiekt nie ma już żadnych referencji wskazujących na niego.
Wszystkie referencje do obiektu wyszły poza zakres.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

JDK

A
  • dostarcza środowisko do tworzenia (Development Tools) oraz wykonywania JRE
    • kompilator debugger
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

JRE

A
  • środowisko do wykonywania programów
17
Q

Czym jest pakiet ?

A
  • pakiet to przestrzeń nazw która organizuje zestaw powiązanych klas i interfejsów
  • pakiety pomagają w zapobieganiu konfliktom nazw
  • pakiety zapewniają również mechanizm kontroli widoczności
18
Q

Equals i HashCode kontrakt ?

A
  1. jeśli x.equals(y) jest true, to x.hashCode() = y.hashCode().
  2. jeżeli informacje użyte w porównaniach equals() nie zostaną zmienione, to metoda hashCode() musi zawsze zwracać tę samą wartość.
  3. Dwa obiekty są róże equals mogą mieć ten sam hashcode ale nie powinny.
19
Q

Czym Jest Hash?

A
  • liczba całkowita, powstała na skutek funkcji hashujących
  • główna zaletą hashu jest **prównywanie hashy **jest dużo szybsze niż porównywanie wszystkich pól
  • wada - hashe nie są unikalne
  • równość hashy nieoznacza równości pół
20
Q

Jak tworzony jest hash ?

A
  1. Weź pewną liczbę – w książce Effective Java jest to narzucona liczba 17.
  2. Pomnóż aktualny hash przez 31
  3. Dodaj do hashu wartość/hash pola w klasie
  4. Krok drugi i trzeci wykonaj dla każdego pola
  5. Zwróć hash
21
Q

Co jeśli nie zaimplementujemy equals i hashcode

A
  • będziemy prównywać obiekty za pomocą referencji
  • do porównywania obiektów na podstawie pól potrzebujemy zaimplementować metodę equals i hashCode
22
Q

Co jesli nie dotrzymamy kontraktu hashcode equals

A
  1. Problemy z kolekcjami: Jeśli dwa różne obiekty mają ten sam kod hashCode i są uważane za równe przez equals, mogą one zastąpić siebie nawzajem w strukturach takich jak HashSet.
  2. Niespodziewane wyniki: Obiekty, które powinny być traktowane jako różne, mogą być traktowane jako identyczne, co może prowadzić do błędnych wyników w operacjach takich jak wyszukiwanie, dodawanie lub usuwanie z kolekcji.
  3. Problemy z wydajnością: Nieoptymalna implementacja hashCode() może prowadzić do problemów z wydajnością, gdy obiekty są używane w kolekcjach bazujących na hashach.
23
Q

Konwersja zawężająca

A
  • rzutowanie w dół łanucha dziedziczenia
  • JVM sprawdza czy damy pboelt rzeczywiście dziedziczy ten typ
  • używanie instanceof
24
Q

Konwersja rozszerzająca

A
  • rzutowanie w góre łanucacha dziedziczenia
  • nie jest konieczne sprawdzanie
  • Referencja do obiektu może być zawsze zapisana w zmiennej, której typ odpowiada typowi dowolnego z jej przodków.
25
Q

metoda finalize

A
  • Metoda finalize() w Javie jest metodą klasy Object, która służy do wykonania czynności czyszczenia przed zniszczeniem dowolnego obiektu.
  • Jest ona wywoływana przez Garbage Collector przed zniszczeniem obiektów z pamięci.
  • Metoda finalize() jest domyślnie wywoływana dla każdego obiektu przed jego usunięciem.
  • Metoda ta pomaga Garbage Collectorowi zamknąć wszystkie zasoby używane przez obiekt i pomaga w optymalizacji JVM in-memory.
26
Q

Do czego potrzebne są Wrapper Classes

A
  1. Kolekcje: W Javie kolekcje (takie jak ArrayList, HashMap itp.) mogą przechowywać tylko obiekty.
  2. Operacje na obiektach: Klasy opakowujące zawierają wiele przydatnych metod, które pozwalają na operacje na wartościach
  3. null: Typy proste nie mogą przyjmować wartości null, podczas gdy ich klasy opakowujące mogą
  4. Generics: Typy generyczne w Javie nie wspierają typów prostych, dlatego klasy opakowujące są używane w kontekście typów generycznych.
27
Q

Dlaczego metoda main jest statyczna ?

A

Punkt startu programu: Gdy JVM (Java Virtual Machine) uruchamia aplikację, potrzebuje sposobu, aby wejść do programu bez tworzenia instancji klasy. Metoda main jest punktem wejścia do aplikacji Java, a jej statyczność pozwala JVM na jej wywołanie bez potrzeby tworzenia obiektu danej klasy.

28
Q

Czy metoda main musi być publiczna ?

A

metoda main, która służy jako punkt wejścia do programu Java, zazwyczaj jest deklarowana jako public, aby JVM mogła ją wywołać.

29
Q

Czy klasa może mieć wiecej metod main ?

A

Tak ale :

  1. Tylko jedna metoda jest punktem wejścia: W Javie tylko jedna sygnatura metody main jest rozpoznawana jako punkt wejścia dla aplikacji
  2. Możesz mieć wiele metod o nazwie main w jednej klasie, ale muszą one różnić się sygnaturą. Na przykład:
30
Q

Modyfikatory dostępu

A
31
Q

Czy można uruchomić program w javie bez main ?

A

Tylko w przypadku
- Blok statyczny: Jeśli klasa zawiera blok statyczny, ten blok zostanie wykonany podczas ładowania klasy. W takim przypadku możesz użyć klasy ClassLoader do załadowania klasy, co spowoduje wykonanie bloku statycznego.

32
Q

Czym jest enum ?

A
  • to specjalny typ danych w Javie, który reprezentuje zestaw stałych (predefiniowanych wartości)
  • Enumy są używane do reprezentowania grupy nazwanych wartości stałych i pozwalają na definiowanie typów danych, które mogą przyjmować tylko określony zestaw wartości
33
Q

Method overloading vs Method overriding

A