Truly zaawansowane Java Interview Questions

2

Macie jakieś?

Pytam bo przejrzałem jakieś pierwszych 20 stron google'a pod hasłem "java advanced interview questions" i po pierwsze co mnie wneriwa to 80% z tych pytań tam nie dotyczy javy tylko swinga, zagadnień sprzed Javy 5 (o których już nikt nie będzie pytał) albo jakieś banały typu hashCode/equals, referencje, struktury języka (try/finally/breaking z nested pętli). Dodatkowo 50% pytań w tych stronach pokrywa się ze sobą.

Dlatego pytam, poleci ktoś jakieś hardcore'owe pytania? Jak nie to niestety będę musiał szukać dalej sam.

0

Musiałbyś chyba bardziej sprecyzować czy chodzi Ci o core javę, czy też o jakieś popularne biblioteki i frameworki?

3

Myślę że

  • concurrency - to zawsze jest trudne, czy to niskopoziomowo na poziomie wait/notify czy fork/join czy ExecutorService czy @Async
  • głęboki Hibernate jak np optymalizacja zpaytań, N+1 problem, cachowanie
  • jakimi narzędziami kontrolować użycie zasobów (chyba JMeter czy inne metryki)
  • ogólno architekturowe rzeczy i pytania np dotyczące transakcji w systemie rozproszonym
  • java 8 i konkretne API streamów
2

Przykłady.
Różnica między WeakReference a SoftReference. A jak w ogóle można użyć PhantomReference.

Z tych so się nawet tu ostatnio pojawiło różnica między AtomicInteger a volatale int.

Jak działa ThreadLocal.

Odwieczne pytanie o dynamic proxy (czemu nie działaja adnotacje na this.callOtherAnnotatedMethod() ).

Różnica w działaniu lambd:

 list.forEach( x -> System.out.println(x));

vs

 list.forEach( System.out::println);

Generalnie to pytanie jest o cel pytań... Rekrutujesz ? Na jakie stanowisko?

Sam z tego zestawu wyżej zadałbym tylko o this.call, bo to coś co mastah powinien wiedzieć , się spotkać. Zwłaszcza jak to jakiś springowiec.

Reszta imo za trudna na rozmowę nawet dla dobrego, chyba, że to jakiś magik i mu widać, że dobrze idzie. Programista Java może 10 lat skutecznie i dobrze programować i nie wiedzieć.

Ogólnie zawsze jak się zadaje pytania to się wydają łatwe - przychodzi, nawet niezły gość na rozmowę, to może nie zrozumieć o co pytają, stres zje.
Wole dawać kawałki kodu do rozgryzienia, na kompie. Np. bardzo lubie zadania - zrefaktoruj.

1

@jarekr000000:

Myślisz, że pytania o Soft/Weak referencje i rooty gb, jego strukturę itd pojawiają się na stanowisku javowca webowego ? Kolega miał takie pytania na Androidzie na seniora w Tom Tomie, średnio odpowiedział, ale i tak go przyjęli, ale na Androidzie jest to chyba bardziej zrozumiałe. Ja osobiście poczytałem sobie sporo o tym przed rozmową pół roku temu, ale teraz już to średnio pamiętam. Takich pytań totalnie nie było, ale akurat o ThreadLocal mnie zapytali.

N+1 to chyba zobaczy każdy w logach jak czyta kolekcje i będzie iterował.

Faktycznie ostatnio coraz bardziej dochodzę do tego, że spring to jedna wielka magia.

Jeśli chodzi o wielowątkowość to praktycznie nie używam i przyznaję się, że wiele nie wiem.

Ale skorzystam z tego i zapytam Ciebie o jpa w kontekście cqrsa. Czy da się skonfigurowac jakoś to tak, aby zapytania w części query były zoptymalizowane na READ, a nie READ-WRITE, które jest standardowe(chyba?). Myślałem o tym, że poza widoki zmaterializowanymi lepszym rozwiązaniem do części query byłoby np jooq?

1

To że nie ma takich pytac o WeakReference czy algorytmy GC to tylko świadczy o tym że rekrutacja jest słaba. Takie pytania powinny być od poziomu ogarnietego Juniora, bo ja rozumiem że gościu który dopiero wchodzi w Jave albo koduje w niej 6 mesięcy (komercyjnie czy jakiś prosty open source) ale nie typ co siedzi w niej 2-3 lata oO

EDIT:
A N+1 nawet nie mówcie, jak wspomniałem 2 prace temu o N+1 i fetch joinach to nic nie wiedzieli ludzie co w tym ekosystemie Spring/JEE/Hibernate pisali po 4 lata. Ale w sumie JPA jest zryte totalnie to sie nie dziwie :D

2

Tak jak napisałem wyżej uważam, że te pytania są zwykle za trudne nawet na seniora. Zbyt specyficzna wiedza. Na zwykłą webówkę, bez sensu.
Takie pytania częśto służą przechwaleniu się wiedzą przed rekrytującym się ... i niczemyu wincyj.
Co do jpa w CQRS, nie wiem.
z Jpa korzystam z select new T(). W jednym z serwisów ustawialiśmy też ceonnection.setReadOnly() w puli do czytania. Zupełnie już nie pamiętam czy to naprawdę pomagało (raczej tak, ale nie wiem o ile), to był chory system.

7

imo lepiej dac zadanie nietypowe dla (wiekszosci) javowcow i patrzec jak sobie radzi, np:

  • znajdz deadlocka na podstawie dumpa
  • napisz jakas thread safe kolekcje bez lockow
  • system sie dlawi, zrob zeby byl responsywny bez zmieniania kodu
  • napisz kod podajacy rozmiar L1 cache
  • napisz dowolny kod bez uzywania nulli, dziedziczenia, setterow i adnotacji (no ok, tu troche poplynelam, mimo wszystko chcemy kogos zatrudnic ;))
1

@katelx: no właśnie z tymi bez setterów i adnotacji to tez obawiam się że może być za cięzko :D

0

To ostatnie spoko - jeszcze bez zmiennych, ifów, pętli i exceptionów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0