Codility.com - czyli ile teoretycznie jest wart kandydat na programistę?

Andrzej utworzył nowy wpis, po czym rzekł:
"Nie oceniaj programisty każdego, po pierwszym kawałku kodu jego".

Ostatnio natknąłem się w sieci na stronę projektu Codility - jest to strona autorstwa kilku Polaków. Projekt narodził się w głowie jednego z jego twórców podczas pracy w firmie rekrutacyjnej w Chinach. Dodatkowo, pomysł został wyróżniony na konferencji startupów Seedcamp 2009.

Ale o co chodzi?

Codility to projekt mający na celu wspomagać firmy poszukujące programistów - oszczędza sporo czasu, ponieważ nawet testowe zadanie potrafi sprawić mały dylemat w stylu "I ja jestem programistą?" (tak było w moim przypadku, gdy zbyt nonszalancko podszedłem do zadania:D).

Docelowo - kandydatowi zostaje przedstawiony problem, do którego trzeba napisać algorytm w wybranym przez siebie języku programowania. Napisany skrypt po zatwierdzeniu zadania jest testowany na różne możliwości, w wyniku czego każdy element (test składowy) który się powiedzie, dodaje do naszego licznika punktów małe punkciki.

Demo Test

Link, który można tutaj wykorzystać, to test demo. Treść zadania prosta. Pozornie;) http://codility.com/demo/run/

O tym, jak Andrzej zaliczył zonka:)

W moim przypadku było mniej więcej tak: wybrałem PHP, napisałem kawałek kodu, myśląc "No kurde, co w tym trudnego". Wysyłam test. I zonk: 56/100 - dla testu extreme_first, extreme_zero i czegoś jeszcze zwrócony wynik -1 zamiast indeksu. O wywalonych na timeoucie ostatnich czterech testach nie wspominam. Zrobiłem wielkie oczy i poprawiam:) Ok, tym razem 75/100. Ostatnie 4 pkt. dalej sie wykładają. No tak, zagnieździłem pętle w pętli, a przecież zadanie wyraźnie mówiło o operacjach na dużych liczbach. Normalne, pewnie udawałem, że tego nie widze:P Ostatnie poprawki, czyli przepisanie całego schametu obliczeń i v'oilla - 100/100.

Kawałek kodu po poprawkach;)

function equi ( $A ) {
    $sum = 0;
    $left = 0;
    $right = 0;
    $count = count($A);
    
    for($i = 0; $i < $count; $i++) {
        $sum += $A[$i];
    }
    for($i = 0; $i < $count; $i++) {
        if($i > 0) {
            $left += $A[$i-1];        
        }
        $right = $sum - $A[$i] - $left;
        if($left == $right) {
            return $i;
        }
    }
    return -1;
}

Polecam stosować ten test rekruterom na programistę - nawet demo potrafi skutecznie pokazać usterki wszystko-wiedzących "programistów" i "developerów". Niemniej jednak, nie należy tego traktować jako wyznacznik - wszak po jednym upierdliwym teście nie stwierdzi się ile użytecznej wiedzy ma kandydat - co najwyżej można sprawdzić trochę jego umiejętności logicznego myślenia.

Komentarze

Ten wpis nie posiada jeszcze komentarzy

Dodaj komentarz

Mollom CAPTCHA