Jak przygotować się do testów z programowania?

0

Ostatnio chodzę na różne rozmowy kwalifikacyjne do firm i wypełniam testy. Niestety nie wypadam w nich za dobrze, co prawda skończyłem informatykę i umiem nieźle programować, ale na testach pytania są bardzo szczegółowe, mało praktyczne, powiedział bym nawet że głupie.

Np. w jednym teście miałem klasę, która zawierała samą siebie i było pytanie jaki rozmiar zwróci sizeof(funkcja). Przydało się komuś kiedyś coś takiego? Inne zadanie, miałem to napisać algorytm znajdowania najkrótszej ścieżki w grafie. Wiedziałem, że do tego używa się algorytmu Dikstry albo A*, ale nie potrafiłem ich napisać z pamięci. Gdybym potrzebował coś takiego napisać w swoim programie, zajrzał bym do wiki i sobie przypomniał algorytm. Oczywiście takich pozornie głupich pytań było dużo więcej.

I teraz pojawia się pytanie, jak się przygotować do takich testów aby dobrze wypaść. Ma ktoś jakiś sposób czy metodę?

0

Ćwiczyć, ćwiczyć i jeszcze raz ćwiczyć.

0

Ale co ćwiczyć? Chodzenie na rozmowy kwalifikacyjne? Oczywiście że można (a nawet trzeba) chodzić aż do skutku, ale lepiej by było jakoś przygotować się przed testem, aby skrócić sobie ten czas oczekiwania na znalezienie fajnej pracy. Natomiast programowaniem można się wiele nauczyć, ale na pewno nie przygotować do takich testów. Przecież programując nie sprawdzam ile bajtów zajmuje jakiś obiekt, nie mówiąc o innych wyszukanych pytaniach (na które odpowiedź można znaleźć w 30s na googlach).

0
Eduardo napisał(a)

na testach pytania są bardzo szczegółowe, mało praktyczne, powiedział bym nawet że głupie.

To pytania o podstawy, po prostu za mało umiesz.

Eduardo napisał(a)

Np. w jednym teście miałem klasę, która zawierała samą siebie i było pytanie jaki rozmiar zwróci sizeof(funkcja). Przydało się komuś kiedyś coś takiego?

Czyli programowanie w C/C++. Klasa nie może zawierać samej siebie (przez wartość), to podstawowa wiedza, bez niej nie będziesz w stanie zaimplementować najprostszej struktury danych. Sizeof(funkcja) nie skompiluje się ponieważ typ funkcji nie posiada rozmiaru, rozróżnienie typ funkcji/typ wskaźnika na funkcję to kolejna podstawa, bez tego nawet nie masz startu przy korzystaniu z szablonów.

0

Sory źle nadpisałam (w sumie to miał być przykład tylko bez zagłębiania się w szczegóły), akurat w połowie pisania posta miałem telefon i pisałem gadając z dziewczyną.

Klasa zawierała wskaźnik do obiektu tej klasy i referencje do obiektu tej klasy. I pytanie było oczywiście co zwraca sizeof(obiektklasy).

0

Ćwicz takie "niepraktyczne" zagadnienia. Przeczytaj dobry podręcznik, otwórz dokumentację i od podstaw staraj się zrozumieć działanie każdej funkcji. Pisz wiele małych programików, żeby sprawdzić w praktyce jak zachowa się kompilator.

0

Inne zadanie, miałem to napisać algorytm znajdowania najkrótszej ścieżki w grafie. Wiedziałem, że do tego używa się algorytmu Dikstry albo A*, ale nie potrafiłem ich napisać z pamięci.

Nie potrafisz zaimplementować algorytmu najkrótszej ścieżki w grafie? Chłopie...!
Zauważ, że polecenie nie kazało ci użyć konkretnego algorytmu. Mogłeś równie dobrze wymyśleć na poczekaniu własny. Sory, ale żeby nie wpaść nawet na:

1. Znaleźć wszystkie cykle
2. Policzyć ich długość
3. Wybrać najkrótszy

...?

I nie mów mi, że to jest niepotrzebne programiście... To jest właśnie to jest właśnie główne zadanie programisty - stawiają przed tobą problem, a ty masz znaleźć rozwiązanie...

0

Akurat taki algorytm napisałem, przy czym wątpię abym dostał za to dużo punktów, bo taki algorytm ma dużą złożoność obliczeniową i nikt normalny go nie stosuje.

0

@up, widać przegrałeś z kimś, kto swój potrafił jeszcze zoptymalizować... Sory, po prostu nie uważam by takie zadanie było głupie i w ogóle niepraktyczne. W codziennej pracy programisty naprawdę rzadko bywa tak, że musisz zaimplementować algorytm Dijkstry, bo szukasz najkrótszej ścieżki w grafie - zazwyczaj samemu trzeba wymyślić algorytm do konkretnej sytuacji. Gdyby faktycznie kazali ci napisać konkretnie algorytm Dijsktry albo nie wiem - posortować dane heapsortem, to faktycznie wtedy mówiłabym, że testy są głupie.

Także odpowiadając na twoje pytanie z pierwszego posta: programuj, programuj, programuj. Bierz udział w większych projektach open source, twórz samemu jakieś bardziej zaawansowane aplikacje. Rób to tak długo, aż twój mózg widząc zadanie na ułożenie algorytmu nie pomyśli "algorytm Dijkstry", tylko ułoży rozwiązanie, dostrzeże jego słabe miejsca, zoptymalizuje.

0

Ok, dzięki za rady. A teraz może pytanie trochę z innej beczki. Wiecie może gdzie można znaleźć takie przykładowe testy z rozmów kwalifikacyjnych? Chętnie bym sobie porobił takie w domu :)

0

Zawsze możesz pobawić się na spoj.pl

0

@Eduardo jeśli startujesz na stanowisko kodera języka X to musisz ten język znać bardzo dobrze. Nie na zasadzie "nie umiem szablonów, ale na wiki zawszę przecież mogę doczytać", bo o to właśnie chodzi żebyś nie marnował czasu na szukanie. Pewne rzeczy po prostu musisz umieć i już. Jeśli nie wiesz że nie można deklarować w klasie pola tego samego typu, albo nie wiesz co robi sizeof() to niestety ale jeszcze długa droga przed tobą.
Zresztą jeśli pracodawca ma do wyboru gościa który musi zaglądać co chwila do dokumentacji języka, bo ma problemy ze składnią (patrz: ten przykład z deklarowaniem klasy) i gościa który takich problemów nie ma, to jasne że wybierze tego drugiego.

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