top 50 core java interview questions
Najczęściej zadawane pytania i odpowiedzi dotyczące języka Java wraz z przykładami:
W tym samouczku omówiliśmy prawie 50+ ważnych podstawowych pytań do rozmów kwalifikacyjnych dotyczących języka Java dla świeżo upieczonych i doświadczonych kandydatów.
Ten post dotyczący pytań do wywiadów JAVA ma na celu pomóc Ci zrozumieć podstawowe pojęcia programowania w języku Java do celów wywiadu. Wszystkie ważne koncepcje JAVA są tutaj wyjaśnione z przykładami dla łatwego zrozumienia.
Ten samouczek obejmuje tematy JAVA, takie jak podstawowe definicje Java, koncepcje OOP, specyfikatory dostępu, kolekcje, wyjątki, wątki, serializacja itp., Wraz z przykładami, które pomogą Ci się idealnie przygotować pewnie stawić czoła każdemu wywiadowi JAVA.
Najpopularniejsze pytania i odpowiedzi do wywiadów Java
Poniżej znajduje się obszerna lista najważniejszych i najczęściej zadawanych pytań wywiadowczych dotyczących podstawowych i zaawansowanych programów w języku Java wraz ze szczegółowymi odpowiedziami.
Pytanie 1) Co to jest JAVA?
Odpowiedź: Java to język programowania wysokiego poziomu, niezależny od platformy.
Java to zbiór obiektów. Został opracowany przez Sun Microsystems. Istnieje wiele aplikacji, witryn internetowych i gier opracowanych przy użyciu języka Java.
P # 2) Jakie są funkcje JAVA?
Odpowiedź: Funkcje Java są następujące:
- Pojęcia OOP
- Zorientowany obiektowo
- Dziedzictwo
- Kapsułkowanie
- Wielopostaciowość
- Abstrakcja
- Niezależne od platformy: Pojedynczy program działa na różnych platformach bez żadnych modyfikacji.
- Wysoka wydajność: JIT (kompilator Just In Time) zapewnia wysoką wydajność w Javie. JIT konwertuje kod bajtowy na język maszynowy, a następnie JVM rozpoczyna wykonywanie.
- Wielowątkowe: Przepływ wykonywania jest nazywany wątkiem. JVM tworzy wątek, który jest nazywany głównym wątkiem. Użytkownik może tworzyć wiele wątków, rozszerzając klasę wątków lub implementując interfejs Runnable.
Pytanie 3) W jaki sposób Java zapewnia wysoką wydajność?
Odpowiedź: Java używa kompilatora Just In Time, aby zapewnić wysoką wydajność. Służy do konwersji instrukcji na kody bajtowe.
Pytanie 4) Nazwij środowisko Java IDE?
Odpowiedź: Eclipse i NetBeans to środowiska IDE JAVA.
P # 5) Co masz na myśli mówiąc o Konstruktorze?
Odpowiedź: Konstruktora można szczegółowo wyjaśnić za pomocą wymienionych punktów:
- Kiedy w programie tworzony jest nowy obiekt, wywoływany jest konstruktor odpowiadający klasie.
- Konstruktor to metoda, która ma taką samą nazwę jak nazwa klasy.
- Jeśli użytkownik nie utworzy niejawnie konstruktora, zostanie utworzony konstruktor domyślny.
- Konstruktor może być przeciążony.
- Jeśli użytkownik utworzył konstruktor z parametrem, powinien utworzyć inny konstruktor jawnie bez parametru.
P # 6) Co oznacza zmienna lokalna i zmienna instancji?
Odpowiedź:
Zmienne lokalne są zdefiniowane w metodzie i zakresie zmiennych, które istnieją wewnątrz samej metody.
Zmienna instancji jest zdefiniowana wewnątrz klasy i poza metodą, a zakres zmiennych istnieje w całej klasie.
P # 7) Co to jest klasa?
Odpowiedź: Wszystkie kody Java są zdefiniowane w klasie. Ma zmienne i metody.
Zmienne to atrybuty określające stan klasy.
Metody to miejsce, w którym należy wykonać dokładną logikę biznesową. Zawiera zestaw instrukcji (lub) instrukcji spełniających określone wymaganie.
Przykład:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
P # 8) Co to jest obiekt?
Odpowiedź: Instancja klasy nazywana jest obiektem. Obiekt ma stan i zachowanie.
Za każdym razem, gdy maszyna JVM odczyta słowo kluczowe „new ()”, utworzy instancję tej klasy.
Przykład:
public class Addition{ public static void main(String[] args){ Addion add = new Addition();//Object creation } }
Powyższy kod tworzy obiekt dla klasy Addition.
P # 9) Jakie są koncepcje OOP?
Odpowiedź: Koncepcje OOP obejmują:
- Dziedzictwo
- Kapsułkowanie
- Wielopostaciowość
- Abstrakcja
- Berło
Sugerowany odczyt = >> Najpopularniejsze pytania do wywiadów OOP
P # 10) Co to jest dziedziczenie?
Odpowiedź: Dziedziczenie oznacza, że jedna klasa może rozszerzać się na inną klasę. Aby kody mogły być ponownie użyte z jednej klasy do drugiej. Istniejąca klasa jest znana jako klasa Super, podczas gdy klasa pochodna jest znana jako podklasa.
Przykład:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Dziedziczenie dotyczy tylko członków publicznych i chronionych. Prywatnych członków nie można dziedziczyć.
P # 11) Co to jest hermetyzacja?
Odpowiedź: Cel hermetyzacji:
- Chroni kod przed innymi osobami.
- Możliwość utrzymania kodu.
Przykład:
Deklarujemy „a” jako zmienną całkowitą i nie powinno być ujemne.
public class Addition(){ int a=5; }
Jeśli ktoś zmieni dokładną zmienną na „ a = -5 ' wtedy jest źle.
Aby rozwiązać ten problem, musimy wykonać poniższe kroki:
- Możemy uczynić zmienną prywatną lub chronioną.
- Użyj publicznych metod dostępu, takich jak set i get.
Aby powyższy kod można było zmodyfikować jako:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Poniższy kod przedstawia metody pobierające i ustawiające.
Warunki można podać podczas ustawiania zmiennej.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
W celu hermetyzacji musimy uczynić wszystkie zmienne instancji prywatnymi i utworzyć ustawianie i pobieranie tych zmiennych. To z kolei zmusi innych do wywoływania ustawiaczy zamiast bezpośredniego dostępu do danych.
P # 12) Co to jest polimorfizm?
Odpowiedź: Polimorfizm oznacza wiele form.
Pojedynczy obiekt może odnosić się do superklasy lub podklasy w zależności od typu odniesienia, który jest nazywany polimorfizmem.
Przykład:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args[]){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } }
Korzystając z typu referencyjnego Manipulation, możemy wywołać metodę „add ()” klasy Addition. Ta zdolność jest znana jako polimorfizm. Polimorfizm ma zastosowanie do nadrzędny a nie dla przeciążenie .
P # 13) Co oznacza przesłanianie metody?
Odpowiedź: Zastępowanie metody ma miejsce, jeśli metoda podklasy spełnia poniższe warunki z metodą superklasy:
- Nazwa metody powinna być taka sama
- Argument powinien być taki sam
- Typ zwrotu również powinien być taki sam
Główną zaletą nadpisywania jest to, że podklasa może dostarczyć pewnych szczegółowych informacji o tym typie podklasy niż nadklasa.
Przykład:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args[]){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }
add.add () metoda wywołuje metodę add () w klasie podrzędnej, a nie w klasie nadrzędnej. Dlatego przesłania metodę Super-class i jest znany jako przesłanianie metody.
P # 14) Co oznacza Przeciążenie?
Odpowiedź: Przeciążanie metod ma miejsce dla różnych klas lub w tej samej klasie.
W celu przeciążenia metody metoda podklasy powinna spełniać poniższe warunki z metodą Super-klasy (lub) w tej samej klasie:
- Ta sama nazwa metody
- Różne typy argumentów
- Mogą istnieć różne typy zwrotów
Przykład:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args[]){ Addition addition = new Addition(); addition.add(); } }
Tutaj metoda add () ma różne parametry w klasie Addition, która jest przeciążona w tej samej klasie, co w przypadku superklasy.
Uwaga: Polimorfizm nie ma zastosowania do przeciążania metod.
P # 15) Co oznacza interfejs?
Odpowiedź: W Javie nie można osiągnąć wielokrotnego dziedziczenia. Aby rozwiązać ten problem, wprowadzono koncepcję interfejsu.
Interfejs to szablon, który ma tylko deklaracje metod, a nie implementację metody.
Przykład:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Wszystkie metody w interfejsie są wewnętrzne publiczna abstrakcyjna pustka .
- Wszystkie zmienne w interfejsie są wewnętrznie publiczny finał statyczny to jest stałe.
- Klasy mogą implementować interfejs i nie rozszerzają się.
- Klasa implementująca interfejs powinna zapewniać implementację dla wszystkich metod zadeklarowanych w interfejsie.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Q # 16) Co oznacza klasa abstrakcyjna?
Odpowiedź: Możemy stworzyć klasę Abstract, używając słowa kluczowego „Abstract” przed nazwą klasy. Klasa abstrakcyjna może mieć zarówno metody „abstrakcyjne”, jak i metody „nieabstrakcyjne”, które są klasą konkretną.
Metoda abstrakcyjna:
Metoda, która ma tylko deklarację, a nie implementację, nazywana jest metodą abstrakcyjną i ma słowo kluczowe o nazwie „abstract”. Deklaracje kończą się średnikiem.
Przykład:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- Klasa abstrakcyjna może mieć również metodę nieabstrakcyjną.
- Konkretna podklasa, która rozszerza klasę Abstract, powinna zapewniać implementację dla metod abstrakcyjnych.
Q # 17) Różnica między Array i Array List.
Odpowiedź: Różnicę między tablicą a listą tablic można zrozumieć z poniższej tabeli:
Szyk | Lista tablic |
---|---|
Rozmiar należy podać w momencie deklaracji tablicy. Ciąg [] nazwa = nowy Ciąg [2] | Rozmiar może nie być wymagany. Dynamicznie zmienia rozmiar. ArrayList name = new ArrayList |
Aby umieścić obiekt w tablicy, musimy określić indeks. name [1] = „książka” | Nie jest wymagany indeks. name.add („książka”) |
Typ tablicy nie jest sparametryzowany | ArrayList w java 5.0 są sparametryzowane. Np .: Ten nawias trójkątny jest parametrem typu, który oznacza listę typu String. |
Q # 18) Różnica między String, String Builder i String Buffer.
Odpowiedź:
Strunowy: Zmienne łańcuchowe są przechowywane w „stałej puli ciągów”. Gdy odwołanie do ciągu zmieni starą wartość istniejącą w „stałej puli ciągów”, nie można jej usunąć.
Przykład:
które z poniższych nie są obowiązkiem zespołu?
Nazwa ciągu = „książka”;
Stała pula strun
.
Jeśli nazwa-wartość zmieniła się z „książka” na „długopis”.
Stała pula strun
Wówczas starsza wartość pozostaje w stałej puli ciągów.
Bufor strunowy:
- Tutaj wartości łańcuchowe są przechowywane w stosie. Jeśli wartości zostaną zmienione, nowa wartość zastępuje starszą wartość.
- Bufor ciągów jest zsynchronizowany, co jest bezpieczne dla wątków.
- Wydajność jest wolniejsza niż w przypadku konstruktora ciągów.
Przykład:
Nazwa bufora ciągów = „książka”;
Po zmianie wartości nazwy na „pióro”, „książka” jest usuwana ze stosu.
Konstruktor ciągów:
Jest to to samo, co bufor ciągów, z wyjątkiem Konstruktora ciągów, który nie jest bezpiecznie wątkowany, który nie jest zsynchronizowany. Więc oczywiście wydajność jest szybka.
P # 19) Wyjaśnij na temat specyfikatorów dostępu publicznego i prywatnego.
Odpowiedź: Metody i zmienne instancji są nazywane członkami.
Publiczny:
Członkowie publiczni są widoczni w tym samym pakiecie, jak również w pakiecie zewnętrznym, który jest przeznaczony dla innych pakietów.
Członkowie publiczni klasy A są widoczni dla klasy B (ten sam pakiet), a także klasy C (różne pakiety).
Prywatny:
Członkowie prywatni są widoczni tylko w tej samej klasie, a nie dla innych klas w tym samym pakiecie, a także klas w pakietach zewnętrznych.
Członkowie prywatni z klasy A są widoczni tylko w tej klasie. Jest niewidoczny zarówno dla klasy B, jak i C.
Q # 20) Różnica między specyfikatorami dostępu domyślnego i chronionego.
Odpowiedź:
Domyślna: Metody i zmienne zadeklarowane w klasie bez żadnych specyfikatorów dostępu nazywane są domyślnymi.
Domyślne składowe klasy A są widoczne dla innych klas znajdujących się w pakiecie i niewidoczne dla klas znajdujących się poza pakietem.
Tak więc członkowie klasy A są widoczni dla klasy B i niewidoczni dla klasy C.
Chroniony:
.
Protected jest tym samym, co Default, ale jeśli klasa się rozszerza, jest widoczna, nawet jeśli znajduje się poza pakietem.
Członkowie klasy A są widoczni dla klasy B, ponieważ znajdują się wewnątrz pakietu. W przypadku klasy C jest niewidoczny, ale jeśli klasa C rozszerza klasę A, elementy członkowskie są widoczne dla klasy C, nawet jeśli znajduje się poza pakietem.
Q # 21) Różnica między HashMap i HashTable.
Odpowiedź: Różnicę między HashMap i HashTable można zobaczyć poniżej:
HashMap | HashTable |
---|---|
Metody nie są synchronizowane | Kluczowe metody są zsynchronizowane |
Nie bezpieczeństwo wątków | Bezpieczeństwo nici |
Iterator służy do iteracji wartości | Moduł wyliczający służy do iteracji wartości |
Zezwala na jeden klucz pusty i wiele wartości null | Nie zezwala na nic, co jest zerowe |
Wydajność jest wysoka niż HashTable | Wydajność jest powolna |
Q # 22) Różnica między HashSet i TreeSet.
Odpowiedź: Różnicę między HashSet i TreeSet można zobaczyć poniżej:
HashSet | TreeSet |
---|---|
Wstawione elementy są w przypadkowej kolejności | Utrzymuje elementy w posortowanej kolejności |
Potrafi przechowywać obiekty puste | Nie udało się zapisać pustych obiektów |
Wydajność jest szybka | Wydajność jest powolna |
Q # 23) Różnica między klasą abstrakcyjną a interfejsem.
Odpowiedź: Różnice między klasą abstrakcyjną a interfejsem są następujące:
Klasa abstrakcyjna:
- Klasy abstrakcyjne mają domyślny konstruktor, który jest wywoływany za każdym razem, gdy tworzona jest instancja konkretnej podklasy.
- Zawiera metody abstrakcyjne oraz metody nieabstrakcyjne.
- Klasa będąca rozszerzeniem klasy Abstract nie powinna wymagać implementacji wszystkich metod, tylko metody Abstract muszą być zaimplementowane w konkretnej podklasie.
- Klasa abstrakcyjna zawiera zmienne instancji.
Berło:
- Nie ma żadnego konstruktora i nie można go utworzyć.
- Należy zadeklarować samą metodę abstrakcyjną.
- Klasy implementujące interfejs powinny zapewniać implementację dla wszystkich metod.
- Interfejs zawiera tylko stałe.
Q # 24) Jakie jest znaczenie kolekcji w Javie?
jaka jest różnica między qa i qc
Odpowiedź: Kolekcja to struktura przeznaczona do przechowywania obiektów i manipulowania projektem w celu przechowywania obiektów.
Kolekcje służą do wykonywania następujących operacji:
- Badawczy
- Sortowanie
- Manipulacja
- Wprowadzenie
- Usunięcie
Grupa obiektów nazywana jest kolekcjami. Wszystkie klasy i interfejsy do zbierania danych są dostępne w pakiecie narzędzi Java.
P # 25) Jakie są wszystkie klasy i interfejsy, które są dostępne w kolekcjach?
Odpowiedź: Poniżej podano klasy i interfejsy, które są dostępne w kolekcjach:
Interfejsy:
- Kolekcja
- Lista
- Zestaw
- Mapa
- Posortowany zestaw
- Mapa posortowana
- Kolejka
Zajęcia:
- Listy:
- Lista tablic
- Wektor
- Połączona lista
Zestawy:
- Hash set
- Połączony zestaw skrótów
- Zestaw drzew
Mapy:
- Mapa skrótów
- Hash Table
- TreeMap
- Połączona skrótowa mapa
Kolejka:
- Kolejka priorytetowa
P # 26) Co oznacza określenie „uporządkowane i posortowane w kolekcjach”?
Odpowiedź:
Zamówione: Oznacza to, że wartości przechowywane w kolekcji są oparte na wartościach dodanych do kolekcji. Więc możemy iterować wartości z kolekcji w określonej kolejności.
Posortowane: Mechanizmy sortowania mogą być stosowane wewnętrznie lub zewnętrznie, tak aby grupa obiektów sortowanych w określonej kolekcji była oparta na właściwościach obiektów.
Q # 27) Wyjaśnij różne listy dostępne w kolekcji.
Odpowiedź: Wartości dodane do listy są oparte na pozycji indeksu i są uporządkowane według pozycji indeksu. Dozwolone są duplikaty.
Typy list to:
a) Lista tablic:
- Szybka iteracja i szybki losowy dostęp.
- Jest to zbiór uporządkowany (według indeksu) i nieposortowany.
- Implementuje interfejs dostępu swobodnego.
Przykład:
public class Fruits{ public static void main (String [ ] args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }
Wynik:
[Jabłko, wiśnia, kiwi, banan, wiśnia]
Na podstawie wyniku Array List zachowuje kolejność wstawiania i akceptuje duplikaty. Ale to nie jest posortowane.
b) Wektor:
To jest to samo, co lista tablic.
- Metody wektorowe są zsynchronizowane.
- Bezpieczeństwo nici.
- Implementuje również Random Access.
- Bezpieczeństwo wątków zwykle powoduje spadek wydajności.
Przykład:
public class Fruit { public static void main (String [ ] args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }
Wynik:
[wiśnia, jabłko, banan, kiwi, jabłko]
Vector utrzymuje również kolejność reklam i akceptuje duplikaty.
c) Lista połączona:
- Elementy są ze sobą podwójnie połączone.
- Wydajność jest wolniejsza niż w przypadku listy tablic.
- Dobry wybór do wstawiania i usuwania.
- W Javie 5.0 obsługuje popularne metody kolejki peek (), Pool (), Offer () itp.
Przykład:
public class Fruit { public static void main (String [ ] args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Wynik:
[banan, wiśnia, jabłko, kiwi, banan]
Utrzymuje zamówienie reklamowe i akceptuje duplikaty.
P # 28) Wyjaśnij o zestawie i ich typach w kolekcji.
Odpowiedź: Set dba o niepowtarzalność. Nie pozwala na powielanie. Tutaj metoda „equals ()” służy do określenia, czy dwa obiekty są identyczne, czy nie.
a) Hash Set:
- Nieuporządkowane i nieposortowane.
- Używa kodu skrótu obiektu do wstawiania wartości.
- Użyj tego, gdy wymaganiem jest „brak duplikatów i nie obchodzi mnie kolejność”.
Przykład:
public class Fruit { public static void main (String[ ] args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Wynik:
[banan, wiśnia, kiwi, jabłko]
Nie następuje po żadnym zamówieniu reklamowym. Duplikaty nie są dozwolone.
b) Połączony zestaw skrótów:
- Uporządkowana wersja zestawu skrótów jest nazywana połączonym zestawem skrótów.
- Utrzymuje podwójnie połączoną listę wszystkich elementów.
- Użyj tego, gdy wymagana jest kolejność iteracji.
Przykład:
public class Fruit { public static void main (String[ ] args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Wynik:
[banan, wiśnia, jabłko, kiwi]
Utrzymuje kolejność wstawiania, w jakiej zostały dodane do zestawu. Duplikaty nie są dozwolone.
c) Zestaw drzew:
- Jest to jedna z dwóch posortowanych kolekcji.
- Używa struktury drzewa „Read-Black” i gwarantuje, że elementy będą w porządku rosnącym.
- Możemy skonstruować zestaw drzew za pomocą konstruktora, używając porównywalnego (lub) komparatora.
Przykład:
public class Fruits{ public static void main (String[ ]args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }
Wynik:
[jabłko, banan, wiśnia, kiwi]
TreeSet sortuje elementy w kolejności rosnącej. A duplikaty nie są dozwolone.
Q # 29) Wyjaśnij mapę i jej typy.
Odpowiedź: Mapa dba o unikalny identyfikator. Możemy przypisać unikalny klucz do określonej wartości. Jest to para klucz / wartość. Możemy wyszukać wartość na podstawie klucza. Podobnie jak zestaw, mapa również używa metody „equals ()” do określenia, czy dwa klucze są takie same, czy różne.
Mapa ma następujące typy:
a) Mapa skrótów:
- Mapa nieuporządkowana i niesortowana.
- Hashmap to dobry wybór, gdy nie dbamy o kolejność.
- Pozwala na jeden klucz pusty i wiele wartości null.
Przykład:
Public class Fruit{ Public static void main(String[ ] args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }
Wynik:
{key2 = banan, key1 = cherry, key4 = kiwi, key3 = apple}
W programie Map nie można używać zduplikowanych kluczy.
Nie obsługuje żadnego zamówienia reklamowego i nie jest posortowany.
b) Hash Table:
- Podobnie jak w przypadku klucza wektorowego, metody klasy są synchronizowane.
- Bezpieczeństwo wątków, a tym samym spowalnia wydajność.
- Nie zezwala na nic, co jest zerowe.
Przykład:
public class Fruit{ public static void main(String[ ]args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Wynik:
{key2 = apple, key1 = cherry, key4 = kiwi, key3 = banana}
Duplikaty kluczy są niedozwolone.
do) Połączona mapa skrótów:
- Utrzymuje kolejność reklamową.
- Wolniej niż mapa Hash.
- Mogę spodziewać się szybszej iteracji.
Przykład:
public class Fruit{ public static void main(String[ ] args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Wynik:
{key2 = apple, key1 = cherry, key4 = kiwi, key3 = banana}
Duplikaty kluczy są niedozwolone.
d) Mapa drzewa:
- Mapa posortowana.
- Podobnie jak w przypadku zestawu Tree, możemy skonstruować porządek sortowania za pomocą konstruktora.
Przykład:
public class Fruit{ public static void main(String[ ]args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Wynik:
{klucz1 = wiśnia, klucz2 = banan, klucz3 = jabłko, klucz4 = kiwi}
Jest sortowany rosnąco na podstawie klucza. Duplikaty kluczy są niedozwolone.
Q # 30) Wyjaśnij kolejkę priorytetową.
Odpowiedź: Interfejs kolejki
Kolejka priorytetowa: Klasa listy połączonej została ulepszona w celu zaimplementowania interfejsu kolejki. Kolejki można obsługiwać za pomocą połączonej listy. Celem kolejki jest „Priorytet na wejściu, Priorytet na wyjściu”.
Stąd elementy są uporządkowane albo naturalnie, albo według komparatora. Kolejność elementów reprezentuje ich względny priorytet.
P # 31) Co oznacza wyjątek?
Odpowiedź: Wyjątek to problem, który może wystąpić podczas normalnego przebiegu wykonywania. Metoda może zgłosić wyjątek, gdy coś zawodzi w czasie wykonywania. Jeśli nie można obsłużyć tego wyjątku, wykonanie zostaje przerwane przed ukończeniem zadania.
Jeśli obsłużyliśmy wyjątek, kontynuowany jest normalny przepływ. Wyjątki są podklasą java.lang.Exception.
Przykład obsługi wyjątku:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
P # 32) Jakie są rodzaje wyjątków?
Odpowiedź: Istnieją dwa rodzaje wyjątków. Zostały one szczegółowo wyjaśnione poniżej.
a) Sprawdzony wyjątek:
Te wyjątki są sprawdzane przez kompilator w momencie kompilacji. Klasy, które rozszerzają klasę Throwable, z wyjątkiem wyjątków Runtime i Error, są nazywane sprawdzanymi wyjątkami.
Zaznaczone wyjątki muszą albo zadeklarować wyjątek za pomocą słowa kluczowego throws (lub) otoczonego odpowiednim try / catch.
Na przykład, Klasa nie znaleziono wyjątku
b) Niezaznaczony wyjątek:
Te wyjątki nie są sprawdzane w czasie kompilacji przez kompilator. Kompilator nie wymusza obsługi tych wyjątków. Obejmuje:
- Wyjątek arytmetyczny
- Wyjątek ArrayIndexOutOfBounds
P # 33) Jakie są różne sposoby obsługi wyjątków?
Odpowiedź: Poniżej opisano dwa różne sposoby obsługi wyjątków:
a) Korzystanie z try / catch:
Ryzykowny kod jest otoczony blokiem try. Jeśli wystąpi wyjątek, jest przechwytywany przez blok catch, po którym następuje blok try.
Przykład:
class Manipulation{ public static void main(String[] args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) Deklarując słowo kluczowe throws:
Na końcu metody możemy zadeklarować wyjątek za pomocą słowa kluczowego throws.
Przykład:
class Manipulation{ public static void main(String[] args){ add(); } public void add() throws Exception{ addition(); } }
P # 34) Jakie są zalety obsługi wyjątków?
Odpowiedź: Korzyści są następujące:
- Normalny przepływ wykonania nie zostanie zakończony, jeśli wyjątek zostanie obsłużony
- Możemy zidentyfikować problem za pomocą deklaracji połowu
P # 35) Jakie są słowa kluczowe obsługi wyjątków w Javie?
Odpowiedź: Poniżej wymieniono dwa słowa kluczowe dotyczące obsługi wyjątków:
próba:
Gdy ryzykowny kod jest otoczony blokiem try. Wyjątek występujący w bloku try jest przechwytywany przez blok catch. Po próbie może nastąpić złapanie (lub) w końcu (lub) oba. Ale każdy z bloków jest obowiązkowy.
b) złapać:
Po tym następuje blok próbny. Wyjątki są tutaj.
c) wreszcie:
Po tym następuje blok try block (lub) catch. Ten blok jest wykonywany niezależnie od wyjątku. Tak więc ogólnie dostępne są kody porządkowe.
Q # 36) Wyjaśnij rozprzestrzenianie się wyjątków.
Odpowiedź: Wyjątek jest najpierw wyrzucany z metody, która znajduje się na szczycie stosu. Jeśli to się nie powiedzie, wyskakuje metodę i przechodzi do poprzedniej i tak dalej, aż do uzyskania.
Nazywa się to propagacją wyjątków.
Przykład:
public class Manipulation{ public static void main(String[] args){ add(); } public void add(){ addition(); }
Z powyższego przykładu stos wygląda tak, jak pokazano poniżej:
Jeśli wyjątek wystąpi w dodanie() metoda nie zostanie przechwycona, a następnie przechodzi do metody Dodaj() . Następnie jest przenoszony do Główny() metoda, a następnie zatrzyma przepływ wykonania. Nazywa się to propagowaniem wyjątków.
P # 37) Jakie jest ostatnie słowo kluczowe w Javie?
Odpowiedź:
Zmienne zakończenie: Po zadeklarowaniu zmiennej jako ostatecznej wartości zmiennej nie można było zmienić. To jest jak stała.
Przykład:
końcowe int = 12;
Ostateczna metoda: Nie można zastąpić ostatniego słowa kluczowego w metodzie. Jeśli metoda jest oznaczona jako wersja ostateczna, nie może zostać zastąpiona przez podklasę.
Klasa końcowa: Jeśli klasa jest zadeklarowana jako ostateczna, nie można jej dodać do podklasy. Żadna klasa nie może przedłużyć ostatniej klasy.
P # 38) Co to jest wątek?
Odpowiedź: W Javie przepływ wykonania nosi nazwę Thread. Każdy program java ma co najmniej jeden wątek zwany głównym wątkiem, który jest tworzony przez JVM. Użytkownik może zdefiniować własne wątki, rozszerzając klasę Thread (lub), implementując interfejs Runnable. Wątki są wykonywane jednocześnie.
Przykład:
public static void main(String[] args){//main thread starts here }
Q # 39) Jak utworzyć wątek w Javie?
Odpowiedź: Istnieją dwa sposoby tworzenia wątku.
a) Rozszerz klasę wątku: Rozszerzanie klasy Thread i przesłonięcie metody uruchamiania. Wątek jest dostępny w java.lang.thread.
Przykład:
Public class Addition extends Thread { public void run () { } }
Wadą używania klasy wątku jest to, że nie możemy rozszerzyć innych klas, ponieważ już rozszerzyliśmy klasę wątku. W naszej klasie możemy przeciążać metodę run ().
b) Zaimplementuj Runnable interfejs: Innym sposobem jest zaimplementowanie wykonywalnego interfejsu. W tym celu powinniśmy dostarczyć implementację metody run (), która jest zdefiniowana w interfejsie.
Przykład:
Public class Addition implements Runnable { public void run () { } }
Q # 40) Wyjaśnij na temat metody join ().
Odpowiedź: Metoda Join () służy do łączenia jednego wątku z końcem aktualnie działającego wątku.
Przykład:
public static void main (String[] args){ Thread t = new Thread (); t.start (); t.join (); }
Na podstawie powyższego kodu główny wątek rozpoczął wykonywanie. Kiedy dotrze do kodu t.start () wtedy „wątek t” uruchamia własny stos do wykonania. JVM przełącza się między wątkiem głównym a „wątkiem t”.
Gdy dotrze do kodu t.join () wtedy tylko „wątek t” jest wykonywany i kończy swoje zadanie, a dopiero potem główny wątek rozpoczyna wykonywanie.
Jest to metoda niestatyczna. Metoda Join () ma przeciążoną wersję. Możemy więc wspomnieć o czasie trwania w metodzie join () również „.s”.
P # 41) Co robi metoda yield klasy Thread?
Odpowiedź: Metoda yield () przenosi aktualnie działający wątek do stanu, w którym można go uruchomić, i umożliwia wykonanie innym wątkom. Aby wątki o równym priorytecie miały szansę działać. Jest to metoda statyczna. Nie zwalnia żadnej blokady.
Metoda Yield () przenosi wątek z powrotem tylko do stanu Runnable, a nie do bloku sleep (), wait () (lub).
Przykład:
public static void main (String[] args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Q # 42) Wyjaśnij na temat metody wait ().
Odpowiedź: czekaj () jest używana, aby wątek czekał w puli oczekiwania. Gdy metoda wait () jest wykonywana podczas wykonywania wątku, wówczas wątek natychmiast zwalnia blokadę obiektu i przechodzi do puli oczekiwania. Wait () mówi wątkowi, aby czekał przez określony czas.
Następnie wątek obudzi się po wywołaniu metody notify () (lub) notify all ().
Wait () i inne wyżej wymienione metody nie powodują natychmiastowego zablokowania obiektu, dopóki aktualnie wykonywany wątek nie zakończy synchronizowanego kodu. Jest używany głównie do synchronizacji.
Przykład:
public static void main (String[] args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Q # 43) Różnica między metodą notify () a metodą notifyAll () w języku Java.
Odpowiedź: Poniżej wymieniono różnice między metodą notify () a metoda notifyAll ():
notyfikować() | notifyAll () |
---|---|
Ta metoda służy do wysyłania sygnału w celu wybudzenia pojedynczego wątku w puli oczekiwania. | Ta metoda wysyła sygnał, aby obudzić wszystkie wątki w oczekującej szpuli. |
Q # 44) Jak zatrzymać wątek w Javie? Wyjaśnij, czym jest metoda sleep () w wątku?
Odpowiedź: Możemy zatrzymać wątek za pomocą następujących metod wątku:
- Spanie
- Czekanie
- Zablokowany
Sen: Metoda Sleep () służy do uśpienia aktualnie wykonywanego wątku przez określony czas. Po przebudzeniu wątek może przejść do stanu gotowości do pracy. Więc metoda sleep () jest używana do opóźniania wykonania o jakiś czas.
Jest to metoda statyczna.
Przykład:
Wątek. Sen (2000)
Więc opóźnia sen wątku o 2 milisekundy. Metoda Sleep () rzuca nieprzerwany wyjątek, dlatego musimy otoczyć blok try / catch.
public class ExampleThread implements Runnable{ public static void main (String[] args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } }
Q # 45) Kiedy używać klasy Runnable interface Vs Thread w Javie?
Odpowiedź: Jeśli potrzebujemy naszej klasy do rozszerzania innych klas innych niż wątek, możemy skorzystać z uruchamialnego interfejsu, ponieważ w java możemy rozszerzyć tylko jedną klasę.
Jeśli nie zamierzamy rozszerzać żadnej klasy, możemy rozszerzyć klasę wątku.
Q # 46) Różnica między metodą start () i run () klasy wątku.
Odpowiedź: Start () tworzy nowy wątek, a kod wewnątrz metody run () jest wykonywany w nowym wątku. Jeśli bezpośrednio wywołaliśmy metodę run (), nowy wątek nie zostanie utworzony, a aktualnie wykonywany wątek będzie nadal wykonywał metodę run ().
P # 47) Co to jest wielowątkowość?
Odpowiedź: Wiele wątków jest wykonywanych jednocześnie. Każdy wątek rozpoczyna swój własny stos na podstawie przepływu (lub) priorytetu wątków.
Przykładowy program:
public class MultipleThreads implements Runnable { public static void main (String[] args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here }
Podczas wykonywania pierwszego wiersza JVM wywołuje metodę main, a stos wątków głównych wygląda tak, jak pokazano poniżej.
Gdy egzekucja osiągnie, t.start () line, następnie tworzony jest nowy wątek i nowy stos dla wątku. Teraz JVM przełącza się do nowego wątku, a wątek główny powraca do stanu, w którym można uruchomić.
Te dwa stosy wyglądają tak, jak pokazano poniżej.
Teraz wątek użytkownika wykonał kod wewnątrz metody run ().
Po zakończeniu działania metody run () maszyna JVM przełącza się z powrotem do wątku głównego, a wątek użytkownika kończy zadanie, a stos zniknął.
JVM przełącza się między każdym wątkiem, dopóki oba wątki nie zostaną zakończone. Nazywa się to wielowątkowością.
Q # 48) Wyjaśnij cykl życia wątku w Javie.
Odpowiedź: Wątek ma następujące stany:
- Nowy
- Runnable
- Bieganie
- Niedziałający (zablokowany)
- Zakończony
- Nowy: W stanie New instancja Thread została utworzona, ale metoda start () nie została jeszcze wywołana. Teraz wątek nie jest uważany za żywy.
- Runnable : Wątek jest w stanie runnable po wywołaniu metody start (), ale przed wywołaniem metody run (). Ale wątek może również powrócić do stanu gotowego do pracy z oczekiwania / uśpienia. W tym stanie wątek jest uważany za żywy.
- Bieganie : Wątek jest uruchomiony po wywołaniu metody run (). Teraz wątek rozpoczyna wykonywanie.
- Niedziałający (Zablokowany): Wątek żyje, ale nie można go uruchomić. Nie jest w stanie gotowym do pracy, ale po pewnym czasie powróci do tego stanu. Przykład: czekaj, śpij, blokuj.
- Zakończony : Po zakończeniu metody uruchamiania jest ona przerywana. Teraz wątek nie żyje.
Q # 49) Co to jest synchronizacja?
Odpowiedź: Synchronizacja sprawia, że tylko jeden wątek ma dostęp do bloku kodu w danym momencie. Jeśli wiele wątków uzyskuje dostęp do bloku kodu, na końcu istnieje szansa na niedokładne wyniki. Aby uniknąć tego problemu, możemy zapewnić synchronizację wrażliwego bloku kodów.
Słowo kluczowe synchronized oznacza, że wątek potrzebuje klucza, aby uzyskać dostęp do zsynchronizowanego kodu.
Zamki są na obiekt. Każdy obiekt Java ma blokadę. Zamek ma tylko jeden klucz. Wątek może uzyskać dostęp do metody zsynchronizowanej tylko wtedy, gdy wątek może uzyskać klucz do obiektów do zablokowania.
W tym celu używamy słowa kluczowego „Synchronized”.
Przykład:
public class ExampleThread implements Runnable{ public static void main (String[] args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
P # 50) Jaka jest wada synchronizacji?
Lata: Nie zaleca się synchronizacji w celu wdrożenia wszystkich metod. Ponieważ jeśli jeden wątek uzyskuje dostęp do zsynchronizowanego kodu, następny wątek powinien czekać. Z drugiej strony powoduje to powolne działanie.
P # 51) Co oznacza serializacja?
Odpowiedź: Konwersja pliku na strumień bajtów nosi nazwę serializacji. Ze względów bezpieczeństwa obiekty w pliku są konwertowane na bajty. W tym celu musimy zaimplementować interfejs java.io.Serializable. Nie ma metody do zdefiniowania.
Zmienne oznaczone jako przejściowe nie będą częścią serializacji. Możemy więc pominąć serializację zmiennych w pliku przy użyciu przejściowego słowa kluczowego.
Dowiedz się więcej = >> Serializowalne i klonowalne
P # 52) Jaki jest cel zmiennej przejściowej?
Odpowiedź: Zmienne przejściowe nie są częścią procesu serializacji. Podczas deserializacji wartości zmiennych przejściowych są ustawiane na wartość domyślną. Nie jest używany ze zmiennymi statycznymi.
Przykład:
przejściowe liczby int;
programy, które mogą edytować pliki pdf
P # 53) Jakie metody są używane podczas procesu serializacji i deserializacji?
Odpowiedź: Klasy ObjectOutputStream i ObjectInputStream są java.io wyższego poziomu. pakiet. Będziemy ich używać z klasami niższego poziomu FileOutputStream i FileInputStream.
ObjectOutputStream.writeObject —-> Serializuj obiekt i zapisz serializowany obiekt do pliku.
ObjectInputStream.readObject -> Odczytuje plik i deserializuje obiekt.
Aby zostać serializowanym, obiekt musi implementować interfejs możliwy do serializacji. Jeśli nadklasa zaimplementuje możliwość serializacji, podklasa będzie automatycznie możliwa do serializacji.
P # 54) Jaki jest cel zmiennej lotnej?
Odpowiedź: Wartości zmiennych ulotnych są zawsze odczytywane z pamięci głównej, a nie z pamięci podręcznej wątku. Jest to używane głównie podczas synchronizacji. Ma zastosowanie tylko do zmiennych.
Przykład:
lotna liczba int;
Q # 55) Różnica między serializacją a deserializacją w Javie.
Odpowiedź: Oto różnice między serializacją a deserializacją w java:
Serializacja | Deserializacja |
---|---|
Serializacja to proces służący do konwertowania obiektów na strumień bajtów | Deserializacja to odwrotny proces serializacji, w którym możemy odzyskać obiekty ze strumienia bajtów. |
Obiekt jest serializowany przez zapisanie go jako ObjectOutputStream. | Obiekt jest deserializowany przez odczytanie go z obiektu ObjectInputStream. |
P # 56) Co to jest SerialVersionUID?
Odpowiedź: Za każdym razem, gdy obiekt jest serializowany, obiekt jest oznaczany numerem identyfikacyjnym wersji dla klasy obiektów. Ten identyfikator nosi nazwę SerialVersionUID. Jest to używane podczas deserializacji w celu sprawdzenia, czy nadawca i odbiorca są zgodne z serializacją.
Wniosek
Oto niektóre z podstawowych pytań wywiadowczych dotyczących JAVA, które obejmują zarówno podstawowe, jak i zaawansowane koncepcje programowania w języku Java, a także rozmowy z programistami. Na te pytania odpowiedzieli nasi eksperci JAVA.
Mam nadzieję, że ten samouczek pozwoli Ci szczegółowo zapoznać się z podstawowymi koncepcjami kodowania JAVA. Powyższe wyjaśnienia naprawdę wzbogacą twoją wiedzę i zwiększą twoje zrozumienie programowania w JAVA.
Przygotuj się na pewną rozmowę kwalifikacyjną JAVA.