Pytania do wywiadu w Pythonie [zamknięte]

25

Mam zamiar przeprowadzić wywiad w ciągu dwóch tygodni na staż obejmujący programowanie w języku Python.

Czy ktoś może zasugerować, jakie obszary powinienem wypolerować? Szukam często zadawanych pytań w wywiadach dotyczących otwarcia Pythona. Poza tym, że już od ponad roku używam języka, nie rozumiem, o co mogą mnie zapytać.

Podobnie jak w przypadku wywiadu w języku C lub C ++, istnieje wiele pytań, od odwrócenia ciągów znaków do budowania połączonych list, ale w przypadku wywiadu w języku Python nie mam pojęcia.

Osobiste doświadczenia i / lub sugestie są mile widziane.


źródło
Jeśli to staż, a programujesz w Pythonie już od roku, myślę, że wszystko będzie dobrze. Powiedział, że myślę, że ogólny charakter pytań dla Pythona będzie taki sam, jak te, o których wspomniałeś dla c ++.
Robert Harvey
Robert, martwi mnie programowanie bez nadzoru i wskazówek. Może brakuje mi w niektórych obszarach.
1
Jeśli jest to staż, dlaczego nie masz wskazówek? To jest właśnie definicja stażu. To powiedziawszy, stażyści, w których pracuję, nie dostają zajęć programistycznych, ale dostają jasne instrukcje pracy i oczekiwania. Jako stażyści powinni oczekiwać, że nauczysz się w pracy i że praca potrwa nieco dłużej, niż mogłaby to zrobić osoba z doświadczeniem.
Robert Harvey
Popełniacie częsty błąd, który popełniają wychodzący ze szkoły - wywiad nie jest testem, to raczej pójście na pierwszą randkę. Dobry ankieter nie rozbije twoich piłek, próbując dowiedzieć się, czy znasz ciemne zakątki języka, ale raczej postaraj się ustalić, jeśli naprawdę go znasz. Dobry ankieter skoncentruje się na ogólnej wiedzy programistycznej, umiejętnościach rozwiązywania problemów, umiejętnościach interpersonalnych i doświadczeniu. Jeśli ktoś zacznie pytać o szczegóły dotyczące tego, jak Python internuje ciągi, oznacza to, że jest zagubiony i nie wie, jak przeprowadzić wywiad.
Sean McSomething

Odpowiedzi:

8

Oto kilka prostych:

  1. Co to są dekoratory Python i jak byś ich używał?
  2. Jak debugujesz swój kod Python?
  3. Jak skonfigurowałbyś wiele projektów, w których każdy korzysta z różnych wersji bibliotek Pythona i bibliotek stron trzecich?
  4. Czy podczas pisania kodu przestrzegasz PEP8?
Thierry Lam
źródło
7

Co powiesz na coś, co obejmuje rozumienie list w języku Python ? Dla mnie były to jedne z największych zalet C ++ po przeczytaniu o nich w Dive into Python .

„Napisz listę, która tworzy listę liczb parzystych od 1 do 10 (włącznie)”.
Jeśli odpowiedź brzmi mniej więcej tak (zwróć uwagę, że wartości zakresu unikają błędu słupka ogrodzeniowego):

foo = [x for x in range(1, 11) if (x % 2) == 0]
print foo
[2, 4, 6, 8, 10]

W tym przypadku, jeśli rozumiesz wszystkie pojęcia wymienione w Zanurz się w Pythonie, powinno to obejmować większość ważnych funkcji.

cyklop
źródło
13
To nie jest mityczne. W Pythonie 2.x, po prostu zrobić range(2,11,2)w Pythonie 3.x list(range(2,11,2)).
Chinmay Kanchi
@Cyclops, wygląda na to, że musisz przeprowadzić wywiad w sprawie własnej pracy w INNOTECH.
Job
5
@Chinmay Kanchi Chociaż nie sądzę, by to było dobre pytanie do wywiadu, większość wprowadzeń do zaawansowanych funkcji robi najprostsze rzeczy, jakie mogą (aby nie mylić czytelnika). Chociaż istnieje prostsze rozwiązanie tego konkretnego problemu, nie chodziło o odpowiedź na ten konkretny problem. Chodziło o to, aby użyć rozumienia listy (które są bardzo skuteczne i godnym uwagi sposobem optymalizacji rzeczy w Pythonie).
jsternberg
6

Czy Python przekazany przez referencję czy przekazany przez wartość jest również bardzo dobrym pytaniem.

ismail
źródło
1
Świetnym
@Ismail - Przepraszam, ale dlaczego to dobre pytanie?
Theodor
7
@Cervo: Jeśli dobrze rozumiem, Python jest przekazywany według wartości, podobnie jak C #, Java, schemat itp. Są przekazywanymi według wartości ... jedynym językiem przekazywanym przez odniesienia jest VB6, gdzie wszystko jest przekazywane przez odniesienie, chyba że określono inaczej. Fakt, że możesz mutować obiekty, nie powoduje, że przechodzą one przez odniesienie w żaden sposób, a fakt, że możesz mieć niezmienne obiekty, nie oznacza, że ​​są one również przekazywane przez wartość ... więc powiedzenie „ odpowiedź brzmi „nie jest całkowicie błędna . Jest mi bardzo przykro z powodu kandydata, którego ankieter uważa, że ​​odpowiedź brzmi „ani” ...
Mehrdad
1
@Cervo: FYI, nawet ponad 100 głosowanych odpowiedzi w twoim linku odpiera twój argument: wyraźnie mówi, że „parametry są przekazywane przez wartość”.
Mehrdad
11
Uważam, że poprawna odpowiedź brzmi: „Parametry są referencjami przekazywanymi przez wartość”.
user16764,
6

Pytania, które mi zadano:

  • Opisz dwie metody metaprogramowania w Pythonie.
  • Co to jest GIL?
  • Dlaczego GIL jest ważny?
  • Dlaczego istnieje alternatywna implementacja języka Python o nazwie Unladen Swallow ?
  • Django, Pylony czy Zope? Broń swojej pozycji.
Scant Roger
źródło
5

Nie mam takich doświadczeń, ale oto kilka domysłów:

  1. (Niezmienność
  2. Funkcje / klasy pierwszej klasy
  3. Zamknięcia

Jest to coś, co powinien wiedzieć programista python, w przeciwnym razie możesz równie dobrze zatrudnić programistę C na to stanowisko.

Kugel
źródło
3

Chciałbym przejść wzdłuż listy w tej odpowiedzi . Spróbuj odświeżyć to, co wiesz, obserwując tę ​​listę w miarę możliwości. Nie martw się, jeśli nie zdołasz do końca.

Benjamin Bannier
źródło
2

Oprócz innych linków udostępnionych przez ludzi. Polecam również Ukryte funkcje Pythona . Na wypadek, gdyby zadali ci podchwytliwe pytania.

grokus
źródło
2

Jaki masz sens, czy będą próbować sprawdzić, czy znasz Python, sprawdzić, czy możesz zrobić rzeczy w Pythonie, czy przetestować, czy możesz programować (w Pythonie)?

To są bardzo różne rzeczy.

Jeśli chcą, abyś pokazał, że znasz Pythona, może zmusić cię do zrobienia czegoś takiego jak stworzenie generatora, a następnie zrób to bez użycia yield . Wyjaśnij, jak działają klasy. Wyjaśnij kolejność rozdzielczości metody C3. I tak dalej.

Jeśli chcą, abyś pokazał, że potrafisz wykonywać zadania w Pythonie, musisz znać podstawowe struktury danych i mieć listę bibliotek, do których możesz się udać przy różnego rodzaju zadaniach. Musisz więc czuć się komfortowo ze słownikami, zestawami, tablicami. Podobnie, musisz wiedzieć o takich rzeczach jak BeautifulSoupparsowanie HTML, umieć mówić o frameworku, który mógłby być wykorzystany do tworzenia stron internetowych itp. Niekoniecznie musisz wiedzieć, jak dobrze korzystać z tych rzeczy, ale powinieneś wiedzieć, gdzie idź, jak dowiedzieć się więcej i być w stanie z nich korzystać, gdy ankieter dostarczy ci rzeczy, które są udokumentowane.

Jeśli chcą, abyś pokazał, że możesz programować (w języku Python), musisz znać podstawowe struktury danych i znać swoje algorytmy. Jest to znacznie bliższe pytaniom C / C ++, które zostaną zadane, z wyjątkiem tego, że będziesz musiał korzystać z natywnych struktur danych, gdzie ułatwi ci to życie.

Aby być bezpiecznym, powinieneś w pewnym stopniu przygotować się na wszystkie trzy. Na przykład przeczytaj http://docs.python.org/tutorial/ i zrób notatki dla siebie. Mam nadzieję, że już wiesz, jak programować. A następnie wypróbuj losowe zadania i zmuś się do korzystania z bibliotek, które mogłeś przegapić. Na przykład przeczytaj CSV, wyodrębnij programowo informacje ze strony internetowej, zbuduj małą stronę internetową z frameworkiem itp.

btilly
źródło