C++ Poziom zaawansowania


(Tomo8813) #1

Witam panowie programiści. Mam do was takie małe pytanko i choć może wydawać się głupie to dla mnie jest dość istotne gdyż pisze właśnie CV które mam dziś złożyć do firmy programistycznej i szczerze mówiąc utknąłem w jednym miejscu ... mianowicie zastanawiam się nad swoim poziomem zaawansowania programowania w języku C++. Szczerze mówiąc odnajduje się w nim dosyć dobrze, jestem na etapie tworzenia klas virtualnych a więc dziedziczenie jak i metody oraz przesyłanie argumentów do funkcji poprzez wskaźniki i referencje opanowane w zadowalającym stopniu. Tworzenie List cyklicznych jedno-dwukierunkowych drzew stosu i kolejki opanowane również do stopnia tworzenia takich struktur jak i wykonywania na nich podstawowych operacji. Problem w tym panowie że nigdy nie programowałem w C czy w C# więc moje doświadczenie w programowaniu to aż dwa lata :frowning: z tym że powierzony mi materiał w szkole przerabiałem sumiennie, z dużym zrozumieniem jak i z wielka przyjemnością :slight_smile: ... hmm i co mam teraz napisać w CV żeby nie przecenić swoich możliwości ? Gdy wpisze moja wiedzę na temat C++ jako podstawową ktoś czytając te CV może pomyśleć sobie że moja wiedza ogranicza się do podstawowych typów danych, funkcji sterujących oraz operatorów co w symfonji zajmuje aż 4 działy w raz z działem startujemy :lol: i tu prośba właśnie do was bo większości znacie pewnie ten język na wylot więc doskonale wiecie w jakim stopniu znam owy język. Dodatkowo do klas mogę dorzucić przeładowanie operatorów czyli na pewno nic profesionalnego ale czy podstawowego ? Z góry ogromne dzięki, za pomoc i być może pozytywną decyzję w sprawie przyjęcia do pierwszej mojej takiej pracy :). Pozdrawiam


(system) #2

Moim zdaniem w programowaniu, bardziej rozchodzi się o sposób rozwiązywania danego problemu (Było w poprzednich już tutaj tematach). Można również się sprawdzić na takich portalach, jak http://www.spoj.pl jest tam podział na poziomy, w jakimś tam sensie można mieć wtedy odniesienie ale na pewno nie całkowicie.

pozdrawiam


(nnick) #3

Tak naprawdę to raczej jesteś na poziomie podstawowym - tak mniej więcej 1 semestr przedmiotów "Podstawy programowania" i "Algorytmy i struktury danych" na pierwszym roku polibudy


(somekind) #4

sanczopanczo , składnia języka to jest po prostu podstawa, bez której nie da się programować. Jej znajomość, to poziom zerowy, a nie zaawansowany.

Dla pracodawcy liczy się to, jakie znasz biblioteki, technologie, frameworki, itp. i jakimi projektami (własnymi, open source czy komercyjnymi) możesz się pochwalić. A dwa lata programowania na studiach to jest mniej niż miesiąc prawdziwego, komercyjnego doświadczenia.


(Juszczyk Pawel) #5

To co piszesz to faktycznie podstawy. Poza tym, nie pamiętam, kiedy ostatnio samodzielnie implementowałem listę, od tego jest STL.

Żeby dostać się do mojej firmy musisz mieć konkretne pojęcie o wzorcach projektowych, unit testach (ogólnie inżynieria oprogramowania), programowanie wielowątkowe plus jakieś doświadczenie.

Na studiach czy szkole nie możesz dobrze się nauczyć programowania. Za dużo odtwarzania, za mało własnej inwencji (chociażby brak możliwości samodzielnego popełniania i usuwania błędów). Musisz sam pisać, żeby dobrze nauczyć się programować.

Jeśli chcesz, mogę podesłać Ci kilka pytań kwalifikacyjnych, napisz na priva. Na Twoim miejscu pomyślałbym raczej o praktyce a nie pracy na etat.


(Ryan) #6

Istnieje kilka dużych firm oceniających zaawansowanie w językach programowania i mają nawet względnie usystematyzowaną skalę:

1.00 - 1.50 Novice

1.51 - 2.50 Basic

2.51 - 3.50 Proficient

3.51 - 4.50 Advanced

4.51 - 5.00 Expert

Na podstawie opisu Twojego doświadczenia łapiesz się w najlepszym wypadku na stopień Basic, w praktyce pewnie jednak zostałbyś oceniony jako Novice. Znajomość wycinka teorii nie kwalifikuje się jako znajomość języka, więc podczas podobnego egzaminu poszłoby Ci raczej słabo (a pytania uznałbyś za głupie i frustrujące). Większość takich testów to 30 pytań, 2-3 minuty na pytanie. Poniżej 5 przykładowych (wcale nie bardzo trudnych) pytań z C++. Zsumuj liczbę poprawnych odpowiedzi, uzyskasz bardzo zgrubną ocenę swoich umiejętności w w/w skali.

  1. Czym się różni płytka kopia od głębokiej kopii obiektu? Kiedy stosujemy jaką kopię? Czy któraś ma jakieś efekty uboczne?

  2. Czym jest destruktor wirtualny i kiedy go używamy?

  3. Opisz różnice między kontenerami STL.

  4. Kiedy wywołujemy ręcznie destruktor klasy?

  5. Napisz program odwracający kolejność bitów w zmiennej całkowitej int. Jakie możliwe implementacje znasz? Jak uczynić implementację niezależną od platformy?

@Protected_48: Pytanie nie dotyczy umiejętności programowania per se a znajomości C++. C++ to szalenie złożony język.