Rekrutacja na mid/senior, a zadania algorytmiczne

1

Cześć,
przede mną ostatnia prosta przed zmianą pracy (trochę dałem sobie czasu, bo praca w ASP.NET to komercyjnie dla mnie nowy temat, ale samym .net siedzę już kilka lat).

Zanim zacznę wysyłać CV zastanawiam się jak wygląda kwestia algorytmiki w rekrutacjach na poziom mida, ewentalnie na seniora?
Czy spotkaliście się z zadaniami algorytmicznymi na rekrutacjach, gdy macie kilka lat doświadczenia? Jeśli tak to pamiętacie na czym polegały? Coś wymagającego?

Nie wiem jak bardzo się skupić i na przykład "grindować" leetcode, żeby przypomnieć/nauczyć się jak rozwiązywać popularne problemy algorytmiczne czy może zacząć wysyłać CV i liczyć na trochę szczęścia gdzie będę miał pogadankę, a za zadania napisać jakiś mini projekt zamiast algorytmów na live.

Dziękuje za wszelkie podzielenie się swoimi doświadczeniami. Pozdrawiam

49

Zdarzają się. Co do trudności to zależy. Są zadania, które można obsłużyć onelinerem a są takie, gdzie klepiesz spaghetii na 50 linijek, zagnieżdzając kolejne pętle. Sens takich rekrutacji? IMO nikły, bo praktycznie nic nie sprawdzają oprócz umiejętności rozwiązywania tego typu zadań. 2 tyg grindowania jakiejś platformy i rozwiązujesz medium / hard, tylko pytanie w jakim celu oprócz przejścia takiej fikuśnej rekru?

5

16 lat doświadczenia komercyjnego.
Na rekrutacjach byłem maglowany z algorytmiki, live coding też.

Czy grindowac leetcode?
Nie aplkowalem do FAANG więc te zadania byly w miarę proste i nawet po tylu latach dawałem sobie radę.
No ale warto sobie cośtam odkurzyć jednak.

13

Najlepsze są jakieś podrzędne polskie 'softwarehousy', które chcąc być modne dają na rozmowie rekrutacyjnej zadania algorytmiczne typu usuwanie węzła z drzewa czerwono-czarnego, a na codzień w robocie i tak klepiesz zwykłego CRUDa.

13

To zależy jak na to patrzysz. Jeśli jesteś w miarę ogarnięty (pod względem umiejętności) i masz dostęp do sporego rynku ofert (co w dzisiejszych czasach raczej nie jest problemem), to ja na Twoim miejscu bym poszedł na głęboką wodę, i sam odrzucał miejsca pracy gdzie na rozmowie trzeba wykonywać oderwane od rzeczywistości zadania z algorytmyki. Sam biorę udział w rekrutacjach, i byłem w zespole odpowiadającym za ustalenie pytań i zadań dla kandydatów. Algorytmy były jedną z pierwszych rzeczy jakie usunęliśmy z listy, bo:

  • Zależy nam na wyprofilowaniu kandydatów pod kątem tego co będą robić na co dzień
  • Zdajemy sobie sprawę że rekrutacja techniczna jest stresująca dla kandydata, więc w większości przypadków to dodatkowo utrudnia rozwiązywanie takich zadań
  • Chcemy dać się kandydatowi wykazać z praktycznych umiejętności

Algorytmika na rozmowach do pracy gdzie na co dzień się z niej nie korzysta to absurd, i świadczy o tym że firma nie podchodzi do rekrutacji głową. Strach wtedy myśleć jak wyglądają w takich miejscach inne procesy oraz z jakimi ludźmi przyjdzie pracować, skoro byli zatrudnieni w oparciu o oderwane od rzeczywistości testy.

7

comment_1658998127thGbRz3BkjcmnaprWczjYZw400.jpg

6

Frontend, Polska, zadania algorytmiczne prawie nieobecne, a jeśli obecne, to jest duża wyrozumiałość, że nie umiesz rozwiązać.

Zaznaczam specjalizację i kraj, bo przypuszczam, że może się to różnić. Oglądam czasem vlogi z rekrutacji z USA i tam podobno w tej Ameryce ciągle są jakieś algorytmy, a programiści klepią zadania na pamięć z leetcode niczym polscy maturzyscy klepią Kiełbasę:

Taka sytuacja nie ma miejsca we frontendzie w Polsce, jest to dla mnie coś egzotycznego, żeby uczyć się algorytmów pod rekrutację.

Ale też mam wrażenie, że we frontendzie jakoś mniej się zwraca na uwagę na algorytmy (słusznie bądź nie), więc ymmw. Sam nie wiem, czy nacisk na algorytmy to kwestia USA czy w Polsce też jest to obecne (jeśli tak, to nie we frontendzie)

6
Piotr.Net napisał(a):

Zanim zacznę wysyłać CV zastanawiam się jak wygląda kwestia algorytmiki w rekrutacjach na poziom mida, ewentalnie na seniora?
Czy spotkaliście się z zadaniami algorytmicznymi na rekrutacjach, gdy macie kilka lat doświadczenia? Jeśli tak to pamiętacie na czym polegały? Coś wymagającego?

Z 10 lat temu rozwiązywałem jakieś zadnia algorytmiczne online w rekrutacji do 7N, od tamtej pory ani tego typu testów ani pytań nie miałem. Ale też po prostu nie kandyduję do firm znanych z wymagania algorytmów. W moim świecie pyta się o powiązanie partycji z consumerem w kafce albo zasady wyboru partition key w bazie.

Nie wiem jak bardzo się skupić i na przykład "grindować" leetcode, żeby przypomnieć/nauczyć się jak rozwiązywać popularne problemy algorytmiczne czy może zacząć wysyłać CV i liczyć na trochę szczęścia gdzie będę miał pogadankę, a za zadania napisać jakiś mini projekt zamiast algorytmów na live.

No to już chyba Ty wiesz, czy chcesz pracę w algorytmach, czy nie.

1

Ja mam kompletnie inne zdanie niz wiekszosc osob tu sie wypowiadajacych.
Latwiej wyryc na pamiec:

powiązanie partycji z consumerem w kafce albo zasady wyboru partition key w bazie.

niż zadania algorytmiczne.
Jesli biore udzial w rekrutacji gdzie nie ma algorytmow to jest to dla mnie podejrzane i boje sie, bo gdy sa one to mam pewnosc ze ludzie pracujacy tam musieli przejsc przez to samo sito co ja oraz posiadaja jakiekolwiek umiejetnosci analitycznego myslenia/znaja fundamenty programowania, a nie wyuczyli sie adnotacji do springa lub innego reacta (czesto bez pojecia jak to dziala pod spodem), dorzucili top 100 interview questions i sa w stanie przejsc wiekszosc rekrutacji.. To co pisze nie jest wyssane z palca, znam sporo takich osob, ktore bierze wszystko na slowo, a uzywane frameworki czy bazy danych uwaza za zeslane z nieba.

I tak, na codzien w przecietnej pracy nie uzywasz tej algorytmiki, ale... raz na jakis czas znajac ja mozesz zaoszczedzic mnostwo $ lub czasu.
Powiem nawet wiecej, moze warto sie zastanowic dlaczego ludzie nie chca pracowac w miejscach gdzie sie jej uzywa... a pozniej narzekaja na nudna, powtarzalna prace.

5
Snatch and Pizza napisał(a):

Ja mam kompletnie inne zdanie niz wiekszosc osob tu sie wypowiadajacych.
Latwiej wyryc na pamiec:

powiązanie partycji z consumerem w kafce albo zasady wyboru partition key w bazie.

niż zadania algorytmiczne.

No niby można, ale jeśli potem pójdzie pytanie uszczegóławiające o coś, a ktoś tylko wyrył na pamięć, a nigdy z tym nie pracował, to szybko wyjdzie.

Jesli biore udzial w rekrutacji gdzie nie ma algorytmow to jest to dla mnie podejrzane i boje sie, bo gdy sa one to mam pewnosc ze ludzie pracujacy tam musieli przejsc przez to samo sito co ja oraz posiadaja jakiekolwiek umiejetnosci analitycznego myslenia/znaja fundamenty programowania

To, że ktoś zna algorytmy nie implikuje, że potrafi pisać i projektować kod.
Nie wiem jak Ty, ale ja nie pracuję z algorytmami (w tym rekrutacyjno-akademickim sensie) tylko z kodem.

0

Dzięki wszystkim za wyrażenie swoich opinii.
Przygotowuję się tak naprawdę do pierwszej zmiany pracy, bo w aktualnej się zasiedziałem za długo, a nic twórczego i rozwojowego już się nie dzieje.
Nie będę szukać pracy w algorytmach, ale o ile na juniora często mogą być algorytmy, bo to zawsze coś co można u nowego w branży sprawdzić, tak przy osobie po kilku latach spodziewałbym się bardziej sprawdzania tajników języka, sprawy architektury itp.
W każdym razie jeszcze raz dzięki, postanowiłem przelecieć sobie jakieś najpopularniejsze algorytmy i zadania. A nuż, trafie na taką rekrutacje to może się przydać

1

To poczekaj. Bo pytałeś o algorytmy.
Ja w rekrutacjach na seniora ostatnio miałem combo

  • kodowanie algorytmów w hackerrank

  • live coding z wykorzystaniem struktur danych

  • rozmowy o tajnikach frameworków

  • wysokopoziomowe projektowanie domeny

  • ...

    Dużo, wycieńczająco (szczególnie że poprosiłem o umawianie rozmów jedna po drugiej), ale raz na 14 lat można sobie zrobić maraton xD

0
Aventus napisał(a):

Algorytmika na rozmowach do pracy gdzie na co dzień się z niej nie korzysta to absurd

Zalezy dlaczego sie z niej nie korzysta. Jesli dlatego ze nikt w firmie nie potrafi albo nikomu sie nie chce to absurdem jest zatrudnianie tylko takich ludzi. Ale jesli ktos zajmuje sie ... hmm, no nie wiem czym, jeszcze nie pracowalem w firmie w ktorej programista nie musi myslec, rozwiazywac problemow z ktorymi wczesniej sie nie spotkal, czy znac podstaw typu hashowanie, sortowanie, ... A porzadne rekrutacyjne zadnia algorytmiczne to wlasnie absolutnie podstawowe klocki ktore trzeba wymyslic jak zlozyc. A ze zdazaja sie firmy ktore sprawdzaja czy ktos wykul na pamiec jakis konkretny algorytm to juz inna sprawa - to wedlug mnie jest pozbawione sensu.

Piotr.Net napisał(a):

W każdym razie jeszcze raz dzięki, postanowiłem przelecieć sobie jakieś najpopularniejsze algorytmy i zadania

W jakim celu? Jesli po to zeby wykuc w nadziei ze trafisz na identyczne na rekrutacji to wydaje sie to malo prawdopodobne. Ale jesli chcesz byc lepszy w zawodzie ktory wykonujesz, albo po prostu jako substytut np. gry w szachy, to zdecydowanie polecam.

2

@eleventeen:

Zalezy dlaczego sie z niej nie korzysta. Jesli dlatego ze nikt w firmie nie potrafi albo nikomu sie nie chce to absurdem jest zatrudnianie tylko takich ludzi.

Miałem na myśli takie miejsca, gdzie nie korzysta się na co dzień bo nie ma takiej potrzeby, już nie dorabiajmy dodatkowych teorii ;)

Ale jesli ktos zajmuje sie ... hmm, no nie wiem czym, jeszcze nie pracowalem w firmie w ktorej programista nie musi myslec, rozwiazywac problemow z ktorymi wczesniej sie nie spotkal

Znajomość algorytmów lub jej brak nie świadczy o umiejętności (lub braku) myślenia czy rozwiązywania problemów.

czy znac podstaw typu hashowanie, sortowanie, ... A porzadne rekrutacyjne zadnia algorytmiczne to wlasnie absolutnie podstawowe klocki ktore trzeba wymyslic jak zlozyc.

Nie znam hashowania ani sortowania. Coś tam pamiętam ze szkoły, a ostatnio z ciekawości przeglądałem o algorytmach żeby odświeżyć sobie pamięć ale... już zapomniałem. Jakbym naprawdę potrzebował to znowu sobie wygoogluje, i może lepiej właśnie tę umiejętność bardziej sprawdzać? Notabene, u mnie w pracy pozwalamy kandydatom używać google podczas części praktycznej rekrutacji technicznej.

A ze zdazaja sie firmy ktore sprawdzaja czy ktos wykul na pamiec jakis konkretny algorytm to juz inna sprawa - to wedlug mnie jest pozbawione sensu.

No właśnie w tym rzecz- wykucie na pamięć. Algorytm to algorytm, da się go wykuć na pamięć. Jaki sens więc sprawdzanie tego przy profilowaniu kandydata? Użyję analogii- to trochę jak z testami jednostkowymi które niektórzy piszą tak że mają mocka, konfigurują tego mocka tak aby coś zrobił, a później sprawdzają czy to zrobił. Gdzie tu faktyczna wartość?

1

Wszystko zależy od firmy, ja jak na juniora się rekrutowałem to prawie zawsze miałem coś z algorytmów.

48

Ktoś kiedyś podrzucał fajny artykuł odnośnie googla, chyba @Shalom . Google przenalizowało wyniki swoich pracowników - tych dobrych z algo i tych którzy wypadli gorzej. Finalnie w późniejszej pracy nie miało to znaczenia.

Nie jest to żadne usprawiedliwienie za, czy przeciw. Jeśli ktoś lubi algo to jak najbardziej spoko - krzywdy mu to nie zrobi. Jednak nie dorabiajmy jakiś absurdalnych teorii o braku umiejętności analitycznego myślenia, czy programowania w sensie ogólnym przez fakt nie rozwiązania jakiegoś zadania-algo, któe nie jest nawet realnym problemem.

0
Aventus napisał(a):

Ale jesli ktos zajmuje sie ... hmm, no nie wiem czym, jeszcze nie pracowalem w firmie w ktorej programista nie musi myslec, rozwiazywac problemow z ktorymi wczesniej sie nie spotkal

Znajomość algorytmów lub jej brak nie świadczy o umiejętności (lub braku) myślenia czy rozwiązywania problemów.

Nie zrozumiales co napisalem. Owszem, fakt ze ktos wykuje na pamiec implementacje mnostwa algorytmow niewiele znaczy. Jesli ktos nie jest w stanie wymyslic jak zrobic proste zadanie wykorzystujace dowolny z juz zaimplementowany podstawowych algorytmow, chocby wlasnie sortowanie, to ciagle jeszcze niewiele oznacza. Ale jesli to sie zdaza regularnie dla kazdego zadania, to tak bezposrednio oznacza wlasnie brak myslenia/umiejetnosci rozwiazywania problemow. No chyba ze sie nie zna absolutnie podstawowych struktur danych/algorytmow i sie nie wie co mozna wykorzystac. Tyle ze wtedy tez zatrudnianie kogos takiego nie ma sensu.

ledi12 napisał(a):

Google przenalizowało wyniki swoich pracowników - tych dobrych z algo i tych którzy wypadli gorzej. Finalnie w późniejszej pracy nie miało to znaczenia.

To google zatrudnia osoby ktore sobie nie poradzily z zadaniami? Czyli nie potrafili wymyslec kompletnie nic? Bo to ze na 5 zadan ktos sobie np. z 2 nie poradzil dziwne nie jest - kazdemu moze sie zdazyc. I zapewne w badaniach zostali oznaczeni jako "slabo sobie radza". Ale skoro zostali zatrudnieni to zapewne ze 3 zrobili, czyli potrafia rozwiazywac problemy (no albo mieli bardzo duzego farta i trafili na cos co wczesniej wykuli - wydaje mi sie malo prawdopodobne).
Ja z kolei pracowalem z ludzmi zatrudnionymi bez wiekszej weryfikacji - zdazali sie mocni i slabi. Ale chyba wszyscy ktorzy zostali zatrudnieni po jakiejs formie weryfikacji praktycznej (czyli zadania, w tym wykorzystujace algorytmy dostepne np. w JDK) w trakcie pracy nie przestali myslec i radzili sobie dobrze. Zatrudnienie na podstawie samej wiedzy teoretycznej nie bylo skorelowane z pozniejsza kumatoscia w pracy (no ale probka zbyt mala zeby wyciagac ogolnie wnioski).

4

Ja daję, ale specyficzny projekt i zadania wprost wzięte z naszego kodu. Nie są moim zdaniem trudne, wystarczy znajomość stosu, umiejętność zastosowania hashmapy, a w jednym przypadku na przykład semafora (aczkolwiek zadanie można rozwiązać też na kompletnie inne sposoby).

3
Piotr.Net napisał(a):

W każdym razie jeszcze raz dzięki, postanowiłem przelecieć sobie jakieś najpopularniejsze algorytmy i zadania

W jakim celu? Jesli po to zeby wykuc w nadziei ze trafisz na identyczne na rekrutacji to wydaje sie to malo prawdopodobne. Ale jesli chcesz byc lepszy w zawodzie ktory wykonujesz, albo po prostu jako substytut np. gry w szachy, to zdecydowanie polecam.

A ja bardziej polecam spożytkowanie swojego czasu na kontrybucję do projektów Open Source z których większość z nas korzysta, jest to bardziej przydatne światu od rozwiązywania zmyślonych zadań z algorytmami i i dobrze wpływa na wizerunek.

3

Jeśli ktoś na rozmowie Cie pyta o jakieś algorytmy i prosi o napisanie tego w pseudokodzie to są dwie opcje:

  1. Super projekt w którym wykorzystasz swój analityczny umysł.
  2. Trafiłeś na idiotę o wybujałym ego i jest szansa, że właśnie do niego będziesz raportował.

Szansa, ze wypadnie opcja 2 to 3/4, więc z mojego doświadzczenia radzę nie przyjmować oferty z takiej firmy.

0

Powoli rozglądam się za nowym projektem / firmą. Wysłałem cv w kilka miejsc które na wczoraj szukają ludzi. Odpowiedziałem na co bardziej sensowne propozycje z popularnego portalu. Testy ze znajomości z algorytmów, codility albo jego klony, recytacja definicji z wikipedii i tak się kręci. Szkoda czasu na takie firmy.

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