Siema.
Jakie tematy polecalibyście sobie odświeżyć przed rozmową?
Chodzi mi o takie, z którymi spotkać można się najczęściej - z waszego doświadczenia - rozmowy będą tyczyły C++ i Pythona.
Edit:
Zapomniałem dodać, chodzi o pozycję juniora.
Siema.
Jakie tematy polecalibyście sobie odświeżyć przed rozmową?
Chodzi mi o takie, z którymi spotkać można się najczęściej - z waszego doświadczenia - rozmowy będą tyczyły C++ i Pythona.
Edit:
Zapomniałem dodać, chodzi o pozycję juniora.
Może poćwiczymy angielski? Odmień być.
Kłamanie.
Riddle napisał(a):
Kłamanie.
Kolorowanie rzeczywistości :P
mityczne interfejs vs klasa abstrakcyjna
Na każdej rozmowie:
Polimorfizm, stos i sterta, kontenery, rule of zero/five, raii, smart pointery, std::move, referencje do r wartości
Rzadziej:
emplace_back vs push_back, rvo, inline, explicit, sso
KamilAdam napisał(a):
Riddle napisał(a):
Kłamanie.
Kolorowanie rzeczywistości :P
A na poważnie to oczywiście SOLID bo jak nie wyrecytujesz wszystkiego z pamięci to niektórzy na forum cię rozszarpią.
Chociaż ja trafiłem raz na jednego co recytował manifest agile
Powtórz sobie programowanie - trzeba po prostu umieć zinterpretować kod / lub coś zaprogramować na żywo. Reszta to szczegóły na tym poziomie.
PODSTAWY! Im bardziej od formalnej strony tym lepiej.
Nie ma nic bardziej frustrującego, jak zadaje się proste pytanie i kandydat nie ma pojęcia.
Druga rada: jeśli nie wiesz o co chodzi, to poproś i inne sformowanie pytania. Często zdarza się, że kandydat wie, pytanie jest tak sformułowane, że nie otwiera mu właściwej klapki.
Z tych podstaw:
shared_ptr
unique_ptr
jaka jest różnica.std::make_shared<Cos>()
od std::shared_ptr<Cos>{new Cos()}
Tak naprawdę mogą Cię przepytać ze wszystkiego, więc trudno odpowiedzieć na to pytanie. Samo stanowisko C++ & Python dałoby mi do myślenia. Znajomość obu języków na dobrym poziomie to wiele lat doświadczenia.
Coś tam wiem z Pythona i pewnie chciałbym sprawdzić zagadnienia typu:
range
Jakbyś na większość odpowiedział, to już takie pytania dodatkowe:
pytest
i unittest
pip
PEP-008
IPython
+ mierzenie wydajności kodugit
Eldorad O. napisał(a):
Jakie tematy polecalibyście sobie odświeżyć przed rozmową?
Najlepiej odbyć na kilka rozmów, spalić je, ale zapamiętać, o co pytali. I na kolejnej rozmowie już jesteś gość.
Pyxis napisał(a):
Tak naprawdę mogą Cię przepytać ze wszystkiego, więc trudno odpowiedzieć na to pytanie. Samo stanowisko C++ & Python dałoby mi do myślenia. Znajomość obu języków na dobrym poziomie to wiele lat doświadczenia.
Coś tam wiem z Pythona i pewnie chciałbym sprawdzić zagadnienia typu:
- różne typy danych w Pythonie i najpopularniejsze metody, które udostępniają
- mutowalność vs niemutowalność, czym to jest i gdzie to wykorzystać
- definiowanie funkcji (tutaj można dodać coś o argumentach) i możliwość zagnieżdżania funkcji
- podstawy nt. dekoratorów (jak ogarnąłeś punkt wyżej, to powinieneś dać radę)
- jakie znasz rodzaje pętli i jakie daje możliwość
range
- wycinki i jakiś jednolinjkowiec pokazujący ich użycie
- bardzo ogólnie na temat klas
- comprehension lists
- cokolwiek o wyjątkach
Jakbyś na większość odpowiedział, to już takie pytania dodatkowe:
- moduł
pytest
iunittest
- wirtualne środowisko i
pip
- znajomość
PEP-008
IPython
+ mierzenie wydajności kodugit
Ew jak się chce kogoś uyebać to można zapytać o descriptory, albo moduł z którego działanie zapożyczyły dataclassy (namedtuple) :D Można jeszcze zapytać o różnice pomiędzy typing.Protocol vs ABC (jak działa jedno i drugie i kiedy używać). A pytanie killer to jak działają dekoratory w pythonie - na jakim poziomie są odpalane (przed runtime, import time czyli zaraz po zaladowaniu modulu). Pytania o moduł collections a dokładniej o inne struktury danych w pythonie, również potrafi zabić czyli jakieś chainmapy, defaultdict... Z jakich interfejsów korzysta implementacja list, set, dict itp. Ale to już trzeba być ujem żeby o to pytać :P
Fajne są też proste zadanka z pytaniem, czy w poniższym kodzie jest wszystko okej, typu:
class Bus:
def __init__(self, passengers=[]):
self.passengers = passengers
def pick(self, name):
self.passengers.append(name)
def drop(self, name):
self.passengers.remove(name)
Wbrew pozorom mnóstwo osób się na tym wykłada :D
Co do całej reszty to ogólnie przygotowałbym się również z ogólników dotyczących projektów przy których pracowałeś. Co raz więcej rekru tak właśnie wygląda, że nie ma sztywnego odpytywania z regułek a raczej luźna rozmowa co robiłeś. W tym wypadku akurat ciężko zmyślać i bardzo szybko wychodzi kto co umie :D
ledi12 napisał(a):
Ew jak się chce kogoś uyebać to można zapytać o ....
Masz dziwne spojrzenie na proces rekrutacji. Nie po to poświęca się czas pracowników, który kosztuje sporo pieniędzy, żeby ludzi "uwalać"/"uyebać".
Pytania się zadaje, żeby sprawdzić czyjąś wiedzę. Te trudniejsze są po to, by odróznić juniora od seniora (opieranie się o deklarowane przez kandydata doświadczenie jest skazane na porażkę).
Jeśli chodzi o c++ to na juniorskie stanowiska pamiętam że pytano sporo z obiektowki. Tj polimorfizm, kolejność wywołania konstruktorów i destruktorów, kontenery, złożoność obliczeniowa i pamięciowa, smartpointery, różnica między referencja a wskaźnikiem, zadania z bawienia się raw pointerami, little/big endian(tutaj w tych korpo telecomowych).
Z pythona pewnie dadzą Ci coś naklepac po prostu. Zależy czego dotyczy stanowisko. U nas python jest używany do testów regresyjnych i przez R&D do klepania algorytmów, musisz umiec przepisać algorytm na c++. W zasadzie u nas mamy w "mile widziane " ale nie pytamy się zbytnio o pythona.
Natomiast może być inaczej. Np stary projekt tj utrzymaniowka w c++ a coś nowego w pythonie. Wówczas inny priorytet pytań będzie.
@Eldorad O.: Tutaj masz całą formułkę jak rozmawiać: https://gazetakrakowska.pl/formula-spowiedzi-swietej-jak-nalezy-sie-spowiadac-przygotowanie-i-formulka-spowiedzi-1052022/ar/c11-14793508
nic nie powtarzaj, roz. kw. ma zadanie sprawdzić kim jesteś i co umiesz, a nie co jesteś w stanie szybko wkuć przed roz. kw. po czym zapomnieć
roz. kw. sprawdza także jak umiesz sobie poradzić w sytuacji kiedy nie znasz odpowiedzi, albo kiedy wydaje ci się że znasz, albo kiedy wiesz że błądzisz ... oraz w wielu innych sytuacjach
Jeśli chodzi o Pythona, to obowiązkowo generator i decorator:
https://realpython.com/introduction-to-python-generators/;
https://realpython.com/primer-on-python-decorators/