Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Inne] Test dla programisty podczas rekrutacji
Forum PHP.pl > Inne > Hydepark
dawstaw
Witam.
Pisze z nietypowym pytaniem. Z racji tego iż szukam jakiegoś w miarę dobrego programisty trzeba sprawdzić jego wiedzę przez odpowiedni test.
Programista powinien znać:
php
curl
mySQL
umiejętność programowania obiektowego - Smarty
ewentualnie zend

Jakie pytania byście zadali takiej osobie chcąć sparawdzić jej umiejeności i kwalifikacje na takie stanowisko ?
Bardzo proszę o jakies pytania ( najlepiej zadania związane z kodem) / Jakieś próbne zadanie do rozwiązania...
Z góry dzięki...
!*!
- jaki jest adres do manuala?
- co wspólnego ma OOP ze Smarty?
- czy curl powinien być użyty do pobrania źródła witryny?
- co to są przestrzenie nazw.

Jak się nie wyłoży na tym, to przejdzie do etapu drugiego?
ps. rekrutacja robiona przez kogoś kto się na tym nie zna, jest złym pomysłem.
matiit
PHP:
Czym się różni Klasa abstrakcyjna od interfejsu.

Opowiedz o wzorcu singleton. (Wady, zalety?).

Opowiedz o wzorcu MVC - znasz jakieś jego wariacje?

(Czy jest to pasjonat: ) Czy kojarzysz obsługę "Traits" w PHP? Na czym polega, jakie widzisz zastosowania?

Jakie znasz zagrożenia/typy ataków?
Jak uchronić się przed SQL injection, XSS?

O czym ostatnio czytałeś na temat PHP?

dawstaw
Dziękuje za odpowiedzi...
A jakieś zadania związane z kodem... Nie mówię tutaj o napisaniu w php Hello World ale o czymś bardziej skomplikowanym.... ( jakiś bardziej skomplikowany kod php lub zapytanie mySQL )

Z góry dzięki...
matiit
Jeśli gość odpowie dobrze na te pytania, które podałem to po co go jeszcze z kodu sprawdzać na miejscu? Sprawdzi się na okresie próbnym.
Najważniejsza kwestia - kto zweryfikuje poprawność pytań?
!*!
Cytat(matiit @ 16.04.2013, 11:35:07 ) *
Jeśli gość odpowie dobrze na te pytania, które podałem to po co go jeszcze z kodu sprawdzać na miejscu? Sprawdzi się na okresie próbnym.
Najważniejsza kwestia - kto zweryfikuje poprawność pytań?

Ponieważ prócz umiejętności, liczy się też poprawne pisanie kodu. Standardy PSR chociażby. Własnie z tego też go możesz spradzić ;)

A jak.. hmm wystarczy prosta implementacja wzorca MVC np. dla logowania/rejestracji użytkowników w oparciu o PDO. To dość proste, z palcem w nosie napisze to w mniej niż 20minut.
matiit
W sumie racja smile.gif
Tylko, żeby to nie było na kartce, lepiej posadzić przed kompem. Aczkolwiek wtedy jest inne środowisko itd. i nie wiem czy z palca wszystko w 20minut zdąży się napisać... mi by się myliły skróty klawiszowe, nie byłoby mojej ulubionej klawiatury itd, do tego dochodzi stres.. smile.gif
Nie lepiej dać bardziej 'spersonalizowane' zadanie do domu?
dawstaw
Cytat(matiit @ 16.04.2013, 11:44:55 ) *
W sumie racja smile.gif
Tylko, żeby to nie było na kartce, lepiej posadzić przed kompem. Aczkolwiek wtedy jest inne środowisko itd. i nie wiem czy z palca wszystko w 20minut zdąży się napisać... mi by się myliły skróty klawiszowe, nie byłoby mojej ulubionej klawiatury itd, do tego dochodzi stres.. smile.gif
Nie lepiej dać bardziej 'spersonalizowane' zadanie do domu?

A możecie dać jakieś zadanie do zrobienia przed kompem ? Takie właśnie na 15-30 minut roboty...?
!*!
Cytat(matiit @ 16.04.2013, 11:44:55 ) *
W sumie racja smile.gif
Tylko, żeby to nie było na kartce, lepiej posadzić przed kompem. Aczkolwiek wtedy jest inne środowisko itd. i nie wiem czy z palca wszystko w 20minut zdąży się napisać... mi by się myliły skróty klawiszowe, nie byłoby mojej ulubionej klawiatury itd, do tego dochodzi stres.. smile.gif
Nie lepiej dać bardziej 'spersonalizowane' zadanie do domu?

Bez przesady. Jak ktoś wie co robi i używa czegoś więcej niż kopiuj/wklej to wystarczy mu notatnik. To nie jest w końcu kod odpalenia rakiet, a chyba jedna z najprostszych rzeczy.
A dając zadanie do domu, to równie dobrze można by go/ją olać tekstem "zadzwonimy do Pana/Pani". Wejdzie Ci taki później na forum.php.pl i będzie pytał czy ma dobrze napisany kod.
matiit
@!*!
Niekoniecznie, ja jak byłem na rozmowie u obecnego pracodawcy, przez godzinę toczyła się techniczna rozmowa z programistą, panowie byli zadowoleni, ale nie miałem nigdzie swojego kodu do pokazania, powiedzieli, ze wyślą mi zadanie, żeby zobaczyć "styl" itd.

Nastepnego dnia dostałem zadanie, trochę bardziej skomplikowane niż standardowy CRUD, dochodziła walidacja, ajax. Wszystko miało być we frameworku, którego ja nigdy nie używałem, a w firmie jest podstawowym.

Dostałem 2 dni, napisałem, byli zadowoleni, pracę dostałem.
Spawnm
Ostatnio widziałem ciekawą ofertę pracy. Najpierw rozmowa, potem (płatny) dzień w firmie jako pracownik. Moim zdaniem najlepsze wyjście. Już w trakcie rekrutacji wyjdzie czy obie strony są sobą zainteresowane.
Zadanie testowe na czyimś firmowym lapku to koszmar i nie pokazuje niczego, czego nie dało by się dowiedzieć poprzez rozmowę.


Cytat
umiejętność programowania obiektowego - Smarty

Padłem...
!*!
@matiit Kwestia podejścia, ja bym takiemu czemuś nie ufał, bo po co sobie później głowę zawracać, jakby się okazało, że ktoś nie potrafi napisać poprawnie ifa. A tak jest od razu, czarno na białym, bez okresu zwłoki, nawet gdyby pisanie przed delikwenta miało trwać dłużej niż 20 minut.
PrinceOfPersia
weź postaw go przed specjalnie spreparowanym ZŁYM kodem i spytaj go, jakby poprawił, np.:
1. co w tym kodzie jest dziwnego bądź nieprawidłowego? (niech wymieni wszystkie dziwne rzeczy):
Kod
$naszlogin= $_GET['login'];
$naszehaslo = $_GET['haslo'];
$naszrezultat = mysql_query("SELECT * FROM userzy WHERE login='$login' AND haslo='$pass'");
(...)

(chodzi o brak zabezpieczeń, pomylone nazwy zmiennych, żadanie przez get etc. )

2. co w tym kodzie jest złego:
Kod
echo "<table><tr><td id="menu" class="lewe menu"></td>";
echo "<td id="menu" class="prawe menu"></td></tr></table>";
echo "<font color=red>Witamy na naszej stronie";
echo "<marquee>bla, bla</marquee";

(brak oddzielenia logiki od widoku, układ na tabelkach, błędny html itp.)

możesz też spytać bardziej z teorii, np.:
- do czego służy mimetype (nie mylić z doctype) i jak można to ustawić używając protokołu HTTP
- co to jest XSS (nie mylić z XSLT) i jak można się przed nim obronić?
- jakie znasz systemy szablonów PHP
- co to jest stackoverflow.com? (to większość programistów umiejących googlować wie, jeśli nie wie, to być może nie umie googlować, bo to strona która wyskakuje zawsze jak się czegoś szuka związanego z programowaniem).

edycja: aha, chodzi o stronę stackoverflow.com, a nie o sytuację przeładowania stosu.
matiit
@!*! wg mnie jeśli ktoś odpowie sensownie na pytanie dot. różnicy klasy abstrakcyjnej mi interfejsu to z ifami problemów nie będzie miał smile.gif

Cytat
Zadanie testowe na czyimś firmowym lapku to koszmar i nie pokazuje niczego, czego nie dało by się dowiedzieć poprzez rozmowę.

Zgadzam się w 100%
usb2.0
@PrinceOfPersia
no kod ktory dales jest chyba troszke zbyt oczywisty nie sadzisz? wink.gif
!*!
Cytat(matiit @ 16.04.2013, 12:03:09 ) *
@!*! wg mnie jeśli ktoś odpowie sensownie na pytanie dot. różnicy klasy abstrakcyjnej mi interfejsu to z ifami problemów nie będzie miał :)

Zdziwiłbyś się, jeśli zespół przestrzega PSR (a powinien, bo to ułatwia pracę chociażby w przerzucaniu kodu z firmy do firmy), ile błędów można w prostym if narobić :D
skowron-line
Cytat
- jakie znasz systemy szablonów PHP
- co to jest stackoverflow.com?

To pojechałeś.

@Spawnm ma rację, dobrze jest się umówić na dzień próbny, sprawdzić jaką człowiek ma organizację pracy, kulturę osobistą.
Presja czasu i fakt że ktoś CI patrzy na ręce sprawia że ciężko jest sie skupić, dodatkowo taka osoba będzie się bała zajrzeć do manuala bo będzie jej sie wydawało że nie wypada, a umiejętność przeszukania manuala to też istotana sprawa, wiele osób nie pamięta wszystkich funkcji ale jak się im pokaże liste funkcji do obsługi tablic to będzie wiedziało której funkcji użyć.
matiit
Ale tego ktoś może się douczyć, nie warto IMO skreślac z miejsca kogoś ogarniętego tylko dlatego, że napisze
  1. function a ( $x )...


Zamiast
  1. function a($x)..
!*!
Tak, jakie te rozmowy kwalifikacyjne mogą być brutalne. Na wejściu zdzielić kogoś pałką, dobić nogi kijem od mopa, tylko ręce zostawić, bo jakoś musi smyrać klawiaturę. I oczywiście kawę podać jak w lukas banku, niekoniecznie w kubku z napisem "pier***le nie robię".
Albo ktoś się nadaje, albo nie. Stres.. każdy żyje w stresie, szczególnie jak ma oddać kod na wczoraj, które było miesiąc temu wink.gif
Jeśli podstawowe pytania i zadanie które jest banalne, delikwenta nie udupią, to wtedy można go wdrażać w magię firmy. Przeniesienie tego wszystkiego na "do domku, mamusia poprawi" jest bez sensu.

ps. idę właśnie ściąć klika głów...
crazy191
Cytat(!*! @ 16.04.2013, 11:40:41 ) *
Ponieważ prócz umiejętności, liczy się też poprawne pisanie kodu. Standardy PSR chociażby. Własnie z tego też go możesz spradzić ;)

A jak.. hmm wystarczy prosta implementacja wzorca MVC np. dla logowania/rejestracji użytkowników w oparciu o PDO. To dość proste, z palcem w nosie napisze to w mniej niż 20minut.


Dlaczego akurat PDO? Nie wszyscy muszą korzystać z PDO.

Zdecydowanie najlepszy jest test, dać zakodować programiści z doświadczeniem logowanie/rejestracja na rozmowie bym się wstydził.
matiit
Test...
Tak, ale tylko połączony z rozmową i komentarzami do pytań smile.gif
Test bardziej jako 'notatki' do rozmowy.

Ale ile osób tyle sposobów.
!*!
Cytat(crazy191 @ 16.04.2013, 13:07:00 ) *
Dlaczego akurat PDO? Nie wszyscy muszą korzystać z PDO.

Musisz znać PDO, tu nie ma żadnego "ale".
crazy191
Cytat(!*! @ 16.04.2013, 13:09:55 ) *
Musisz znać PDO, tu nie ma żadnego "ale".



Muszę znać PDO aby być programistą PHP, to ciekawe.
!*!
Cytat(crazy191 @ 16.04.2013, 13:13:30 ) *
Muszę znać PDO aby być programistą PHP, to ciekawe.

Albo jest się koderem, albo klepaczem kodu. Nikt nie zatrudni niedzielonego kierowcy do rajdów NASCAR.
crazy191
Jeżeli na co dzień koduje w YII, Symfony korzystam z Doctrine a nie znam PDO bo po prostu nigdy nie musiałem używać myślisz, że jestem klepaczem?
!*!
Tak. Jedno nie wyklucza drugiego. A jeśli korzystasz z czegoś na zasadzie "bo działa", to wybacz.
crazy191
Cytat(!*! @ 16.04.2013, 13:20:33 ) *
Tak. Jedno nie wyklucza drugiego. A jeśli korzystasz z czegoś na zasadzie "bo działa", to wybacz.


Jedno nie wyklucza drugiego a piszesz, że jak ktoś nie zna pdo jest klepaczem:) Tak z ciekawości w pracy używasz jakiegoś frameworka czy piszesz wszystko z palca?
!*!
Nie zrozumiałeś. To że korzystasz z FW z DC nie zwalnia Cie z nieznajomości podstaw PHP, a tym bez wątpienia jest PDO. Bo co mi po kimś kto wykuł na pamięć działanie FW, skoro nie będzie wiedział co zrobić, gdy takie samo rozwiązanie będzie trzeba napisać najprościej w czystym php.
PrinceOfPersia
Cytat(usb2.0 @ 16.04.2013, 12:04:29 ) *
@PrinceOfPersia
no kod ktory dales jest chyba troszke zbyt oczywisty nie sadzisz? wink.gif

gdyby był oczywisty, to nie byłoby go w skryptach ani na stronach, nie sądzisz? Gdyby był oczywisty to by ludzie nie wrzucali podobnych kwiatków na forum, przy okazji pytania o coś?
Na rekrutacje przecież nie przychodzą tylko profesjonaliści, ale również początkujący, studenci itp.

edit: najpiękniejszy kwiatek jaki kiedyś zobaczyłem to zapisywanie stanu zalogowania admina w cookie na zasadzie admin=1, czy coś w ten deseń.
matiit
Cytat("PrinceOfPersia")
edit: najpiękniejszy kwiatek jaki kiedyś zobaczyłem to zapisywanie stanu zalogowania admina w cookie na zasadzie admin=1, czy coś w ten deseń.

Dobrze, że nie jako parametr GET smile.gif
memory
Jak takie pytania zadają na rozmowach to czas zostać programistą heh.

Mi bardziej podchodzą na młodego programistę/staż.

XSS,PDO,MVC, logowanie,rejestracja,klasa abstrakcyjna to są podstawy podstaw.
luckyps
Wg mnie najlepsze sa formy "testow" poprzez rozwiazywania problemow...

Np. Mamy problem X - prosze podac sposob lub kilka jak to rozwiazac / ominac itd...

Czym sie rozni X od Y - bez urazy, ale tego mozna nauczyc malpy wink.gif
Adi32
Łatwe te przykłady podajecie.

Ja bym dozucił do podstawowych pytań takie jakie sam słyszałem:
- Czym się różni mysql_* o PDO, dlaczego warto przestawić się na PDO.
- Co to jest kompozycja?
- Co to są Iteratory? Podaj przykład.
- Czym charakteryzują się transakcje?
- Co to jest zakleszczenie?
- Jak działają indexy i jak należy je stosować?

Czym się różni klasa abstrakcyjna od interfejsu jest tak banalnym pytaniem, że nie wiem czy ma sens zadawanie go.
viking
Zakleszczenie w PHP?
Pilsener
Cytat
Programista powinien znać:
php
curl
mySQL
umiejętność programowania obiektowego - Smarty
ewentualnie zend

Jakie pytania byście zadali takiej osobie chcąć sparawdzić jej umiejeności i kwalifikacje na takie stanowisko ?


Ja bym się zapytał bardzo chytrze:

Czy znasz php, curl, MySQL, Smarty i ewentualnie Zend?

A jeśli mam kilku takich to biorę tego, którego doświadczenie, portfolio projektów itp. bardziej mi odpowiada.
I tak wszystkiego nie sprawdzisz w parę minut poza tym są ludzie, którzy źle wypadają na różnych testach i rozmowach choć niekoniecznie mogą być złymi pracownikami. Ja bym nie ryzykował, że stracę dobrego pracownika tylko dlatego, że na pytanie "czym się różni interfejs od klasy" odpowiedział np. tak jak mi się zdarzyło:
- przede wszystkim to wszystkim!
- już myślałem, że Pan o to nie zapyta!
- nie uważa Pan, że to pytanie jest takie sobie?

No i ktoś może mieć po prostu pecha albo być na kacu. Nerwy też robią swoje i często ktoś nie jest w stanie nawet powiedzieć jak się nazywa a co dopiero rozwiązać jakieś testy smile.gif Pomijam już dobre rozumienie pytania czy braki w "fachowej" terminologii.

Gdybym ja usłyszał np. pytanie:
Cytat
Czym się różni mysql_* od PDO
- to bym pewnie odpowiedział, że mysql to baza danych a PDO to nie baza danych smile.gif

Różne są metody ale jak ktoś chce ściemniać to i tak ściemni. I są jeszcze pozostałe przypadki: gość może być leniwy, nieodpowiedzialny, pijany czy najarany - miałem takie przypadki, gdy kierownik kazał coś zrobić a koleś się obraził i miesiąc nie odbierał telefonów albo wziął rzeczy, wyszedł i tyle go widzieli smile.gif

Nie sprawdzisz tego wszystkiego a jak będzie robił nie wiadomo jakie rekrutacje stracisz tylko czas. Poza tym nawet jak ktoś czegoś nie wie to w 90% sobie poradzi a w pozostałych 10 koledzy pomogą. Grunt, żeby nie robił dwa razy tych samych błędów a prędzej czy później będzie ok.
hind
@viking: A czemu by nie, zdażyło siepare razy jak skrypt źle zwolnił zasoby/zawiesił się i kolejny nie mógł się przez to wykonać...
m44
Często jest tak, że podczas rekrutacji firmy chcą tylko zbudować wokół siebie aurę profesjonalizmu, a "rekruterzy" czerpią emocjonalną satysfakcję z wymyślania przeróżnych pytań. Czasami są nimi sami programiści oddelegowani na chwilę do innego zadania.
A potem jak się człowiek rozejrzy po kodzie (już po zatrudnieniu), który jest rzeczywiście zapisany, to zadaje sobie pytanie, po co oni pytali mnie o takie rzeczy, skoro jakość tego kodu ma się nijak do pytań zadawanych wcześniej.

Świat jest daleki od doskonałości a ludzie są w stanie zrobić wiele, żeby potwierdzić swoją zajebistość. rolleyes.gif
Oczywiście nie jest to regułą, ale często tak własnie bywa.
viking
Czasami część pytań zadawana jest też na zasadzie, znalazłem coś fajnego, raz na milion lat z tego się skorzysta ale patrzcie jaki jestem guru. Tylko raczej nie tak powinien wyglądać test.
Przykładowo co da nadanie upawnień chmod 0000.
PrinceOfPersia
Też mam takie wrażenie. Przychodzisz, patrzą żeś młody, a oni starsi i doświadczeni więc trochę na siłę wymyślają pytania z kosmosu, żeby cię zagiąć i błysnąć zajebistością.

Z drugiej strony uważam, że warto pytać o podstawy podstaw, bo dzisiaj każdy chce być programistą (bo np. przeczytał, że programiści dobrze zarabiają) ale nie każdemu to wychodzi, więc jakaś selekcja musi być (a w CV i portfolio to można sobie nakłamać, niestety).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.