Cześć, postanowiłem, że porozwiązuję trochę tych zadań :) (Będę starał sie updatować na bieżąco.)
Pytania 1-10
1.Zasada działania Garbage Collectora
http://www.e-point.pl/_fileserver/item/1500356
Faza Odśmiecania składa się z dwóch części:
Mark – Identyfikacja wszystkich używanych obiektów i ustawienie ich marbitow na 1
Sweep – Usuwanie wszystkich obiektow, których markbity wynoszą 0;
Dodatkowo występuje 3ci proces „Collect” – któy to defragmentuje pamięć.
2. Klasa węwnętrzna statyczna a klasa wewnętrzna niestatyczna podaj różnice
http://rnowak.c0.pl/index.php?kat=java&file=klasy_zagniezdzone_wewnetrzne
http://forum.4programmers.net/Newbie/182128-przyklady_zastosowan_statycznej_klasy_wewnetrznej
Klasa wewnętrzna statyczna:
- Nie posiada referencji do klasy zewnętrznej
- Nie można odwoływać się do zmiennych klasy zewnętrznej bezpośrednio. Potrzeba posiadać nazwę obiektu klasy zewnętrznej.
Klasa wewnętrzna niestatyczna :
- Posiada niejawną referencję do klasy zewnętrznej.
- Możemy odwoływać się do zmiennych/metod klasy zewnętrznej bezpośrednio
3.Jaka jest różnica pomiędzy interfejsem a klasą abstrakcyjną
Interfejs :
Określa funkcjonalność, która może posiadać klasa.
Można dołączać wiele interfejsów do jednej klasy
Klasę Abstrakcyjną jak każda klasę może dziedziczyć jedną w klasie pochodnej.
4. W jakich stanach może znajdować się wątek w Javie
Utworzony – obiekt utworzony dopiero, ale jeszcze nie uruchomiony
Wykonywany - watęk na którym uruchomiono metodę start() i jest aktualnie „w ruchu”
Zablokowany – wątek nie może być wykonywany bo brakuje mu jakichś zasobów, bądź jest zatrzymany
Zakończony – Watęk po wykonaniu metody stop() lub po zakończeniu działania run()
5.Czym jest bytecode
Jest to przekompilowany kod na listę instrukcji które ma do wykonania JVM,
6.Czym jest JVM wyjaśnij kluczowe zagadnienia
JVM to jest maszyna służąca do wykonywania kodu bajtowego javy. Dodatkowymi funkcjonalnościami JVM jest GC, obsługa wyjątków.
Elementy JVM
Interpreter – wykonuje krok po kroku instrukcje programu zapisane w postaci kodu bajtowego
Kompilator JIT – (opcjonalny) kompiluje najczęściej wykorzystywanego fragmenty kodu do postaci kodu maszynowego . + zwiększenie wydajności
Zarządca Pamięci – Zarządza stertą na której znajdują się wszystkie wykorzystywane w aplikacji obiekty oraz zapewnia automatyczne zwalnianie nieużywanej pamięci
Weryfikator kodu bajtowego – wykonuje się przed odpaleniem kodu bajtowego. Sprawdza, czy wykonanie tego kodu nie zaszkodzi bezpieczeństwu systemu.
Java API – Zestaw bibliotek programistycznych udostępnianych takie usługi jak obsługa plików czy GUI.
7. Co to znaczy "immutable"
http://www.pzielinski.com/?p=1127
http://www.javapractices.com/topic/TopicAction.do?Id=29
http://en.wikipedia.org/wiki/Immutable_object#Java
To termin odnoszący się do tworzonych obiektów. „immutable” - „ niezmienne”. Obiekty takie są niezmienne po ich inicjalizacji. Jedyną możliwością zmienienia stanu takiego obiektu jest przypisanie do niego innej wartości.
8. Jak zapobiegać zmianie referencji do obiektu przekazanego do metody
Wykonywać kopie głębokie?
Użyć Konstruktora kopiującego?
9. Czym jest hashcode
Jest to intowa wartość danej zmiennej, dzięki niej możemy korzystać z hashMap i szybko odwoływać się do danego miejsca.
10. Kiedy używać interfejsów a kiedy klas abstrakcyjnych
Interfejsów używamy, gdy chcemy aby klasa miała na pewno jakąś funkcjonalność i żeby posiadała metody tego interfejsu.
Klas abstrakcyjnych używamy, gdy kilka klas posiada takie same metody i możemy je wyekstraktować do innej klasy, ale taka nowa klasa nie powinna posiadać możliwości stworzenia instancji. Przykład Kobieta i Mężczyzna robią takie same rzeczy w ciągu dnia : jedzą, śpią i możemy takie metody „wyrzucić do klasy humna