JavaRush /Blog Java /Random-PL /Podchwytliwe pytania dotyczące języka Java, które często ...

Podchwytliwe pytania dotyczące języka Java, które często są zadawane podczas rozmów kwalifikacyjnych

Opublikowano w grupie Random-PL
Jeśli kiedykolwiek przygotowywałeś się do rozmowy kwalifikacyjnej na stanowisko programisty Java lub zdawałeś jakikolwiek egzamin (niekoniecznie z programowania) w celu uzyskania certyfikatu, to najprawdopodobniej zauważyłeś już, że pytania, jakie zadają, są bardzo konkretne. Wiele z nich skłania do refleksji nad architekturą języka, inne są przeznaczone do głębokiej wiedzy. Są też takie, które bardziej przypominają łamigłówki lub dotyczą niuansów, które bez praktyki bardzo trudno wyczuć. W tym artykule programista Saraans Singh podaje kilka takich pytań dotyczących języka Java. Oczywiście z odpowiedziami. Podchwytliwe pytania dotyczące języka Java, które są często zadawane podczas rozmów kwalifikacyjnych - 11. Co się stanie, jeśli w bloku try/catch umieścisz instrukcję return lub System.exit()? Jest to bardzo popularne pytanie „nadrabiające zaległości” w Javie. Sztuczka polega na tym, że wielu programistów wierzy, że blok finallyi tak zostanie wykonany. To pytanie podważa tę koncepcję, umieszczając instrukcję returnw bloku try/catchlub wywołując z bloku try/catchinstrukcji System.exit (). Odpowiedź na to podchwytliwe pytanie: blok finallyzostanie wykonany, gdy instrukcja zostanie umieszczona returnw bloku try/catchi nie zostanie wykonany, gdy zostanie wywołany z bloku try/catchinstrukcji System.exit (). 2. Czy Java obsługuje dziedziczenie wielokrotne? To bardzo trudne pytanie. Ankieterzy często mówią: jeśli C++ może obsługiwać bezpośrednie wielokrotne dziedziczenie, dlaczego Java nie? Odpowiedź jest nieco bardziej skomplikowana, niż mogłoby się wydawać, ponieważ Java obsługuje dziedziczenie wielu typów, ponieważ zawarty w niej interfejs może rozszerzać inne interfejsy. Jednak język Java nie obsługuje wielokrotnego dziedziczenia implementacji. 3. Czy w przypadku, gdy metoda zgłasza wyjątek NullPointerExceptionw klasie nadrzędnej, można go zastąpić metodą, która zgłasza wyjątek RuntimeException? Kolejne trudne pytanie związane z koncepcjami przeciążenia i przesłaniania. Odpowiedź: Możesz bezpiecznie zgłosić wyjątek klasy nadrzędnej w nadpisanej metodzie NullPointerException – RuntimeException, ale nie możesz zrobić tego samego w przypadku zaznaczonego wyjątku typu Exception. 4. Jak zagwarantować, że wątki będą miały dostęp do zasobów bez zakleszczenia? NN Jeśli nie jesteś dobry w pisaniu kodu wielowątkowego, to pytanie będzie dla ciebie naprawdę trudne. Może to być wyzwanie nawet dla doświadczonego programisty, który nie miał do czynienia z zakleszczeniami i warunkami wyścigowymi. Sztuka polega na kolejności: zakleszczeniu można zapobiec, uwalniając zasoby w odwrotnej kolejności, w jakiej zostały zdobyte. 5. Jaka jest różnica pomiędzy klasami StringBufferi StringBuilderw języku Java? Klasyczne pytanie dotyczące języka Java, przez niektórych programistów uważane za trudne, a przez innych bardzo proste. Klasa StringBuilderzostała wprowadzona w JDK 1.5 i jedyna różnica między nimi polega na tym, że metody klasy lub StringBufferna przykład są zsynchronizowane , podczas gdy odpowiadające im metody klasy nie. Z powodu tej zasadniczej różnicy łączenie ciągów jest szybsze w przypadku . W rzeczywistości nie zaleca się używania, ponieważ w 99% przypadków użycia łączenie ciągów odbywa się w tym samym wątku. 6. Co zwraca wyrażenie 1.0/0.0? Czy zgłosi wyjątek lub spowoduje błąd kompilacji? Kolejne trudne pytanie dotyczące zajęć . Chociaż programiści Java są świadomi prostego typu danych double i klasy , podczas wykonywania operacji zmiennoprzecinkowych nie zwracają wystarczającej uwagi na , i reguły rządzące obliczeniami arytmetycznymi z nimi związanymi. Odpowiedź na to pytanie jest prosta: nie zostanie zgłoszony żaden wyjątek , wartość zostanie zwrócona . 7. Co się stanie, jeśli spróbujesz wstawić obiekt kluczowy do obiektu kluczowego, który już w nim istnieje? To podchwytliwe pytanie jest częścią innego często zadawanego pytania: jak one działają w Javie? to popularny temat, w którym pojawiają się mylące i podchwytliwe pytania dotyczące języka Java. Odpowiedź jest taka, że ​​jeśli spróbujesz ponownie włożyć klucz do , zastąpi on stary, ponieważ klasa nie pozwala na duplikowanie kluczy. Ten sam klucz oznacza ten sam kod skrótu, więc znajdzie się w tym samym miejscu w segmencie skrótu. Na podstawie materiałów Quoralength()capacity()append()StringBuilderStringBuilderStringBufferStringBufferDoubleDoubleDouble.INFINITYNaN-0.0ArithmeticExceptionDouble.INFINITYHashMapHashMapHashMapHashMapHashMap
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION