Rekrutacja

Zadania rekrutacyjne

Cześć, dzisiejszy wpis trochę rozpoczyna temat rekrutacji do pracy na tym blogu. W tym wpisie pokażę częste zadania do wykonania niezależnie od języka programowania. Jeżeli pojawi się implementacja to zrobię to oczywiście w Javie.

FizzBuzz

Na początek nie mogło zabraknąć słynnego FizzBuzz, znalazłem statystyki w internecie, że poprawnie wykonuje je około 10-15% programistów, a ty w której grupie programistów jesteś? Podam Ci za chwilę treść, a ty spróbuj najpierw zaimplementować rozwiązanie samemu, a dopiero zajrzeć do mojego lub szukać w internecie. Uprzedzam, że implementacji tego zadania jest wiele.

Wypisz liczby od 1 do 100, jeżeli liczba jest podzielna przez 3 to wypisz Fizz, jeżeli podzielna przez 5 to Buzz, jeżeli podzielna przez 3 i 5 to wypisz FizzBuzz. W przeciwnym wypadku wypisz liczbę.

Jeżeli chcesz trochę więcej przeczytać o tym zadaniu możesz zajrzeć tu.

public void fizzBuzz(){

    for(int i=1;i<=100;i++){
        if(i%3 ==0 && i%5==0) System.out.println("FizzBuzz");
        else if(i%3==0) System.out.println("Fizz");
        else if(i%5==0) System.out.println("Buzz");
        else System.out.println(i);
    }

}

Udało Ci się rozwiązać? Jeżeli tak to gratuluję! W przeciwnym wypadku zapraszam Cię do rozmyślenia co zrobiłeś źle.

Silnia

Klasyczny, prosty przykład, gdy rozpoczynamy naukę o rekurencji. Wiadomość dosyć prosty, przykład jednak możemy go użyć jako przykład rekurencji, gdy zostaniemy o to zapytanie. Ewentualnie może będziemy musieli jeszcze zaimplementować to? Kto to wie?

Dla osób, które nie wiedzą co to jest silnia to mam krótką definicję:

Silnia liczby naturalnej n – iloczyn wszystkich liczb naturalnych dodatnich nie większych niż n.

Czyli: 4! = 4 * 3 * 2 * 1 = 24. Proste prawda? Spróbuj, więc zaimplementować rozwiązanie za pomocą rekurencji, dopiero później zajrzyj w rozwiązanie.

public int factorial(int n){
    if(n<2) return 1;
    return n * factorial(n-1);
}

Udało się? Jeżeli tak to ponownie gratuluję, jeżeli nie to musisz wrócić do rekurencji w programowaniu.

Ciąg Fibonacciego

Jest kolejnym sposobem, który możemy wykorzystać jako przykład rekurencji. Zasada działania jest jego prosta, jednak implementacja może być trochę trudniejsza od poprzednio wymienionej silni.

Ciąg Fibonacciego polega na tym, że każde kolejne liczby są tworzone na podstawie sumy dwóch poprzednich. Zobaczmy pierwsze liczby ciągu:

1 1 2 3 5 8 13 …

Zauważasz już działanie? Przejdźmy, więc do implementacji za pomocą rekurencji, najpierw spróbuj sam, a dopiero zajrzyj do mojej implementacji tego zadania. Naszym zadaniem jest znalezienie n-tego wyrazu ciągu fibonacciego.

 public int fibonacci(int n){
            if(n<2) return 1;

            return fibonacci(n-1) + fibonacci(n-2);
}

Ponownie gratuluję, jeżeli twój program działa poprawnie ;).

Stos

Czasami za zadanie możemy dostać stworzenie stosu, jeżeli nie wiesz co to jest to szybko uzupełnij swoją wiedzę na temat struktur danych! Na takie zadanie prawdopodobnie dostaniemy prawdopodobnie więcej czasu niż na poprzednie, dlatego warto zrobić sobie wcześniej taką implementację wcześniej w domu.

Na początku polecam poczytać jak działa stos, spróbować zaimplementować, a dopiero później w ostateczności wspierać się internetem. Jeżeli zachowasz taką kolejność drogi czytelniku to masz pewność, że jeżeli Ci się uda to Twoja satysfakacja będzie nie z tego świata!

Ja w tym wpisię nie będę implementował stosu, lecz zrobię to wkrótcę w osobnym wpisie.

Podsumowanie

Są to przykładowe zadania do zaimplementowania, o których dowiedziałem się od znajomych i wyczytałem w internecie. Jest ich jednak dużo więcej m.in. dosyć popularne jest też generowanie n liczb pierwszych. Co prawda jest to mały zbiór zadań, czasami firmy dają zadania na podstawie tego co się wykorzystuje na co dzień u nich w pracy – dlatego trzeba codziennie ćwiczyć. Wyzwania możesz podejmować na stronach m.in. CodeWars, CodeFights, Exercism, Spoj.

Zachęcam się do dzielenia swoimi doświadczeniami, zadaniami, z którymi Wy się spotkaliście oraz z takimi, o których często słyszycie na grupach lub od znajomych.

Kamil Klimek

Od 2016 jestem programistą Java. Przez pierwsze 4 lata pracowałem jako Full Stack Java Developer. Później postanowiłem postawić nacisk na Javę, żeby jeszcze lepiej ją poznać.

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x