pytania przygotowawcze do pracy.txt

(6 KB) Pobierz
1. Wszelkiego rodzaju operacje na tablicach, alokacja w stylu c i c++ (malloc, new), zwalnianie pamięci
2. Czas życia zmiennych, a dokładniej kiedy powstaje zmienna i kiedy jest ona niszczona w zależności czy jest ona odkładana na stercie czy na stosie itd.
3. Ogólna wiedza o klasach:
-zasięg (public, private, protected), co który oznacza, na co pozwala, z góry wskazówka że private nie pozwala na dziedziczenie a protectek zezwala na dziedziczenie.
-metody czysto virtualne
-klasy abstrakcyjne
-co oznacza polimorfizm
-metody virtualne: 
a) co to jest
b) jak działa
c) gdzie to można zastosować
-czemu podczas dziedziczenia destruktor powinien być virtualny
-4 metody tworzone domyślnie podczas tworzenia obiektu:
a)konstruktor
b)konstruktor kopiujący
c)destruktor
d)operator przypisania
-kolejności wywołania konstruktórów:
a) konstruktory klas z których dziedziczymy
b) konstruktory składowych klasy
c) konstruktor naszego obiektu
-kolejność wywołania destruktorów: odwrotna do konstruktorów
-zakresy podawane podczas dziedziczenia:
np: class moja klasa: public klasa, private klasa2, protected klasa3
-lista inicjalizująca konstruktora, jak działa jakie bonusy nam daje (głównie chodzi o to że możemy dzięki nim ustawiać pola typu const)
-funkcje/klasy zaprzyjaźnione
-przeciążanie operatoró
-konstruktor kopiujący (czym się różni kopia płytka od głębokiej)
-rzutowanie w górę i w dół podczas dziedziczenia
-metody statyczne:
a) co to jest
b) czy można używać w nich operatora this
c) po co nam one?
-co to są pola statyczne (głównie chodzi tu o to by zrozumieć że gdy tworzysz 20 obiektów klasy X to zwiększając atrybut typu static int a;  w jednej instancji obiektu to będzie on zmieniony we wszystkich instancjach tego obiektu a nawet nie musi istnieć obiekt żeby tego pola używać)
4. Rodzaje rzutowań ( c style, static_cast, dynamic_cast, reintrpret_cast, itd.)
5. Czemu nie powinno się używać kastowania w stylu c.
6. Makra - wymagana umiejętność pisania prostych makr tak żeby wiedzieć do czego to służy i jak tego używać
7. Wielowątkowość - zagrożenia (deadlock, itd), metody zabezpieczania (semafory, muteksy, itd.)
8. Czym się różni proces od wątku (głównie chodzi o to że wątki współdzielą pamięć w obrębie procesu, każdy proces ma swoją wydzieloną pamięć, proces posiada w sobie od razu wątek główny)
9. Proces kompilacji, jakie elementy kiedy co po sobie wykonują, kiedy preprocesor, kiedy linker, kiedy asembler
10. Porzucamy deva, piszemy pod Visual Studio (wiem to boli na początku ale potem nie chce się niczego innego używać)
11. Przypomnienie z użytkownia linuxa, polecenia te które mieliśmy na Systemch operacyjnych
12. Wyjątki, co to jest, dlaczego warto stosować, co można rzucić w wyjątku (czy można wywołać w obiekcie throw this;)
13. Templatki (szablony klas, funkcji) - to wystarczy dość pobierznie
14. Czym klasa różni się od struktury
15. Wskaźniki na funkcję
16. Przestrzenie nazw
17. Czym się różni wskaźnik od referencji, jak obu używać
18. Czy do referencji można przypisać NULL - ogólnie rzecz biorąc książki mówią że nie można i w zwykłym przypisaniu kompilator zaprotestuje, natomiast gdy zrobi się przypisanie używając wskaźnika to przejdzie ale przy próbie odczytu program wysypie się :>. Ogólnie lepiej mówić że się nie da, chyba że poda się fragment kodu który uzasadni to co pisałem.
19. Rodzaje pamięci programu: (ogólnie jest tego więcej ale chodzi jedynie o podział na te grupy)
a) stos
b) sterta
c) pamięć statyczna
20. Odnośnie rodzaji pamięci gdzie jaki się znajduje, przewidywane rozmiary, kiedy który jest używany, który jest szybszy który wolniejszy, dlaczego 
21. Podstawy znajomości ASCII:
- '\0' Terminator tablicy znakowej
- '\n' Znak nowej linni
- '\t' Tabulator
itd.
22. Czym się różni "" od ''
23. Czy konstruktor może być virtualny (nie)

Nieco materiałów:
1. Proces kompilacji
http://matrix.umcs.lublin.pl/so/t01_wstep/gcc.html
2. Wstępniak do rzutowań, trzeba oprócz tego jeszcze kilka stronek przejrzeć
http://www.asawicki.info/productions/artykuly/rzutowanie_typow_w_cpp.php5
3. Nieco wiedzy ogólnej
http://www.cplusplus.com/doc/tutorial/variables/
http://www.cplusplus.com/doc/tutorial/functions/
http://www.cplusplus.com/doc/tutorial/functions2/
http://www.cplusplus.com/doc/tutorial/inheritance/
http://www.cplusplus.com/doc/tutorial/polymorphism/
http://www.cplusplus.com/doc/tutorial/templates/
http://www.cplusplus.com/doc/tutorial/exceptions/
http://www.cplusplus.com/doc/tutorial/namespaces/
http://www.cplusplus.com/doc/tutorial/typecasting/
http://www.cplusplus.com/doc/tutorial/preprocessor/
http://www.cplusplus.com/doc/tutorial/pointers/
4. Wskaźniki na funkcję
http://www.cprogramming.com/tutorial/function-pointers.html
5. Pamięć programu
http://xion.org.pl/files/texts/mgt/html/1_8.html
http://bartoszewski.pr.radom.pl/archkomp_d/archkomp_2010_d_w03.pdf
Poniższy link moim zdaniem najbardziej wartościowy, a dokładnie wypowiedzi Gynvael'a Coldwind'a
http://www.uw-team.org/forum/viewtopic.php?t=5200

Znalazło by się tego pewnie cała masa, ale jest google i poradzisz sobie.

Książki które czytałem i mogę polecić:
Thinking in c++, Eckela
C   dla każdego - Jesse Liberty

Pierwsza pozycja wymaga nieco znajomości i gdy ktoś się nie zna to może sprawiać problemy druga prostszym językiem ale zawiera przekłamania i nieco niedomówień. Dlatego zalecam Eckela jako drugą książkę.
Obie książki posiadam w pdf więc mogę podesłać.

Co do samej rozmowy:
Trzeba dużo mówić, opowiadać o tym co się robiło na uczelni jakie projekty, co się w pracy robiło. (Tylko w przypadku jak się czegoś nie wie to lepiej nie bajertować)
Test jest po angielsku, ale nie sprawia problemów.
Na 100% będzie styczność z kodem, coś do napisania, lub analiza programu (np co wyświetli program [częste zadanie z polimorfizmu i makr]).
Tak więc nie poprzestawaj na samym czytaniu bo to nic nieda, wszystko trzeba przekompilować i dojść dlaczego coś działa a dlaczego nie.
Jak już pisałem zalecam Visuala, używamy go w pracy więc będzie potrzebny, dev'a nikt nie używa
Na rozmowie należy się pochwalić:
-znajomością języków programowania
-znajomością systemów operacyjnych
-znajomością UML
-środowiskami pracy (w czym pisane były progamy, w czym projektowany uml, w czym bazy danych)

Zapewne to wszystko wiesz, ale tak dla bezpieczeństwa mówię, bo często ludzie nie potrafią poprowadzić rozmowy kwalifikacyjnej na swoją korzyść 
Zgłoś jeśli naruszono regulamin