CodeGym /Blog Java /Random-PL /Podchwytliwe pytania Java często zadawane na rozmowach kw...
John Squirrels
Poziom 41
San Francisco

Podchwytliwe pytania Java często zadawane na rozmowach kwalifikacyjnych

Opublikowano w grupie Random-PL
Jeśli kiedykolwiek przygotowywałeś się do rozmowy kwalifikacyjnej na stanowisko programisty Java lub zdawałeś jakikolwiek egzamin certyfikujący (niekoniecznie z programowania), to zapewne zauważyłeś już, że zadawane tam pytania są bardzo konkretne. Wiele z nich zmusza do zastanowienia się nad projektem języka. Niektóre mają na celu zbadanie głębi twojej wiedzy. Są pytania, które bardziej przypominają łamigłówki niż cokolwiek innego, podczas gdy inne dotyczą niuansów języka, które są bardzo trudne do zrozumienia bez praktyki. W tym artykule programista Sarans Sing przedstawia kilka takich pytań dotyczących języka Java. Oczywiście z odpowiedziami. Podchwytliwe pytania Java często zadawane na rozmowach kwalifikacyjnych - 11. Co się stanie, jeśli wstawię instrukcję return lub System.exit() do bloku try/catch? To bardzo popularne i subtelne pytanie w Javie. Sztuczka polega na tym, że wielu programistów uważa, że finally​​blok jest zawsze wykonywany. Umieszczając returnoświadczenie w try/catchbloku lub dzwoniąc System.exit()z wnętrza try/catchbloku, pytanie podaje w wątpliwość to przekonanie. Odpowiedź na to podchwytliwe pytanie brzmi: blok finallyzostanie wykonany, gdy returnw bloku zostanie umieszczona instrukcja try/catch, ale nie zostanie wykonany, gdy System.exit()zostanie wywołany z wnętrza try/catchbloku. 2. Czy Java obsługuje dziedziczenie wielokrotne? To bardzo trudne pytanie. Ankieterzy często pytają: „Jeśli C++ obsługuje bezpośrednie dziedziczenie wielokrotne, to dlaczego Java nie może?” odpowiedź _jest nieco bardziej skomplikowane, niż mogłoby się wydawać, ponieważ Java obsługuje dziedziczenie wielu typów. W końcu interfejs Java może rozszerzać inne interfejsy. To powiedziawszy, Java nie obsługuje wielokrotnego dziedziczenia implementacji. 3. Jeśli metoda w klasie nadrzędnej zgłasza NullPointerExceptions, czy można ją przesłonić metodą, która rzuca RuntimeExceptions? To kolejne trudne pytanie związane z przeciążaniem i nadpisywaniem. Odpowiedź: Przesłonięta metoda może bezpiecznie rzucić NullPointerExceptionklasę nadrzędną — RuntimeException, ale nie możesz zrobić tego samego ze sprawdzonym typem wyjątku, takim jak Exception. 4. W jaki sposób gwarantujecie, że Nwątki będą miały dostęp do Nzasobów bez impasu? Jeśli pisanie kodu wielowątkowego nie jest twoją mocną stroną, możesz naprawdę natknąć się na to pytanie. Może to być trudne nawet dla doświadczonego programisty, który nie spotkał się z zakleszczeniami i warunkami wyścigu. Cała sztuczka polega tutaj na kolejności: możesz zapobiec impasowi, uwalniając zasoby w odwrotnej kolejności, w jakiej zostały pozyskane. 5. Jaka jest różnica między klasami StringBufferi StringBuilderw Javie? To klasyczne pytanie w języku Java, które niektórzy programiści uważają za trudne, a inni za bardzo proste. Klasa StringBuilderpojawiła się w JDK 1.5. Jedyna różnica między tymi klasami polega na tym, że StringBuffermetody, takie jak length(), capacity(), i append(), są zsynchronizowane, podczas gdy odpowiednie metody wStringBuildernie są. Ta podstawowa różnica oznacza, że ​​konkatenacja łańcuchów jest szybsza z StringBuilderniż z StringBuffer. W rzeczywistości używanie StringBuffernie jest zalecane, ponieważ konkatenacja łańcuchów odbywa się w tym samym wątku w 99% przypadków. 6. Jaki jest wynik oceny wyrażenia 1,0/0,0? Czy spowoduje wyjątek lub błąd kompilacji? To kolejne trudne pytanie dotyczące klasy. Programiści Java są świadomi istnienia prymitywnego podwójnego typu danych i klasy , ale podczas wykonywania operacji zmiennoprzecinkowych nie zwracają wystarczającej uwagi na , , , i reguły rządzące związanymi z nimi obliczeniami arytmetycznymi. Odpowiedź na to pytanie jest prosta: aPodchwytliwe pytania Java często zadawane na rozmowach kwalifikacyjnych - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionnie zostanie rzucony; wyrażenie ma wartość Double.POSITIVE_INFINITY. 7. Co się stanie, jeśli spróbujesz włożyć klucz do komputera, HashMapktóry już zawiera ten klucz? To podchwytliwe pytanie jest częścią innego często zadawanego pytania: jak działa HashMapw Javie? HashMapjest popularnym źródłem mylących i podchwytliwych pytań dotyczących języka Java. Oto odpowiedź: jeśli spróbujesz ponownie wstawić klucz do pliku HashMap, stary klucz zostanie zastąpiony, ponieważ HashMapklasa nie zezwala na powielanie kluczy. I ten sam klucz otrzyma ten sam kod skrótu, co oznacza, że ​​skończy w tym samym miejscu w zasobniku z haszem. Na podstawie materiałów Quora
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION