Poprzednia część:

I co ja robię tu… I

Skoro już przeszedłeś etap pytań o twoje podstawowe narzędzie pracy, to czas na podstawowy zestaw pytań.

Te straszne algorytmy

Zazwyczaj pytania o algorytmy, skierowane do początkujących programistów mają za zadanie sprawdzenie ich wiedzy oraz umiejętności logicznego myślenia. Nie trzeba się denerwować tymi pytaniami. Choć moim zdaniem w przypadku osób „kompletnie zielonych” są one najważniejszą częścią rozmowy, to jednak zazwyczaj wplata się je pomiędzy inne pytania.

Musisz wiedzieć

Oczywiście czym jest algorytmW🙂 Do grupy podstawowych algorytmów, które musisz znać, należą dwa, trzy algorytmy sortowania. Dowolne, ale musisz je umieć porównać. Jeden z algorytmów wyszukiwania oraz algorytm EuklidesaW i Sito EratostenesaW. To są podstawy, które świadczą o tym, że w czasie nauki wykonałeś jakieś ćwiczenia. Musisz też wykazać się umiejętnością wymyślania i jasnego opisywania rozwiązań.

Powinieneś wiedzieć

Notacja dużego OW, to baza do dalszej rozmowy. Jednak znacznie lepsze wrażenie zrobisz, jak użyjesz pojęcia dziel i zwyciężajW. Jak już wspomniałem konkretna, twarda wiedza jest ważna, ale umiejętność jej zastosowania jest jeszcze ważniejsza. Zatem najlepszą metodą przygotowania się do rozmowy, jest praktyka.

Pozytywnie zaskoczysz, gdy

Będziesz odpowiadać na pytania płynnie i jasno. Z mojego doświadczenia wynika, że problemem u kandydatów nie jest brak wiedzy, a brak umiejętności jasnego formułowania myśli. W dziedzinie umiejętności rzeczywiście zaskoczysz, gdy będziesz umiał omówić bardziej złożone algorytmy np. proste algorytmy kryptograficzne albo komunikacyjne.

Te okropne struktury danych

Skoro były algorytmy to jest i nieodłączny towarzysz. Struktury danych. Tu pytania są silnie uzależnione od konkretnego języka, który będzie twoim „natywnym” językiem do porozumiewania się z komputerem.

Musisz wiedzieć

Sprawa jest prosta. Tablice, listy, zbiory i mapy. Ładnie opisane, porównane i to bez zająknięcia. Przy czym nie musi to być super dokładna wiedza jak, która struktura jest zaimplementowana w danym języku. Takie pytanie skierowane do osoby początkującej ma sens badania, ile ona wie. Jednak nie może być czymś wymaganym. Podobnie ma się sprawa ze stosem, stertą czy wektorem.

Powinieneś wiedzieć

Kiedy jakie struktury stosować. Często jest tak, że kandydat potrafi omówić różnicę pomiędzy tablicą a listą tablicową, lecz nie potrafi wskazać przypadków użycia. Powinieneś też umieć zaimplementować te struktury na podstawowym poziomie. Może być niewydajnie, ale powinno działać.

Pozytywnie zaskoczysz, gdy

Będziesz umiał opisać bardziej zaawansowane struktury jak na przykład grafy. Znasz implementacje w bibliotece standardowej albo potrafisz zaimplementować je w taki sposób, że będą działać wydajnie. Dużym plusem będzie też umiejętność opisania i zaimplementowania struktury „biznesowej”. Wbrew pozorom obiekty domenowe od strony struktury danych, to ciężki kawałek chleba.

Podsumowanie

Algorytmy i struktury danych są zazwyczaj tworami niezależnymi od języka i ich znajomość na podstawowym poziomie jest wymagana. W parze z nimi idzie znajomość pojęć z zakresu matematyki i umiejętność opisu tego, co się robi. Problem, jaki mam na rozmowach z osobami początkującymi polega na tym, że zazwyczaj nie mamy czasu na dokładne sprawdzenie wiedzy. Powoduje to, że po maratonie takich rozmów mam zazwyczaj problem z wyborem. Dlatego tak ważne jest, by poza wiedzą nabrać wprawy w wyrażaniu swoich myśli.