Zadania rekrutacyjne na stanowisko Junior Developer cieszą się na blogu dużą popularnością. Choć w zasadzie nie ma ich zbyt dużo. Dziś kolejny przykład. Tym razem będziemy szukać skarbu. Sam post będzie w trochę innej formule niż zwykle. Ale o tym dalej.
Kontekst
Prawie przez cały 2021 i na początku 2022 roku podczas weryfikacji technicznych umiejętności kandydatów bardzo często do rozwiązania dawałem zadanie z poszukiwaniem skarbu na mapie.
To zadanie jest trudniejsze niż opisane np. w Oceniam zadanie rekrutacyjne Junior Programista. Bardzo dobrze pokazuje szersze podejście do problemu.
Pomysł na to zadanie chyba od zawsze miałem w głowie. To typowy problem, bardzo często spotykany w literaturze w różnych wariantach. I wydał mi się już dawno ciekawym problem rekrutacyjnym.
Problem do rozwiązania
Powyżej przedstawiono przykładową planszę NxM. Jeden z punktów na tej planszy jest skarbem oznaczonym żółtym kolorem. Czarne bloki to ścianki, przez które przechodzić nie wolno. Zielony to start.
Twoim zadaniem jest odnalezienie ścieżki od punktu zielonego do żółtego.
Przygotuj odpowiedni pseudokod. Liczy się koncepcja i podejście do rozwiązywania problemów.
Dla przypomnienia. To zadanie jest rozwiązywane przez kandydatów podczas rozmowy na żywo. Za IDE w tym momencie odpowiada Google Docs. Także nie chodzi tu o dostarczenie działającego kodu. Pomysł i kształt rozwiązania. Tego szukam.
Co oceniam w tym zadaniu?
Z tym zadaniem jest tak, iż albo wiesz, jak je rozwiązać od razu, albo musisz pokombinować. Zwykle podczas rozmów mam do czynienia z tą drugą opcją.
Dlatego jeżeli kandydat zaczyna wymyślać rozwiązanie „od zera” to bardzo mocno patrzę na dekompozycję. Jak każdy problem, także i ten, należy rozłożyć na czynniki pierwsze. I należy do tego podejść spokojnie. Chwila na namysł jest. Więc warto z tego skorzystać i dopytać o różne rzeczy z zadania.
A iż jest to zadanie online, to bardzo ważne jest opowiadanie o swoim rozwiązaniu. Sam pseudokod to często za mało, trzeba umieć wyjaśnić, dlaczego do rozwiązania podeszło się tak, a nie inaczej.
Pytania, jakie się często pojawiały ze strony kandydatów
Czy można po planszy poruszać się na ukos?
Nie. Poruszamy się tylko góra, dół, prawa, lewa w obszarze planszy.
Czy zawsze plansza będzie umożliwiała znalezienie poprawnej ścieżki?
Tak. Możesz założyć, iż przygotowana plansza będzie zawsze umożliwiała znalezienie przynajmniej jednego poprawnego rozwiązania.
Czy ma to być najkrótsza ścieżka?
Nie. Na tym etapie chciałbym, żeby rozwiązanie działało poprawnie, niekoniecznie najbardziej optymalnie.
Czy mogę zastosować listę/mapę/tablicę…?
Tak. Dobór odpowiedniej struktury danych może pomóc w rozwiązaniu.
W jaki sposób przekazać dane wejściowe?
Nie wiem. Czekam na Twój pomysł, jakich danych potrzebujesz.
Rozwiązanie
Rozwiązań jest kilka. Ale dzisiaj nie podaję przykładów. I to jest właśnie ta nowa formuła, o której pisałem we wstępie. Bo chcę Ciebie bardziej zaangażować w rozwiązanie. I zmaksymalizować Twoją naukę programowania.
Dlatego zamiast rozwiązania dzisiaj, zapraszam Cię do wyzwania. Chcesz się zmierzyć z tym problemem rekrutacyjnym Chcesz uzyskać wartościowy feedback
Jeśli tak, to na stronie Poznaj mnie znajdziesz e-mail do mnie. Zaproponuj swoje rozwiązanie. Opisz je. Razem z pseudokodem możesz wysłać je do mnie w treści maila lub umieścić kod np. w Javie na github/gitlab/bitbucket… A ja odpowiem na Twojego maila i opowiem Ci, jak bym ocenił Twoje rozwiązanie. Czekam do piątku, 25 marca 2022.
A jeżeli nie i wolisz poczekać na rozwiązanie na blogu, to też jest taka opcja. Musisz poczekać jakieś 3 tygodnie lub zapisz się na newsletter, wtedy wcześniej.
To jak będzie? Masz jakieś pytania? Podejmujesz wyzwanie?