Czy jest szansa zostać programistą C++?

0

Wiadomo 7-15 lat temu wystarczyła bylejaka znajomość języka C, C++ dopiero wchodził, wobec czego firmy chętnie brały byle kogo kto tylko umiał programować. No i przez to łatwo było zrobić karierę, dziś ci co wtedy zaczynali rozwinęli się pracując w firmie i strugają ważniaków, śmiejąc się z tych co się do firmy nie dostają. Dziś mamy inne czasy. Na testach rekrutacyjnych są tego typu pytania:

class Klasa{
public:
	Klasa():a(0){
	delete this;
	};
	int a;
	~Klasa(){};
	void metoda()
	{
		cout<<"i co\n";
	}
};
//...
//w main:
Klasa *wacek=new Klasa();
wacek->metoda(); //o dziwo wyświetla
//wacek->a; //też wyświetla tylko losową wartość
//wacek->a=7; //nie da rady nadać parametru
//delete wacek; //błąd podczas wykonywania programu

Dlatego czy jest sens nauki C++, Javy skoro i tak są mizerne szanse na zatrudnienie, bo takich rzeczy jak powyżej, różnych krzaczków, są tysiące wobec czego nie ma szans się nauczyć i przez to zaliczyć testu rekrutacyjnego. Ja sobie powyższe rozpisałem i dalej nie wiem dlaczego wacek->metoda() wyświetla mi słowo "i co" w konsoli, nie powinno przecież.

0

Metoda jest wołana na rzecz obiektu, ale z niego nie korzysta - równie dobrze można ją wywołać na rzecz NULL. Przecież this to po prostu niejawny argument, zwykły pointer. Delete może być użyte nawet w konstruktorze, o ile destruktor niczego zawali to do czasu próby grzebania w obiekcie/kolejnej próby zwolnienia nic się nie wysypie.

7 lat temu to C++ tracił na popularności. Co do 'bylejakości' znajomości C++ to kpisz chyba? Nawet te kilka-kilkanaście lat temu nikt normalny by nie zatrudnił kiepskiego programisty, ten język jest zbyt niebezpieczny w rękach niewprawnego klepacza.

0

Nie bardzo rozumiem przykładowe zadanie. podałeś jakiś kod, ale co w ramach zadania należy z nim zrobić? Na czym polega to zadanie?

Jeżeli jest to firma prywatna, to jej właściciel decyduje, w jaki sposób wybiera ludzi do zatrudnienia. W takim razie, należy postawić takie pytania: Jaki jest powód takiego, a nie innego prowadzenia rekrutacji? Po co to się robi? Czym się kieruje ten, który układa zadania na test? Czy w firmie wykorzystuje się wiedzę potrzebną do ich rozwiązywania?

Moim zdaniem:

  1. W Polsce jest możliwa umowa na okres próbny, czyli nie więcej niż 3 miesiące, a przez taki długi czas da się dobrze prześwietlić człowieka pod względem przydatności w firmie.
  2. Jeżeli już jakiś test, to test powinien sprawdzać umiejętności, bez których pracownik nie jest w ogóle przydatny, a nie jakieś księżycowe, nikomu nie potrzebne umiejętności
  3. Jak ktoś pisze w CV, że zna język C++, to założę się, że w 99% przypadków, ta osoba nie zna 100% elementów i mechanizmów tego języka, ale umie napisać program co najmniej trochę bardziej skomplikowany niż "Hello world". Poza tym, zwykły C++ i C++/CLI różnią się miedzy sobą.
  4. Praca to nie uczelnia, na której ocenia się samodzielność. Jeżeli czegoś się nie zna, a jest potrzebne, to google stoją otworem, więc nie ma sensu prześwietlać kandydata na wszystkie możliwe umiejętności.
0
ellek napisał(a)

takich rzeczy jak powyżej, różnych krzaczków, są tysiące wobec czego nie ma szans się nauczyć i przez to zaliczyć testu
rekrutacyjnego

Niemożliwe żeby faktycznie wymagali czegoś, czego nie da się nauczyć. Skoro rekrutują, to potrzebują programistów. Jeśli kandydaci, by dostać się do firmy, musieliby rozwiązywać zadania, które są niemożliwe do rozwiązania, to by ich nie rozwiązywali. Więc nie dostawaliby się do firm. Więc firma nie zatrudniałaby nowych programistów.

Skoro jednak ktoś się dostaje to znaczy, że ktoś musi spełniać wymagania firmy. Więc rozwiązywać testy wystarczająco dobrze. Nie zawsze oznacza to rozwiązanie bezbłędne.

Pamiętaj, że trudniejsze testy praktycznie i tak nie utrudnią Ci rekrutacji, jeśli ma ona trwać określony czas lub poszukują osoby na określonym poziomie. Dadzą 2x trudniejsze testy? To kandydaci rozwiążą je 2x gorzej. I tak wezmą najlepszego.

Jeśli sztywnie określą minimum, jakie trzeba rozwiązać, to albo ktoś je spełni, albo nie i będą musieli przedłużyć rekrutację (a zwykle zatrudnia się kogoś, bo będzie potrzebny w niedalekiej przyszłości) lub obniżyć próg by móc kogoś przyjąć. Może dotrze wtedy do nich, że testy są bezsensowne.

A może takie nie są. Ten przypadek z delete w konstruktorze był już tu wałkowany na forum nie raz, jak mi się zdaje. Może chodzi o to, byś był w stanie wyjaśnić zachowanie programu.

Btw. gwiazdki w "c****" to cenzura, czy co?

// tak, była cenzura - deus

0

szansa jest i to duza, u mnie w firmie od caly czas poszukuja rekrutuja i co? przychodzi 50 kandydatow, z 3 jest o czym rozmawiac, dlaczego? bo szukaja PROGRAMISTOW a nie osob "znajacych" c/c++ :P

0

Ale faktycznie, delete this w konstruktorze to mozna napisac chyba tylko na potrzeby takiego testu, bo jakos nie widze zastosowania tego w praktyce.... chyba ze chcemy koniecznie, aby zastosowanie jednego z konstruktorów wywaliło program

0

Ale faktycznie, delete this w konstruktorze to mozna napisac chyba tylko na potrzeby takiego testu, bo jakos nie widze zastosowania tego w praktyce.... chyba ze chcemy koniecznie, aby zastosowanie jednego z konstruktorów wywaliło program

IMHO to pokazuje jak postrzegasz kod: czy tylko jako zbiór idiomów, które mają działać, czy może wiesz dokładnie co siedzi pod warstwą abstrakcji stworzoną przez język.

0
ellek napisał(a)

Wiadomo 7-15 lat temu wystarczyła bylejaka znajomość języka C, C++ dopiero wchodził, wobec czego firmy chętnie brały byle kogo kto tylko umiał programować. No i przez to łatwo było zrobić karierę, dziś ci co wtedy zaczynali rozwinęli się pracując w firmie i strugają ważniaków, śmiejąc się z tych co się do firmy nie dostają.

Nie wiem z kim rozmawiales, z kim obcujesz i co Ci zrobili na rozmowe kwal - ale wiem jedno, zostales skrzywdzony. Niezle bzdury piszesz.

A co do tematu, juz wielokrotnie sie wypowiadano tutaj - prog wejscia w ten biznes (bycie programista) w wielu firmach jest tak zatrwazajaco niski, ze spokojnie mozesz probowac. Jak juz tam bedziesz to sie przez 7-15 lat doszkolisz, i po tym okresie bedziesz mogl strugac cwaniaka.

0
rnd napisał(a)

MHO to pokazuje jak postrzegasz kod: czy tylko jako zbiór idiomów, które mają działać, czy może wiesz dokładnie co siedzi pod warstwą abstrakcji stworzoną przez język.

Nie wiem, co tutaj sugerujesz, ale jakbym ja na rozmowie dostał takie kwiatki, to bym się zapytał, po co właściwie o to pytają: czy tak "dla sportu" i sprawdzenia, czy może taki kod można spotkać w ich projektach?

Jeśli powiedzieliby, że owszem, to u nich normalka i każdy kto zna uberdokładnie język takie coś wnet zrozumie, to bym odpowiedział jedynie: "Dziękuję. Do widzenia."

0

Nie wiem, co tutaj sugerujesz, ale jakbym ja na rozmowie
dostał takie kwiatki, to bym się zapytał, po co właściwie o to pytają: czy tak "dla sportu
" i sprawdzenia, czy może taki kod można spotkać w ich projektach?

Sugeruje, że jeśli ktoś potrafi odpowiedzieć to potrafi myśleć + wie jak jest implementowana obiektowość na niskim poziomie. Pytanie dosyć trudne ale i tak dużo lepsze od pytań w stylu: czemu studzienki są okrągłe i ile ma włosów w nosie twoja babcia.

0

Jeśli dobrze rozumiem to wspomniana klasa utworzyłaby się bez wyjątku tylko kiedy byłaby tworzona na stercie, a metody odnoszące się do zmiennych klasowych działałyby poprawnie dopóki pamięć przydzielona pierwotnie na klasę nie zostałaby przydzielona do czegoś innego. Dobrze myślę?

0

Autor ma pretensje o tego typu pytania a co powie na to ze podczas rozmow o prace w google mozna uslyszec takie pytania :

( wsrod normalnych pytan sa tez ... mniej normalne :) )
Google Interview Questions: Product Marketing Manager

* Why do you want to join Google?
* What do you know about Google’s product and technology?
* If you are Product Manager for Google’s Adwords, how do you plan to market this?
* What would you say during an AdWords or AdSense product seminar?

Google Interview Questions: Product Manager

* How would you boost the GMail subscription base?
* What is the most efficient way to sort a million integers?
* How would you re-position Google’s offerings to counteract competitive threats from Microsoft?
* How many golf balls can fit in a school bus?
* You are shrunk to the height of a nickel and your mass is proportionally reduced so as to maintain your original density. You are then thrown into an empty glass blender. The blades will start moving in 60 seconds. What do you do?
* How much should you charge to wash all the windows in Seattle?

Google Interview Questions: Software Engineer

* Why are manhole covers round?
* What is the difference between a mutex and a semaphore? Which one would you use to protect access to an increment operation?
* A man pushed his car to a hotel and lost his fortune. What happened?
* Explain the significance of “dead beef”.
* Write a C program which measures the the speed of a context switch on a UNIX/Linux system.

Google Interview: Software Engineer in Test

* Efficiently implement 3 stacks in a single array.
* Given an array of integers which is circularly sorted, how do you find a given integer.
* Write a program to find depth of binary search tree without using recursion.
* Find the maximum rectangle (in terms of area) under a histogram in linear time.
* Most phones now have full keyboards. Before there there three letters mapped to a number button. Describe how you would go about implementing spelling and word suggestions as people type.
0

Można jednak bardziej pragmatycznie. W znanym studiu z branży gier komputerowych w Niemczech moim zadaniem testowym podczas rekrutacji było napisanie symulacji "red hunting blue"

Założenia:

  • Język c++, dowolna bilbioteka do grafiki
  • Losowe stworzenie pola gry o definiowalnych wymiarach. Jeden fragment może być wolny lub zajęty.
  • Po mapie przemieszczają się dwa typy pionków: czerwone i niebieskie. Czerwone polują na niebieskie.
  • Pionki mają pole widzenia i słyszenia
  • Czerwone pionki mają krótsze pole widzenia i słyszenia niż niebiescy.
  • Czerwoni chodzą losowo po mapie
  • Jeśli czerwony usłyszy niebieskiego (niebieski się rusza w polu słyszenia czerwonego) to zmierza w jego kierunku. Jeśli go zobaczy, to za nim biegnie żeby go zjeść (=dotknąć).
  • Jeśli niebieski usłyszy czerwonego to próbuje się przed nim schować, jeśli go zobaczy to przed nim ucieka.
  • Symulacja kończy się w momencie zjedzenia wszystkich niebieskich.
  • Najwazniesze parametry powinny być konfigurowalne w pliku ini.

Czas na zadanie: 24h

Efekt końcowy:

PS. Zostałem przyjęty :)

0

evio no to fajny test ci dali :)

0
delete this;

Raczej nie ma szans...

0
evio napisał(a)

Czas na zadanie: 24h

Trzy dni po osiem godzin czy "Now is 1pm, tommorow at this time this task must be done" ?

Czy jest szansa zostać programistą C++?

Tak, jest szansa.

0
ellek napisał(a)

Wiadomo 7-15 lat temu wystarczyła bylejaka znajomość języka C, C++ dopiero wchodził, wobec czego firmy chętnie brały byle kogo kto tylko umiał programować. No i przez to łatwo było zrobić karierę, dziś ci co wtedy zaczynali rozwinęli się pracując w firmie i strugają ważniaków, śmiejąc się z tych co się do firmy nie dostają. Dziś mamy inne czasy. Na testach rekrutacyjnych są tego typu pytania:

class Klasa{
public:
	Klasa():a(0){
	delete this;
	};
	int a;
	~Klasa(){};
	void metoda()
	{
		cout<<"i co\n";
	}
};
//...
//w main:
Klasa *wacek=new Klasa();
wacek->metoda(); //o dziwo wyświetla
//wacek->a; //też wyświetla tylko losową wartość
//wacek->a=7; //nie da rady nadać parametru
//delete wacek; //błąd podczas wykonywania programu

Dlatego czy jest sens nauki C++, Javy skoro i tak są mizerne szanse na zatrudnienie, bo takich rzeczy jak powyżej, różnych krzaczków, są tysiące wobec czego nie ma szans się nauczyć i przez to zaliczyć testu rekrutacyjnego. Ja sobie powyższe rozpisałem i dalej nie wiem dlaczego wacek->metoda() wyświetla mi słowo "i co" w konsoli, nie powinno przecież.

Nie widzę w tym teście nic nadzwyczajnego, po prostu sprawdzają czy wiesz jak poszczególne mechanizmy języka działają (jak są implementowane).
Głównie chodzi o niskopoziomową wiedzę, która w c++ jednak się przydaje, jeżeli poczytasz jak działają poszczególne elementy składowe języka i nauczysz się c++ to każde takie pytanie rozłożysz.

0
several napisał(a)
evio napisał(a)

Czas na zadanie: 24h

Trzy dni po osiem godzin czy "Now is 1pm, tommorow at this time this task must be done" ?

"Now is 1pm, tommorow at this time this task must be done"
Chcieli przy okazji sprawdzic jak pracujesz w naturalnych warunkach ;)

0

Jedyną prawidłową odpowiedzią jest „ten kod jest nieprawidłowy, nie należy w ten sposób pisać”. Pytanie o jego zachowanie się, a jeszcze gorzej - punktowanie odpowiedzi jest pozbawione sensu.

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