Wpis z mikrobloga

πŸ“Š Status
πŸ“ 60 wysΕ‚anych CV
πŸ“ž 15 rozmΓ³w z HR
πŸ’» 4 rozmowy techniczne
πŸ•‰οΈ 3 rozmowy prowadziΕ‚ obcokrajowiec
β›” wszystkie zakoΕ„czone negatywnie

Spróbuję sobie przypomnieć kilka rozmów technicznych.

Ostatnia rozmowa
Rozmowę prowadził Hindus po angielsku. Kazał opowiedzieć o dotychczasowych projektach, a następnie odpalić edytor tekstu bez podpowiadania składni i pisać kod na żywo. Dyktował, co trzeba zrobić. Do napisania była klasa POJO (nie wolno używać Lomboka ani klas pomocniczych), a pod spodem stworzyć Set z dwoma instancjami obiektu. Następnie stworzyć taki sam obiekt i go dodać do zbioru. Pytanie, w jaki sposób kolekcja ocenia, czy to ten sam element. Trzeba było wyjaśnić hashCode, equals, ale maglował, aby szczegółowo wyjaśnić, co i w jakiej kolejności jest wywoływane. Kazał napisać equals().

Trochę się na tym temacie wyłożyłem. Dopiero teraz zauważyłem, że HashSet wewnętrznie wykorzystuje HashMap. Wcześniej nie było potrzeby zaglądać do kodu Map, bo nie było co tam debugować. No a w HashMap

return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
W mapie hash jest wymagany do wyboru kubełka, a dopiero potem odpalany jest equals(), aby porównać obiekty w ramach tego samego kubełka i to wiedziałem od czasu zdawania OCP 11, ale na rozmowie wszystko mi się pokićkało.

PadΕ‚y teΕΌ pytania ze Springa, jakie znam Scope, a jak je wymieniΕ‚em, to po co siΔ™ uΕΌywa Prorotype, w jakich przypadkach oprΓ³cz testΓ³w i czy zadziaΕ‚a wstrzykniΔ™cie beanu Prototype do Singleton (lub na odwrΓ³t).

Ostatnie pytanie to typy architektury i tu do koΕ„ca nie wiedziaΕ‚em, o co pyta, bo nie o DDD.

Gdyby siΔ™ udaΕ‚o, to jeszcze 2 etapy - live coding z klientem i rozmowa z menedΕΌerem.

Poprzednia rozmowa
Rozmowę prowadzili Polacy. Lecieli po CV i zadawali pytania z każdej wymienionej technologii. Najwięcej z Javy. Wymień klasy i interfejsy kolekcji. Jak działają. Co to są interfejsy funkcyjne i jakie znam standardowe, kiedy się ich używa, jakie dokładnie mają metody, co przyjmują i co zwracają. Czym się różni peek od map. Jakie znam sposoby uwierzytelnienia HTTP. Pokazany kod klasy i jak zapewnić bezpieczeństwo wątków. Jakie znam mechanizmy. Jak podzielić zadanie na podzadania i jakie znam typy executorów. Czym się różni współbieżność od zrównoleglania. Czym się różni overload od override. Kilka pytań ze Springa, w tym scopes beanów. Kilka pytań z pisania testów. Kilka pytań z baz danych i SQL, w tym jak zoptymalizować zapytanie. Kilka pytań z MongoDB, w jaki sposób przechowuje dane, jakie znam agregacje i jak je wywołać w Javie. Komunikacja między aplikacjami lub instancjami tej samej aplikacji - jakie znam sposoby na przechowanie wspólnego stanu. Angular. Jakie znam sposoby na wymianę danych między komponentami, których nie wiąże bezpośrednia relacja i jak stworzyć osobne instancje serwisu dla całej gałęzi komponentów.

Wszystkich pytań nie pamiętam, ale na wszystkie odpowiedziałem i byli zadowoleni. Mieli dać odpowiedź nawet tego samego dnia. Okazało się, że mają zastrzeżenia, bo "były problemy z komunikacją". Tydzień później informacja zwrotna:

βž• doceniamy szerokie doΕ›wiadczenie
βž• doceniamy postawΔ™ i gotowoΕ›Δ‡ relokacji
βž– twoje odpowiedzi byΕ‚y za maΕ‚o szczegΓ³Ε‚owe
βž– nie przekazujesz informacji zwiΔ™ΕΊle i klarownie

Wynik: FAIL

Poprzednie rozmowy
Wszystkie rozmowy techniczne, jakie siΔ™ odbyΕ‚y:
1. Karat z Hindusem - architektura i testy.
2. Live coding z UkraiΕ„cem.
3. DevSkiller - test wiedzy i pisanie kodu.
4. Przepytanie z wiedzy z Polakami.
5. Live coding w Notatniku z Hindusem.

MoΕΌe nie pamiΔ™tam i byΕ‚y jeszcze jakieΕ›, ale to chyba wszystko.

Wnioski

1. Przypomnijcie sobie szczegΓ³Ε‚owo wiedzΔ™
2. PrzeglΔ…dnijcie kod kolekcji w Javie
3. Wykujcie pytania rekrutacyjne
4. Nauczcie się tak jakby zdawać certyfikat
5. Douczcie siΔ™ architektury
6. Nauczcie się porządnie pisać testy
7. Udzielajcie szybkich i jasnych odpowiedzi
8. ZrΓ³bcie dobre wraΕΌenie na kamerce
9. TΕ‚umacz JavΔ™ tak jak szkoleniowiec
10. MΓ³w zdecydowanie i nie wahaj siΔ™

NastΔ™pne kroki
1. Za 2 tygodnie jeszcze jedna rozmowa.
2. WyΕ›lΔ™ CV ogΓ³lnie do kilku lokalnych firm.
3. WyΕ›lΔ™ CV na kilka wybranych ofert zdalnych.
4. WyΕ›lΔ™ CV do kilku paΕ„stwowych instytucji.
5. Spróbuję dostać się na doktorskie.
6. Po kampanii wrzeΕ›niowej kapitulacja.
7. WΕ‚asna dziaΕ‚alnoΕ›Δ‡ na moich zasadach.

To jest dramat.

#praca #pracait #pracbaza #korposwiat #programista15k #rekrutacja #java
  • 127
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 105
Jak nie umiesz napisaΔ‡ POJO ktΓ³re moΕΌna wΕ‚oΕΌyΔ‡ bezpiecznie do hashseta to faktycznie dramat. Bootcamp powinien ci zwrΓ³ciΔ‡ pieniΔ…dze, bo poszΕ‚y w bΕ‚oto ( Ν‘Β° ΝœΚ– Ν‘Β°)


@5da4266d3de6dbaf425a2d4fc16225d0: Nikt tego nie pisze rΔ™cznie i to w notatniku. Od tego jest Lombok.
  • Odpowiedz
Od tego jest Lombok


@SendMeAnAngel: PrΔ™dzej rekordy, mamy rok 2026 ;)
Ale i w jednym i w drugim przypadku jeśli ktoś nie wie "jak to działa pod spodem" to red flag. Bo przyjdzie ci pracować z jakimś legacy i spędzisz tydzień tropiąc takiego buga.
WidziaΕ‚em juΕΌ w ΕΌyciu takie problemy na produkcji - coΕ› w stylu, ΕΌe equals/hashcode byΕ‚y wygenerowane przez IDE, ale potem pole int zmieniΕ‚o siΔ™ w Integer
  • Odpowiedz
  • 128
Ale i w jednym i w drugim przypadku jeΕ›li ktoΕ› nie wie "jak to dziaΕ‚a pod spodem" to red flag.


@5da4266d3de6dbaf425a2d4fc16225d0: Takich red flags to mΓ³gΕ‚bym kaΕΌdemu znaleΕΊΔ‡ tysiΔ…ce. Po prostu zapytaΕ‚bym o jakiΕ› detal ze standardowej biblioteki, o ktΓ³rym zapomniaΕ‚eΕ›, bo tam nie zaglΔ…daΕ‚eΕ› od 5 lat - a ja sobie akurat przypomniaΕ‚em przed rekrutacjΔ…. O ile dziaΕ‚anie hashCode czy equals to sΔ… podstawy podstaw, to juΕΌ jak to
  • Odpowiedz
Wnioski

1. Przypomnijcie sobie szczegΓ³Ε‚owo wiedzΔ™

2. PrzeglΔ…dnijcie kod kolekcji w Javie

3. Wykujcie pytania rekrutacyjne

4. Nauczcie się tak jakby zdawać certyfikat

5. Douczcie siΔ™ architektury
  • Odpowiedz
Widziałem już w życiu takie problemy na produkcji - coś w stylu, że equals/hashcode były wygenerowane przez IDE, ale potem pole int zmieniło się w Integer i nagle w kodzie było == zamiast .equals() (a w testach nie wyszło bo w testach były tylko małe wartości, jeśli nie wiesz czemu robi to różnicę, to też polecam doczytać bo ktoś kiedyś na interview spyta ;) ).


@5da4266d3de6dbaf425a2d4fc16225d0: Dlatego uΕΌywa siΔ™ Lomboka lub rekordΓ³w.
  • Odpowiedz
  • 13
@SendMeAnAngel: nie było źle, Spokój zachowaj. Dostaniesz c robotę. Czasami trzeba długo szukać, ale traktuj to jak studia podyplomowe z szukania pracy. I wyluzuj. Odpala to odpalą, ale czasem rozmowę zewala stress. I później jest właśnie "problem z komunikacją".
  • Odpowiedz
Widziałem już w życiu takie problemy na produkcji - coś w stylu, że equals/hashcode były wygenerowane przez IDE, ale potem pole int zmieniło się w Integer i nagle w kodzie było == zamiast .equals() (a w testach nie wyszło bo w testach były tylko małe wartości, jeśli nie wiesz czemu robi to różnicę, to też polecam doczytać bo ktoś kiedyś na interview spyta ;) ).


@5da4266d3de6dbaf425a2d4fc16225d0: Jest jakieΕ› IDE, ktΓ³re
  • Odpowiedz
@SendMeAnAngel: właśnie dlatego ja pracując w IT żyję jak robak i odkładam 70% wypłaty w ETFy żeby jak najszybciej się wypisać z tego burdelu. A w obecnej pracy chyba będę siedział do końca.
  • Odpowiedz
@SendMeAnAngel: Powiem ci tylko, ΕΌe przechodziΕ‚em rekrutacje (z sukcesem) do naprawdΔ™ wymagajΔ…cych firmach, nie mam na myΕ›li jakiΕ› intelΓ³w czy atlassians, ale nigdy bym nie podszedΕ‚ do rozmowy z marszu bez przygotowania, bo poleciaΕ‚by reject XD System design pewnie bym przeszedΕ‚ z marszu czy jakΔ…Ε› pogadankΔ™ techniczna, ale nie ma c---a ΕΌe bym przeszedΕ‚ whiteboarda czy live coding, zawsze potrzebuje 4-6 tygodni aby znowu wejΕ›Δ‡ w tym tryb pod interview
  • Odpowiedz
@5da4266d3de6dbaf425a2d4fc16225d0: Tak czy siak, to, żeby używać equals to mnie uczyli 15 lat temu na studiach i wiele lat temu to też było w każdym tutorialu do Javy. Używanie Integera zamiast inta wymaga konkretnego powodu i zabezpieczeń, a i jeśli ktoś nie wie o ograniczeniach i przeznaczeniu to nie wiem dlaczego miałby to użyć skoro zwykły int najpewniej zrobi to co jest potrzebne.
  • Odpowiedz
@lycaon_pictus: Ale to porównanie początkowo było poprawne (i zresztą wygenerowane przez IDE) bo był tam int więc trzeba było porównywać przez == bo przecież int nie ma .equals. Potem ktoś zmienił pole na Integer i kod przestał być poprawny, ale testy były zielone. A w większej klasie (która może i tak miała już jakieś false-positive warningi) łatwo ten nowy warning przeoczyć.
  • Odpowiedz