Rzeczy do przejrzenia przed rozmową kwalifikacyjną w języku Java
Źródło: Medium W tym artykule znajdziesz 17 wskazówek od doświadczonego programisty, które pomogą Ci w rozmowie kwalifikacyjnej w języku Java. Pracuję w branży IT od ponad 20 lat i większość tego czasu spędziłem pracując z Javą. Ponadto zdobyłem duże doświadczenie w rozmowach kwalifikacyjnych z programistami Java. Chociaż język Java stale się rozwija, podstawowe koncepcje pozostają w dużej mierze takie same. Oto kilka wskazówek, którymi chcę się podzielić z początkującymi programistami, zanim pójdą na rozmowę kwalifikacyjną. Jeśli je powtórzysz, uchroni Cię to przed poważnymi błędami.-
Klasa Object znajduje się w katalogu głównym hierarchii klas Java. Wszystkie klasy Java wywodzą się z Object . Nawet jeśli klasa nie rozszerza jawnie żadnej klasy, rozszerza Object . Jednak klasa może jawnie rozszerzać Object .
-
W Javie można rozszerzyć tylko jedną klasę (wielokrotne dziedziczenie nie jest dozwolone ze względu na niejednoznaczność). Jednak klasa może implementować dowolną liczbę interfejsów jednocześnie.
-
Interfejs rozszerza inny interfejs (w przeciwieństwie do implementacji).
-
W Javie istnieją cztery modyfikatory dostępu: publiczny (dostępny dla wszystkich), chroniony (dostępny tylko dla podklas), prywatny (dostępny tylko w ramach jednej klasy), domyślny (dostępny w ramach jednego pakietu). Należy zauważyć, że podklasy tej samej klasy mogą znajdować się w różnych pakietach. Klasa nadrzędna i podklasy nie muszą być częścią tego samego pakietu.
-
Ciąg klasy jest niezmienny. Niezmienność oznacza, że sama klasa String nie udostępnia żadnych metod zastępowania wartości w odwołaniu typu String . Jeśli chcesz zastąpić wartość odwołania w postaci ciągu znaków, musisz jawnie przypisać wartość za pomocą operatora = . Porównaj to z klasami StringBuffer lub StringBuilder , które mają metody takie jak append, więc nie musisz używać tam operatora = .
-
ConcurrentHashMap jest bardziej wydajny niż Hashtable . ConcurrentHashMap działa na segmentach podstawowej struktury danych, w której operacja zapisu blokuje tylko określony segment (niezależnie od tego, do którego segmentu należy klucz). Jednak w Hashtable cała struktura danych zostanie zablokowana.
-
ConcurrentHashMap jest wolniejszy niż HashMap , ponieważ HashMap nie implementuje bezpieczeństwa wątków. HashMap może zgłosić wyjątek ConcurrentModificationException , jeśli wątek wykonuje iterację po HashMap , a inny wątek próbuje zmodyfikować tę samą HashMap . ConcurrentHashMap nie zgłosi tutaj wyjątku.
-
Jak zaimplementować równość dwóch obiektów tej samej klasy, którą zdefiniowałeś? Odpowiedź: Można to zrobić, zastępując metodę hashcode() .
-
Jaki jest domyślny wynik metody toString() ? Odpowiedź: Jest to połączenie nazwy klasy, znaku @ i wartości hashcode() .
-
Jak zaimplementować polimorfizm w Javie? Jednym ze sposobów osiągnięcia tego jest przeciążenie metody. Innym sposobem jest zastąpienie metody.
-
Jak wywołać konstruktor nadklasy z klasy podrzędnej? Odpowiedź: Można to zrobić za pomocą słowa kluczowego super() . Metoda super() bez argumentów jest zawsze wywoływana, nawet jeśli nie jest to wyraźnie określone. Należy jawnie określić metodę super() z argumentem. Wywołanie super() (z argumentem lub bez) musi zawsze być pierwszą linią konstruktora klasy potomnej, jeśli ma zostać wywołane.
-
Co to są wyjątki zaznaczone i niesprawdzone? Odpowiedź: Sprawdzone wyjątki to te, które muszą zostać zadeklarowane lub przechwycone w metodzie, w której mają zostać zgłoszone. Niesprawdzony wyjątek nie ma tego ograniczenia. java.io.IOException jest przykładem sprawdzonego wyjątku. Niesprawdzone wyjątki pochodzą z klasy RunTimeException .
-
Klasą główną hierarchii wyjątków jest Throwable (co z kolei niejawnie rozszerza Object ). Wyjątek i błąd pochodzą z Throwable .
-
Od wersji Java 8 metody mogą mieć implementację w interfejsie. Metody domyślne i metody statyczne mogą mieć implementacje.
-
Nie można utworzyć instancji klasy kwalifikującej się jako abstrakcyjna . Każda klasa, która nie udostępnia treści żadnej z metod, musi zostać zadeklarowana jako abstrakcyjna. Programista może zadeklarować klasę jako abstrakcyjną, nawet jeśli wszystkie metody mają treść - nie jest to jednak zbyt zalecane, ponieważ w tym przypadku nie można utworzyć instancji klasy.
-
Ostatnich zajęć nie można przedłużyć. Zmiennej końcowej nie można przypisać innej wartości. Nie można zastąpić metody końcowej .
-
Jakie słowa kluczowe są wymagane w konstrukcji try-catch-finally ? Może to być try-catch , try-finale lub wszystkie trzy. W tym przypadku catch nie jest wymaganym słowem kluczowym.
Jaka jest różnica między wyliczeniem a iteratorem w Javie?
Źródło: Rrtutors W tym poście omówiono różnice między wyliczeniem a iteracją w Javie. Pakiet Java.util udostępnia dwa interfejsy do przeglądania elementów obiektu Collection : Enumeration i Iterator . Mimo że oba przechodzą przez obiekt Collection , istnieją między nimi pewne różnice.Różnice między wyliczeniem a iteratorem
-
Czas dodany do JDK: Są wprowadzane w różnym czasie. Enum zostało wprowadzone w JDK 1.0, natomiast iterator został wprowadzony w JDK 1.2.
-
Usuwanie elementów: To główna różnica między nimi. W interfejsie Iteratora możemy usunąć element podczas iteracji po obiekcie Collection , natomiast nie możemy go zmienić podczas iteracji po obiekcie Collection za pomocą Enumeration . Dzieje się tak, ponieważ interfejs Iteratora ma metodę usuwania() , ale interfejs Enumeration nie.
-
Typ operacji: Iterator ma typ operacji „fail-fast”, a wyliczenie ma typ operacji „fail-safe”. W rezultacie Iterator zgłasza wyjątek ConcurrentModificationException , gdy kolekcja zostanie zmodyfikowana podczas iteracji, chyba że zostanie użyta jego własna metoda usuwania() , podczas gdy Enumeration nie zgłasza żadnego wyjątku, gdy kolekcja jest modyfikowana podczas iteracji.
Przykłady wyliczeń i iteratorów w Javie
Przykład wyliczenia
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
public class Enumeration_Example {
public static void main(String[] args) {
List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "Apple", "HP"}));
Vector vectali = new Vector(laptoplist);
delete(vectali, "Samsung");
}
private static void delete(Vector vectali, String laptop) {
Enumeration lapi = vectali.elements();
while (lapi.hasMoreElements()) {
String s = (String) lapi.nextElement();
if (s.equals(laptop)) {
vectali.remove(laptop);
}
}
System.out.println("The Laptop brands includes:");
lapi = vectali.elements();
while (lapi.hasMoreElements()) {
System.out.println(lapi.nextElement());
}
}
}
Wniosek:
Przykład iteratora:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
public class Iterator_example {
public static void main(String[] args) {
List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "HP", "Apple"}));
Vector vectali = new Vector(laptoplist);
delete(vectali, "HP");
}
private static void delete(Vector vectali, String name) {
Iterator a = vectali.iterator();
while (a.hasNext()) {
String s = (String) a.next();
if (s.equals(name)) {
a.remove();
}
}
// Display the names
System.out.println("The laptop brand includes:");
a = vectali.iterator();
while (a.hasNext()) {
System.out.println(a.next());
}
}
}
Wniosek:
GO TO FULL VERSION