Hackerrank jako etap rekrutacji

4

Cześć,
ostatnio otrzymałem test na hackerrank jako 1 z etapów rekrutacji. Niestety nie powiodło mi się. Test to 4 zadania z czystej Javy, bez frameworków itp. Nie udało mi się rozwiązać do końca wszystkich zadań. Tylko czy takie testy mają sens, skoro w ciągu całej swojej kariery jako programista nie musiałem rozwiązywać takich problemów - pracuję w Springu, pracodawca jest ze mnie bardzo zadowolony.
Oczywiście wiem, że to tylko i wyłącznie moja wina i brak obycia z tego typu zadaniami. Czy warto ćwiczyć tego typu zadania pod kątem rekrutacji? - np właśnie na Hackerrank, Codewars czy korzystając z "Cracking the code interview"?
Macie swoje doświadczenia z tego typu rekrutacjami?

4
gerwazy93 napisał(a):

ostatnio otrzymałem test na hackerrank jako 1 z etapów rekrutacji.

Gdybym dostał poza firmami typu Google zadania z algorytmów i struktur danych innych niż te najbardziej oczywiste jak DFS/BFS, quicksort... przerwałbym proces, mówiąc że nie chcę pracować w firmie zajmującej się tworzeniem tak niskopoziomowego kodu.

1
gerwazy93 napisał(a):

czy takie testy mają sens, skoro w ciągu całej swojej kariery jako programista nie musiałem rozwiązywać takich problemów - pracuję w Springu, pracodawca jest ze mnie bardzo zadowolony.

Nie szukaj nowej pracy tak gdzie są takie wymagania. Szukaj tam gdzie będzie podobnie do tego co masz obecnie.

W tej nowej gdzie uderzałeś poza etapem rekrutacji też pewnie nie zajmowałbyś się tematami odbiegającymi mocno od tego co robisz teraz.
Rekrutacja to jedno. Rynek w Polsce (i prace wrzucane do Polski) to drugie.

Nie znaczy to, że za np. 5 lat może to wyglądać zupełnie inaczej.

0

Ale oferta mówiła o programiście Javy ze Springiem. A tymczasem dostałem w mordę takimi zadaniami

2

W Polsce robi się to co się robi (korporacyjne technologie). Jednak takie serwisy jak ten nie są bez powodu na innych rynkach popularne.
Nie wiadomo co będzie w Polsce za 5 lat.

Kilkanaście lat temu: Angielski? Jaki k...a język obcy? Dokumentację przecież przeczytam.
Z 5 lat temu: w korporacji dyplom? Mało to programistów nie ma matury?
Obecnie: algorytmika na rekrutacji: Co to w mordę ma być, Google jakieś czy co, bo na Springa aplikuję!

2

A jakiego typu to były zadania?

0

Najkrótszy substring który zawiera wszystkie unikalne znaki jakie występują w danym Stringu np.

2

Jesli ci zalezy na pracy w danej firmie, to sie przygotowujesz pod rekrutacje jaka w niej jest. Jak glupia by ona nie byla. Jak ci nie zalezy, to masz to w dupie i idziesz gdzie indziej.

1

Ok, a jeżeli na codzien pracuje w Springu a do rekrutacji tej podszedłem z biegu. To czy świadczy o mnie bardzo źle że poległem? Skoro nie przećwiczyłem tego typu zadanek. Czy jednak powinienem to wiedzieć bom jest programista?

0

@gerwazy93: dosłownie godzine temu skończyłem rozwiązywać test na Hackerranku z identycznym pytaniem ;) Startujesz może do BNY Melon, czy to przypadek że trafiliśmy prawdopodobnie na ten sam test?

Co do moich odczuć - średnio mi się to podobało i też średnio mi poszło, zadania faktycznie nie miały nic wspólnego z codzienną pracą Java developera, aczkolwiek widocznie taki ich sposób na odsianie setek CV.

7

Mam ambiwalentne podejście do zadań typu Codility. Prywatnie bardzo lubię, jednak ma się to nijak do rzeczywistej pracy. Uważam jednak, że na sito nie jest to złe - nie jest sztuka robić Springa, ważniejsze są elementarne skillsy jak algorytmy i struktury danych. Ale to moje zdanie, no offence.

2

Interesowałem się tym tematem sporo i wciąż interesuję, bo może to dziwne, ale jednym z moich zainteresowań jest nauka pod "rozmowy rekrutacyjne".
Sprawa wygląda następująco, że giganci typu Facebook, Amazon, Google stosują właśnie tego typu zadania rekrutacyjne, nie pytajcie się mnie dlaczego, tak po prostu jest. Skutkiem tego, np. w USA są już setki tysięcy ludzi którzy tzw. "grindują" platformy typu LeetCode po parę lat by później dostać wymarzoną pracę za setki tysięcy dolarów. W pewnej perspektywie ma to sens, bo wyłania się gdzieś... ta najlepsza osoba, która cechuje się błyskotliwością umysłu, mocnym charakterem (setki, jak nie tysiące przerobionych zadań algorytmicznych). Taka osoba jest można mówiąc idealnym kandydatem do pracy w FAANG (cechy osobności, znajomość algorytmów, struktur danych). Jednak, droga ta sprowadza się do zaniedbania rodziny, życia prywatnego, jest to droga dla ludzi, którzy chcą się poświęcić pracy. (w końcu nie każdy może pracować w Facebooku i vice versa).
"Grindowanie" algorytmów, nauka pod te firmy wiąże się z 2-3 letnim poświęceniem się na naukę właśnie tych rzeczy (tak przynajmniej ludzie piszą na leetcode.com)

Niektóre firmy, chcą być "cool", więc idą tym tokiem myślenia, naśladując znanych gigantów stąd jest jak jest. Tylko prawdopodobnie poziom trudności tych zadań jest o wiele mniejszy. Czy jesteś Ruby Developerem, Python Developerem, Java Developerem to na takich testach masz mniej więcej podobne podejście do rozwiązania problemu. Głównie jest to wybór odpowiedniej struktury danych na początku rozwiązywania problemu i schematu rozwiązania.

W mniejszych firmach wysyłają zadania domowe, pytają z frameworków, co też ma swoje plusy i minusy. Np dociekliwe pytania z technologii frameworków są ... śmieszne. Nie sposób znać całej dokumentacji Hibernate, Springa, Mockito, JUnita, SQL'a itd itd. Tutaj bardziej skłaniamy bardziej do koncepcji, aby zatrudnić fachowca w danej dziedzinie (tzw. wyrobnika)
Więc... np lepiej pytać z tak zwanych fundamentów (koncepcja "fundamentals over frameworks"). Ogólnie nie ma złotego środka na dobrego kandydata w IT.

0

Na wydziałowym forum jednego z uniwersytetów, ogłoszenie dla studentów (sprzed kilku miesięcy)

Zaprzyjaźniona firma Codility szuka osób chętnych do opracowywania i weryfikowania niezbyt trudnych zadań programistycznych/algorytmicznych.
Praca może być całkowicie zdalna i elastyczna. Więcej informacji tutaj:*

0

Trochę mi to robi mętlik w głowie. W pracy nie mam problemu z rozwiązywaniem zadań. Zadania przechodzą review dużo bardziej doświadczonych osób, testy rozwiązań przeprowadzane przez QA też ok, a tu dostaję taki test i zonk. Czy to jakoś bardzo źle o mnie świadczy, czy świadczy o braku praktyki?

1
gerwazy93 napisał(a):

czy świadczy o braku praktyki?

Może o nadmiarze praktyki i niedoborze teorii?

1

@gerwazy93: Nie przejmuj się, to jest właśnie specyfikacja tego typu zadań. Ktoś kto np. dużo "programuje frameworkami", a mało robi "ręcznie". (W Javie są biblioteki do sortowań, wyszukiwań etc) no to ma później problemy z tego typu rekrutacją. Jedyną radą jest przerabianie LeetCode i książek typu "Algorytmy i Struktury danych". Kwestia tylko czy Ci się chce na tyle poświęcać.

6

Czy to jakoś bardzo źle o mnie świadczy

Trudno powiedzieć, ale zadania z codility i podobnych zwykle są generalnie bardzo proste. To nie jest poziom jakiegoś OI czy innego ACMa, tylko zwykle test czy umiesz użyć drzewa i mapy zamiast pisać jakiegoś wykładniczego brute-force.

1
Shalom napisał(a):

Czy to jakoś bardzo źle o mnie świadczy

Trudno powiedzieć, ale zadania z codility i podobnych zwykle są generalnie bardzo proste. To nie jest poziom jakiegoś OI czy innego ACMa, tylko zwykle test czy umiesz użyć drzewa i mapy zamiast pisać jakiegoś wykładniczego brute-force.

Nie zgadzam się.
Zadanie, które zacytował OP to LeetCode poziom hard:
https://leetcode.com/problems/minimum-window-substring/

Nawet w Google rzadko dają zadania o tym poziomie trudności.
No chyba, że chodziło o zaimplementowanie tego brute forcem.

8
gerwazy93 napisał(a):

Nie udało mi się rozwiązać do końca wszystkich zadań. Tylko czy takie testy mają sens, skoro w ciągu całej swojej kariery jako programista nie musiałem rozwiązywać takich problemów - pracuję w Springu, pracodawca jest ze mnie bardzo zadowolony.

Sens testów masz jak na dłoni. Przekonałeś się, że nie jesteś programistą, tylko zwykłym klepaczem :]

1
Spine napisał(a):
gerwazy93 napisał(a):

Nie udało mi się rozwiązać do końca wszystkich zadań. Tylko czy takie testy mają sens, skoro w ciągu całej swojej kariery jako programista nie musiałem rozwiązywać takich problemów - pracuję w Springu, pracodawca jest ze mnie bardzo zadowolony.

Sens testów masz jak na dłoni. Przekonałeś się, że nie jesteś programistą, tylko zwykłym klepaczem :]

Idąc tym tropem, to programistami są tylko goście którzy grzebią w assemblerze :p

4

Najkrótszy substring który zawiera wszystkie unikalne znaki jakie występują w danym Stringu np.
czy takie testy mają sens

Tak, mają sens. Pokazały, że nie umiesz programować.

0

coś w rodzaju bootkampu który trenuje do tych zadań w 3 miesiące , brzmi jak pomysł na biznes

2

Ja ostatnio szukałem nowej pracy i zazwyczaj miałem jakieś zadanie do zrobienia w domu np. na platformie devskiller. To co dostałem było trudne, ale pozwalało zweryfikować rekrutującym czy kandydat posiada ogólne pojęcie. Do przejścia procesu rekrutacji nie było wymagane zrobienie wszystkiego na 100%. Ja przeciwko takim zadaniom nic nie mam, jeżeli sprawdzają faktycznie wiedzę, która przyda się w pracy.

Z drugiej strony znam ludzi (często senior dev z 10+ lat doświadczenia), którzy rezygnują z rekrutacji, jeżeli jest jakiekolwiek zadanie do zrobienia w domu. Zdarzyło mi się z jednym z nich pracować i samo programowanie szło mu bardzo średnio. Teraz doszedłem do wniosku, że jednak wolę pracować w firmie, gdzie rekrutacja jest trudniejsza, a nie jest pełno ludzi z łapanki.

0
sieedukuje napisał(a):
Spine napisał(a):
gerwazy93 napisał(a):

Nie udało mi się rozwiązać do końca wszystkich zadań. Tylko czy takie testy mają sens, skoro w ciągu całej swojej kariery jako programista nie musiałem rozwiązywać takich problemów - pracuję w Springu, pracodawca jest ze mnie bardzo zadowolony.

Sens testów masz jak na dłoni. Przekonałeś się, że nie jesteś programistą, tylko zwykłym klepaczem :]

Idąc tym tropem, to programistami są tylko goście którzy grzebią w assemblerze :p

Jak nie masz umiejętności rozwiązywania problemów, to to w jakim piszesz języku nie ma większego znaczenia.

2

Ale rozwiązywanie problemów nie ogranicza się do klepania algorytmów typu "znajdź nakrótszy podciąg", których w realnych projektach prawdopodobnie nie będziesz musiał nigdy pisać.

6

Te problemy sprawdzają nie tylko czy ktoś zna algorytm, ale też czy ludzie znają struktury danych i ich implementacje w swoim języku, a to już ma realne przełożenie na codziennie projekty ;)

2

Moim zdaniem głównie wciąż sprawdzają czy ktoś klepał takie/podobne zadania kiedyś.

0
macok napisał(a):

Nie zgadzam się.
Zadanie, które zacytował OP to LeetCode poziom hard:
https://leetcode.com/problems/minimum-window-substring/

Nawet w Google rzadko dają zadania o tym poziomie trudności.
No chyba, że chodziło o zaimplementowanie tego brute forcem.

Poważnie to jest aż tak trudne czy ktoś tu przesada? Ja IMHO jestem raczej słaby w te zadania, ale wziąłem to przysłowiowo na kolanie przy kawie (więc 0 presji, no wiadomo) w czasie do 45 minut i bez problemu rozwiązałem, a najwięcej czasu zajęło mi rozpisanie tego algorytmu na kartce w pseudokodzie, bo chyba z 80% całego czasu

1
TurkucPodjadek napisał(a):
macok napisał(a):

Nie zgadzam się.
Zadanie, które zacytował OP to LeetCode poziom hard:
https://leetcode.com/problems/minimum-window-substring/

Nawet w Google rzadko dają zadania o tym poziomie trudności.
No chyba, że chodziło o zaimplementowanie tego brute forcem.

Poważnie to jest aż tak trudne czy ktoś tu przesada? Ja IMHO jestem raczej słaby w te zadania, ale wziąłem to przysłowiowo na kolanie przy kawie (więc 0 presji, no wiadomo) w czasie do 45 minut i bez problemu rozwiązałem, a najwięcej czasu zajęło mi rozpisanie tego algorytmu na kartce w pseudokodzie, bo chyba z 80% całego czasu

  1. Rozwiązałeś w O(n) czy brute forcem? Brute forcem to żaden problem i nie powinno IMO zająć więcej niż kilka minut.
  2. Jeżeli rozwiązałeś w O(n) to powiedziałbym, że dobra robota i że na pewno nie jesteś słaby z algorytmiki. Ale pamiętaj, że w warunkach rekrutacji byłbyś bardziej zestresowany, + pytanie czy to co napisałeś na kartce nie zawiera błędów.
0

Z mojej perspektywy wygląda to tak, że znajomość algo nie była potrzeba prawie wcale, a rozmowy nijak nie mają się do realnej pracy.
Kiedyś miałem takiego kolegę, dzięki któremy zajawiłem się na hackerranki itp, razem robilismy zadania - dyskutowaliśmy, tłumaczyliśmy sobie itp itd. Taka zajawka trwała ładnych parę miesięcy.
Ale to było koło roku 2016.
Najpierw kolega zmienił pracę, potem ja. Czasami do tych zadanek wracam - ale szczerze powiem, strasznie szybko rdzewieje. Przy regularnych ćwiczeniach jakiś poziom był, przy okazjonalnych - ch, dupa i kamieni kupa.
Dlatego nie lubię tego typu zadan bo mi przyminają o moich mentalnych ograniczeniach.

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