Przeglądałem Pytania, na które każdy dobry programista .Net powinien móc odpowiedzieć i byłem pod wielkim wrażeniem treści i podejścia do tego pytania, więc w tym samym duchu zadaję to pytanie deweloperowi Java / Java EE.
Jak myślisz, na jakie pytania powinien odpowiedzieć dobry programista Java / Java EE?
Oznaczam to pytanie jako wiki społeczności, ponieważ nie jest ono specyficzne dla użytkownika i ma na celu służyć całej społeczności programistów.
Czekam na niesamowite odpowiedzi.
EDYCJA : Proszę również odpowiadać na pytania, zgodnie z sugestiami w komentarzach, aby ludzie również mogli dowiedzieć się czegoś nowego na temat języka.
java
jakarta-ee
Rachel
źródło
źródło
Odpowiedzi:
Jaka jest zależność między hashCode () i equals ()? Jakie jest znaczenie tych metod? Jakie są wymagania dotyczące ich wdrożenia?
źródło
Jaka jest różnica między Set, Map i List?
Nadal jestem zdumiony, jak wiele osób nie zna tego w wywiadzie telefonicznym.
źródło
Większość ludzi odpowiada „nie”, ponieważ wiedzą, że java nie ma wielokrotnego dziedziczenia. Jednak interfejs może nadal rozszerzać wiele interfejsów (ale klasa nie może rozszerzać wielu klas). To nie prowadzi do problemu z diamentami.
Jeśli odpowiedź brzmi „nie”, ankieter powinien zapytać „dlaczego miałoby to być zabronione?”. Wtedy zaczynasz o tym myśleć i powinieneś zdać sobie sprawę, że nie ma z tym problemu.
Więc nauczyłeś się czegoś (sam) podczas rozmowy kwalifikacyjnej i pokazałeś ankieterowi, że jesteś w stanie rozumować o klasach, przedmiotach, dziedziczeniu, polimorfizmie itp. To właściwie dużo lepsze niż kandydat, który zna odpowiedź na pamięć, ale nie. zrozum dlaczego
źródło
Wykorzystanie końcowego słowa kluczowego w wywołaniach metod. Na przykład, dlaczego test metody w poniższym kodzie nie daje żadnego błędu kompilacji pomimo użycia końcowego kwalifikatora dla parametru metody.
źródło
final
słowo kluczowe zostało zastosowane doName
obiektu, a nie doname
pola klasyName
n
jest zadeklarowany jako ostateczny, co oznacza, że nie można go ponownie przypisać wtest
treści metody. Nie powoduje błędu, ponieważ metodatest
nie próbuje ponownie przypisać parametru, a jedynie ustawia właściwość parametru ...n = new Name("test");
spowodowałoby błąd kompilacji ...Pewnym jest porównanie stringów. Różnica pomiędzy
źródło
Podchwytliwe pytanie: jakie rodzaje parametrów są przekazywane przez odwołanie w Javie?
To niesamowite, jak wielu ludzi wciąż papuguje mantrę „prymitywy są przekazywane przez wartość, przedmioty są przekazywane przez odniesienie”.
źródło
Powiedziałeś „dobrze”, „programista”. Oto moje 2 centy .. :)
W przypadku J2EE:
Myślę, że jest ich wiele, wiele, wiele więcej, ale na razie to wystarczy :)
źródło
Jaka jest różnica między String, StringBuffer i StringBuilder?
źródło
„Co to jest deskryptor wdrożenia?”
Jeśli kandydat mimowolnie wzdryga się, ma doświadczenie w pracy z EJB starszymi niż 3.0.
źródło
Wiele pytań i wywiadów jest dostępnych pod adresem http://www.techinterviews.com/interview-questions/java i nie widzę wartości w kopiowaniu / wklejaniu wybranych z nich.
Nie, to do Ciebie należy stworzenie własnej kompilacji rzeczy, które uważasz za ważne. Osobiście zawsze postępuję w dwóch krokach: najpierw kilka pytań, aby uzyskać podstawowe pojęcie o doświadczeniu i umiejętnościach, a następnie sytuacja, w której można rozwiązać problem. Naprawdę nie jestem przekonany, że umiejętność odpowiedzi na jakiekolwiek znane pytania sprawia, że jesteś dobrym lub złym rozwiązaniem nieznanych problemów. Dlatego wolę prosić ludzi o rozwiązanie danego problemu, stawiać im pewne wymagania i prosić o napisanie kodu (ale nie na papierze). Daję im trochę czasu, aby do mnie wrócili i sprawdzili, jak to zrobili, jaki jest styl kodowania, jak wykorzystali sugerowane API itp.
Biorąc to wszystko pod uwagę, moim ulubionym pytaniem jest „czego nie lubisz w Javie?” (w duchu tego ). To naprawdę doskonałe pytanie, daje natychmiastową informację zwrotną na temat tego, jak bardzo kandydat używał Javy i badał jej API i czy po prostu wierzy w to, czy nie (jak napisał OP).
Aktualizacja: Zgodnie z sugestią CPerkins, lepsze sformułowanie pytania sugerowanego powyżej może brzmieć: „Co najbardziej chciałbyś zmienić w Javie?”. I rzeczywiście, wolę ten sposób.
źródło
Co to jest „System”, „out”, „println” w System.out.println? Co się dzieje, gdy dzwonisz do HashMap?
źródło
źródło
new
lub^
lub>>
,<<
i>>>
). Gdybym mógł zmienić inną rzecz, oznaczałoby to dodanie prawdziwej semantyki wywołania przez referencję. Trzecią rzeczą byłoby dodanieunsigned
typów całkowitych.źródło
Jeśli zatrudniasz absolwentów z "doświadczeniem" w Javie, proste pytanie, takie jak Napisz kod, który spowoduje wyrzucenie wyjątku NullPointerException, może rozróżnić, którzy kandydaci ostatnio używali języka Java, i nie zatrzymują się po ukończeniu jednostki / kursu.
źródło
Co zostanie wydrukowane?
Odpowiedź : CoolReturn + 1
Nieco trudniejsze:
Odpowiedź : CoolReturn
źródło
Jaka jest różnica między klasą abstrakcyjną a interfejsem? Kiedy użyłbyś każdego z nich?
Wielu programistów Javy o tym nie wie, pytałem większość ludzi na moim kursie informatyki na uniwersytecie i zdecydowana większość nie potrafiła na nie odpowiedzieć.
źródło
Proste pytania, takie jak:
Chociaż są one bardzo podstawowe, wielu programistów nie zna odpowiedzi. Sugeruję, aby zadawać je przed zapytaniami związanymi z kodem.
źródło
5 najpopularniejszych pytań dotyczących J2EE / JEE
Lista pytań dotyczących oprogramowania pośredniego J2EE / JEE, z którymi się spotkałem, jest wyjątkowo długa, ale oto 5 najczęściej zadawanych mi pytań, które doprowadziły do dobrych dyskusji:
To pytanie zwykle prowadzi do różnych interesujących dyskusji na temat trujących wiadomości, kolejek błędów itp.
To pytanie zazwyczaj pozwala mi omówić, kiedy używać stałych abonentów, kiedy korzystać z kolejek itp.,
Prowadzi to do wspaniałych dyskusji na temat leniwego ładowania, ponownego nawadniania itp. Doprowadziło nawet do porównania i przeciwstawienia JPA z fasolami Entity. Uważam, że warto być przygotowanym i mieć jasne koncepcje.
Każde rozwiązanie, od prostego serwera WWW, po zaawansowane rozwiązania SOAP / REST i inne, powinno być wystarczająco dobre. Ponadto, na podstawie ankietera, czasami prowadzi to do bardzo interesujących dyskusji na tematy takie jak niektóre pomysły projektowe - najpierw WSDL, styl doc, pośrednicy SOAP itp., Może to prowadzić do pytań, takich jak lista ulepszeń w JAX-WS nad JAX -RPC lub SOAP1.2 zamiast SOAP1.1, odpowiedzi na które są zwykle oparte na tym, ile pamiętam.
To pytanie jest zadawane na wiele sposobów, począwszy od wzorca lokalizatora usług, po
javax.naming.Context
pytania.Kolejne trudne pytanie, które wydaje mi się niepokojące, ale często się z nimi mierzyłem, brzmi: w jaki sposób biblioteki zależne są pakowane do archiwum?
lub Widoczność różnych klas w dołączonym archiwum.
Jeśli dyskusja nie prowadzi do hierarchii modułów ładujących klas różnych serwerów aplikacji, archiwów zasobów itp., Najlepiej zrezygnować i przejść dalej.
5 najważniejszych pytań dotyczących języka Java:
To jest matka wszystkich pytań. Kiedy już będziesz w stanie skutecznie wylądować ankietera w tym obszarze i jeśli jesteś przygotowany, reszta wywiadu zwykle zostaje tutaj. Bądź pewny, wiedząc
Set
,List
,Map
, oraz znaczenieObject.equals()
iObject.hashCode()
w każdej implementacji tych interfejsów.Są dobre, jeśli ankieter ma otwarty umysł. Jeśli ankieter ma już na myśli konkretne rozwiązanie, a twoje nie pasuje do jego / jej, jesteś prawie skazany na zagładę. Najlepiej zgodzić się z odpowiedzią „Rozumiem, że inne rozwiązania są możliwe”.
Jest to pewne pytanie zadane przez wielu ankieterów. Choć tego nienawidzę, najlepiej być przygotowanym. Przynajmniej pamiętanie kilku, z którymi pracowałem, i prowadzenie dyskusji w innym kierunku, w dużej mierze i skutecznie omija i rozwiązuje problem.
Wielokrotnie byłem proszony o wskazanie wzorca GoF w Java API. Lepiej bądź na to przygotowany.
źródło
Różnica między serwerem WWW a kontenerem WWW
źródło
Co najbardziej lubisz najmniej w Javie i dlaczego?
źródło
dlaczego miałbyś zastąpić metodę toString ()?
źródło
Bardziej czyste pytanie o Javę:
Jaka jest różnica między poprawnie i słusznie i prawidłowo? Niewiele osób naprawdę rozumie, jak działa czekanie.
Jak należy sobie radzić z InterruptedExceptions?
źródło
To jest pytanie, które spotkałem w wywiadzie.
Dlaczego metoda main w Javie jest nazywana public static void main (String [] args)?
Odpowiedź:
1. Funkcja main () musi być zadeklarowana jako publiczna, ponieważ jest wywoływana przez maszynę JVM za każdym razem, gdy rozpoczyna się wykonywanie programu. JVM nie należy do naszego pakietu programu.
Aby uzyskać dostęp do maina poza pakietem, musimy zadeklarować go jako publiczny.Jeśli zadeklarujemy go jako coś innego niż publiczny, wyświetla się błąd wykonania, ale nie błąd czasu kompilacji
2. main () musi być zadeklarowane jako statyczne, ponieważ jeśli metoda jest zadeklarowana jako statyczna, wówczas możemy wywołać tę metodę poza klasą za pomocą ClassName.methodName ();
JVM najpierw załaduje klasę Test, sprawdzi argumenty wiersza poleceń i wywoła metodę główną jako Test.main ();
3. main () musi być zadeklarowane jako nieważne main (), ponieważ maszyna JVM nie oczekuje żadnej wartości z funkcji main ().
Jeśli podano inny typ zwracany, jest to RunTimeError, tj. NoSuchMethodFoundError.
4. Funkcja main () musi mieć argumenty typu String jako tablice, ponieważ JVM wywołuje metodę main, przekazując argument wiersza poleceń. Ponieważ są one przechowywane w obiekcie tablicy łańcuchowej, są one przekazywane jako argument do funkcji main ().
źródło
public static void main(String... args)
jeśli masz na to ochotę :-) Ma taki sam podpis jak[]
Jaka jest różnica między J2SE i J2EE (lub JSE i JEE)?
Deweloper powinien być w stanie wskazać, że edycja Enterprise jest w zasadzie definicją interfejsu (tj. Specyfikacją), którą mogą zaimplementować dostawcy. Natomiast edycja standardowa jest implementacją samą w sobie
źródło
Jak
volatile
wpływa na optymalizację kodu przez kompilator?źródło
A co z tym, czym jest ziarno sesji i opisz niektóre różnice między fasolami sesyjnymi bezstanowymi i stanowymi.
źródło
Napisz program akceptujący dwie liczby całkowite i wypisuj największą z dwóch liczb do pliku w wybranym przez Ciebie miejscu. Teraz opisz, co robi każde stwierdzenie.
Możliwe jest dość głębokie przeanalizowanie, począwszy od znaczenia instrukcji importu, aż do nieprawidłowego zakończenia
źródło
Rdzeń: 1. Co to są wyjątki zaznaczone i niezaznaczone? 2. Podczas dodawania nowego wyjątku w kodzie jakiego typu (zaznaczone / niezaznaczone) użyć kiedy?
Servlet: 1. Jaka jest różnica między response.sendRedirect () a request.forward ()?
źródło
Jak
threads
działa Co to jestsynchronized
? Jeślisynchronized
w klasie są dwie metody, to mogą być wykonywane jednocześnie przez dwa wątki. Będziesz zaskoczony, gdy wiele osób odpowie „ tak” . Następnie wszystkie pytania związane z wątkami, np. Zakleszczenie , głód itp.źródło
thread
z metody, nikt inny niethread
może uzyskać blokady.Jedną rzeczą, której wielu programistów Java nie wie, jest to, że ciągi znaków są niezmienne, więc używaj StringBuilder lub StringBuffer!
źródło
s += "a" + "b" + "c"
się wStringbuilder.append(...)
scenariusz. Ale to nie zoptymalizujefor
pętli. Kod w tej odpowiedzi utworzy łącznie 201 ciągówchar[]
znaków , 100 obiektów StringBuilders i (w zależności od implementacji) 300 różnych elementów wewnątrz tych obiektów StringBuilders oraz szacunkowo ponad 425 tys. Znaków. Zmiana go na użycie StringBuilder bezpośrednio zredukuje to do 1 String, 1 StringBuilder i 13-15 wewnętrznychchar[]
znaków, używając tylko ~ 8k znaków zamiast tak, jak powinno.