Beata
Szwichtenberg
Student, Akademia
Marynarki Wojennej w
Gdyni
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Witam,interesują mnie przykłady zadań z c++, jakie mogą pojawić się na rozmowie kwalifikacyjnej na stanowisko programisty c++. Jakby ktoś mógł podać jakieś przykłady, byłabym wdzięczna:) Dodam, że firma wymaga PODSTAWOWEJ znajomości języka (bez doświadczenia) i chciałabym wiedzieć, jakiego mniej więcej zakresu zagadnień można sie spodziewać?
Pozdrawiam i z góry dziękuję.
Łukasz Podkalicki SabaliSystems.com
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
To co firma wymaga, czyli PODSTAWOWEJ znajomości języka C++, może być bardzo releatywne w moim czy Twoim odczuciu. Za podstawową rzecz w C++ rozumiem znajomość gramatyki, semantytki i pragmatyki tego języka - utrwaloną w praktyce. Przez "bez doświadczenia" rozumiem, że firma chce zatrudnić osobę, która nie musi mieć (ale może) doświadczenie w realizacji komercyjnych aplikacji w tym jęzku. Myślę, że na rozmowie kwalifikacyjnej możesz się spodziewać pytań praktyczno-teoretycznych, przykładowo: czym różni się wskaźnik od referencji ? czym różni się dynamic_cast od static_cast? Może dostaniesz kawałek kodu do analizy + pytania do niego, a może to będzie zwykła pogadanka przy kawie :) Powodzenia!Ł
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Na rozgrzewke daje cos takiego:Zaprojektowac hierarchie klas Zwierzatko, Kotek, Piesek. Kazda ma miec metode daj_glos().
Tu pytam jak defniujemy interfejs w C++ (klasa czysto abstrakcyjna itp, co daje virtual, czy potrzebny destuktor).
Zdefiniowac vector wskaznikow na zwierzatka, wrzucic tam pare kotkow i pieskow. Dalej przechodzimy po wektorze wykonujac polimorficzny call i zwierzatka daja glos (wypas :P). Najlepszy foreach z boost::bind, potem jakis ptr_fun, potem iteratory (czy beda const? :P) a potem zwykly for (ostatecznie).
75% kandydatow z doswiadczeniem (1-5 lat) nie potrafi wykonac tego zadania :)Przemysław O. edytował(a) ten post dnia 06.05.10 o godzinie 13:51
Krzysztof
Kondrak
starszy programista,
Gamelion Studios
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Ja dostałem kiedyś klasyczne już chyba pytanie: Jak wykryć, czy w liście jednokierunkowej jest pętla?
Jerzy M. C# Developer
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Przemysław O.:
75% kandydatow z doswiadczeniem (1-5 lat) nie potrafi wykonac tego zadania :)
hmm... pociąć się idzie ;->
Ale fakt, zadanie fajne - przez to, że ostatnio C++ nie ruszałem, trochę się namęczyłem - bo to się za klasą średnika nie postawiło, czy przed funkcją public się wciskało ;-)
[trochę zmodyfikowane, w stosunku do pytania - bo co tam pętla ;-) ]
http://ideone.com/PI1KD
[Do kompletu potrzebny jest jeszcze destruktor wirtualny]Jerzy M. edytował(a) ten post dnia 06.05.10 o godzinie 16:54
Adam
Michalski
Projektant/Programis
ta freelancer
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Jerzy M.:
[trochę zmodyfikowane, w stosunku do pytania - bo co tam pętla ;-) ]
http://ideone.com/PI1KD
Brakuje Ci destruktorów. Powinny być wirtualne na dodatek.
Przemysław O.:
Na rozgrzewke daje cos takiego:
Zaprojektowac hierarchie klas Zwierzatko, Kotek, Piesek. Kazda ma miec metode daj_glos().
Tu pytam jak defniujemy interfejs w C++ (klasa czysto abstrakcyjna itp, co daje virtual, czy potrzebny destuktor).
75% kandydatow z doswiadczeniem (1-5 lat) nie potrafi wykonac tego zadania :)Przemysław O. edytował(a) ten post dnia 06.05.10 o godzinie 13:51
Powiem wiecej. 90% ludzi z 5-letnim doswiadczeniem widzac cos tego typu sie dziwi:
copy(path.begin(), path.end(), ostream_iterator<Node<string>*>(cout, " "));
Ludzie po prostu slaba znaja <algorithm>. Co tu mowic o booscie... ;)Adam Michalski edytował(a) ten post dnia 06.05.10 o godzinie 16:34
Jerzy M. C# Developer
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Adam Michalski:
Jerzy M.:
[trochę zmodyfikowane, w stosunku do pytania - bo co tam pętla ;-) ]
http://ideone.com/PI1KD
Brakuje Ci destruktorów. Powinny być wirtualne na dodatek.
Damn, rozwydrzyłem się tym C# za bardzo ;-)
A co lepsze, sobie ostatnio sam na blogu pisałem, żeby o tym nie zapominać :D
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Krzysztof Kondrak:2 wskaźniki :) Przyznam, że jak dostałem tą zagadke od kumpla to nie wpadłem na to sam.
Ja dostałem kiedyś klasyczne już chyba pytanie: Jak wykryć, czy w liście jednokierunkowej jest pętla?
Łukasz Podkalicki SabaliSystems.com
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Przemysław O.:
Krzysztof Kondrak:2 wskaźniki :) Przyznam, że jak dostałem tą zagadke od kumpla to nie wpadłem na to sam.
Ja dostałem kiedyś klasyczne już chyba pytanie: Jak wykryć, czy w liście jednokierunkowej jest pętla?
Lista jednokierunkowa cykliczna (ogon wskazuje na głowę).
To ode mnie jeszcze jedno,
czym różnią się instrikcje ++i od i++ (jak to się ma do iteratorów?)
Daniel
Łysiak
MyBusiness =
system.Create(
eHobby::Programming
| eHobby:...
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Zależy od pracodawcy i czego od Ciebie będzie faktycznie wymagał. W przypadku "podstawowego poziomu trudności" może nie będzie wogóle pytań stricte z c++. Czasami nie muszą być to pytania / zadania związane bezpośrednio z językiem programowania:Jeden poprosił mnie kiedyś podczas pierwszej rozmowy o wykonanie prostej aplikacji. Na drugiej okazało się, że podczas prezentacji wyniku - programu oceniał efekt a nie kod - czyli jak "błędoodporny" jest interfejs użytkownika i co w nim się da zrobić (ponieważ program obrabiał pliki, to czy programista pomyślał o tym, czy da się cofnąć operacje / odtorzyć dane nawet w przypadku napotkania błędu "w trakcie pracy", czy potrafi program zapamiętać ustawienia itp.)
Inny zaś zasypał testami typu "2 pokoje, w jednym 3 żarówki w drugim 3 wyłączniki..." "znalezienie jednej lżejszej monety w zestawie 8 monet mając do dyspozycji wagę szalkową i minimalną ilość ważeń(bodajże 2)". W każdym bądź razie metody można znaleźć w necie.
Jeszcze inny po prostu poprosił o próbki kodu (interesowała go i całego teamu czytelność i dbałość o dokumentację).
W końcu dobry lider projektu bądź sam pracodawca nigdy nie powinen nowej osoby rzucać na głęboką wodę już stworzonego projektu tylko albo wyznaczyć kogoś albo samemu wdrożyć rekruta w arkana i przez pewien okres czasu pilnować, bo niuanse z algorytmów i struktur danych czy samego języka w normalnym pisaniu programu można sobie przypomnieć korzystając z książek/internetu a sama znajomość "na blachę" tych zagadnień nie zagwarantuje wysokiej jakości kodu.Daniel Ł. edytował(a) ten post dnia 14.05.10 o godzinie 19:37
Szymon
Kubisiak
Programista C/C++
Win32 DirectX MySQL
Symbian
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Równie dobrze możesz trafić na ludzi którzy sami nie będą rozumieć zadawanych przez siebie pytań. Ja kiedyś trafiłem na kolesi którym przy projektowaniu algorytmu wydawania reszty do automatu nie spodobało się moje odejmowanie w pętli zamiast którego woleli dzielenie + resztę z dzielenia.Wymyślenie prostego algorytmu jest dobrym testem na to czy człowiek w ogóle myśli jak programista.
Krzysztof
Kondrak
starszy programista,
Gamelion Studios
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Łukasz Podkalicki:
Lista jednokierunkowa cykliczna (ogon wskazuje na głowę).
Wtedy dodali założenie, że nie wiemy, gdzie jest początek listy.
Adam
Michalski
Projektant/Programis
ta freelancer
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Szymon Kubisiak:
Wymyślenie prostego algorytmu jest dobrym testem na to czy człowiek w ogóle myśli jak programista.
Skreśliłbym ostatnie dwa słowa i dostaniemy prawdę życiową :) Ogólniejszą - dotyczącą nie tylko programowania :)
Krzysztof
Kondrak
starszy programista,
Gamelion Studios
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Łukasz Podkalicki:
czym różnią się instrikcje ++i od i++ (jak to się ma do iteratorów?)
Do iteratorów czy ogólnie do typów złożonych?
Beata
Szwichtenberg
Student, Akademia
Marynarki Wojennej w
Gdyni
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
pytanie o i++ to banalne, klasy też do zrobienia, ale z tą listą to się poddaję!!! :) możesz wyjaśnić o co chodzi?
Adam
Michalski
Projektant/Programis
ta freelancer
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Spróbuj sama rozwiązać. Podpowiedź jest wyżej: potrzebne są 2 wskaźniki. Jak to wiesz, to już banalne.
Łukasz Podkalicki SabaliSystems.com
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Beata Szwichtenberg:
pytanie o i++ to banalne, klasy też do zrobienia, ale z tą listą to się poddaję!!! :) możesz wyjaśnić o co chodzi?
Nom, ja też myślałem, że i++ to banał i popełniłem błąd (tu m.in. odpowiedź dla Krzycha). Iteratory dla enuma o losowych wartościach, enum i { A=0, B=5, C=3, ..., N=98} - mój błąd polegał na założeniu, że enum wygląda standardowo {A=0, B, C, ..., N}, czyli że kolejne elementy listy są inkrementowane o 1 i zaimplementowane iteratory nie były sprawne dla innych założeń. Cóż, zdarza się :))
Maciej
Hehl
w teorii Automatyk i
Robotyk (po wydziale
mechanicznym), ...
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Wtedy dodali założenie, że nie wiemy, gdzie jest początek listy.
Podejrzewam, że chodzi o początek cyklu. Jeśli ogon wskazuje na głowę , i to wiemy, to nie ma co sprawdzać. Jest cykl. jeśli są dwie możliwości - albo ogon wskazuje na głowę, albo nie ma cyklu, to łatwo to sprawdzić. Jeśli cykl występuje to jesteśmy w środku, prosta sprawa.
Gorzej jeśli trzeba sprawdzić czy występuje cykl, ale nie wiadomo gdzie się zaczyna. Nie jest trudno wymyślić brzydkie rozwiązanie o złożoności O(n^2). Ale coś bardziej eleganckiego to nie wiem czy jest takie oczywiste. Ja w każdym razie prędzej poznałem rozwiązanie niż sam wpadłem. Potem poznałem drugie nie brzydsze.Maciej Hehl edytował(a) ten post dnia 07.05.10 o godzinie 01:21
Łukasz Podkalicki SabaliSystems.com
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Krzysztof Kondrak:
Łukasz Podkalicki:
Lista jednokierunkowa cykliczna (ogon wskazuje na głowę).
Wtedy dodali założenie, że nie wiemy, gdzie jest początek listy.
Pierwsze co mi przychodzi na myśl to trawersować listę od zadanego elementu, np. d. Zapamiętać wskazanie i porównywać podczas trawersowania z elemntowami listy aż do uzyskania efektu równości wskazań (d == g->next) lub końca listy (g->next == NULL).
jednokierunkowa: a->b->c->d->e->f->g
jednokierunkowa cykliczna: a->b->c->d->e->f->g->a
Krzysztof
Kondrak
starszy programista,
Gamelion Studios
Temat: Przykładowe pytania na rozmowie kwalifikacyjnej
Łukasz Podkalicki:
Nom, ja też myślałem, że i++ to banał i popełniłem błąd (tu m.in. odpowiedź dla Krzycha). Iteratory dla enuma o losowych wartościach, enum i { A=0, B=5, C=3, ..., N=98} - mój błąd polegał na założeniu, że enum wygląda standardowo {A=0, B, C, ..., N}, czyli że kolejne elementy listy są inkrementowane o 1 i zaimplementowane iteratory nie były sprawne dla innych założeń. Cóż, zdarza się :))
Pytanie tylko, kto w praktyce robi coś takiego. Z ciekawości próbowałem znaleźć rozwiązanie jak taki iterator zrobić dla nieciągłych enumów i jak do tej pory wynajduję odpowiedzi w stylu "to niewykonalne, użyj wektora".
