Pytania rekrutacyjne z Pythona, z odpowiedziami, które możesz uruchomić
Rozmowy rekrutacyjne o Pythona łączą kilka prostych zadań programistycznych z pytaniami o to, jak język się zachowuje. Oto te, które pojawiają się najczęściej. Każdy przykład poniżej został uruchomiony, a pokazany wynik jest dokładny, więc możesz na nim polegać, gdy będziesz to tłumaczyć na głos.
Odwracanie ciągu znaków
Wycinek z krokiem -1 przechodzi przez ciąg od tyłu. Działa na każdej sekwencji, także na listach.
print("python"[::-1])Wynik:
nohtyp
Czy lista zawiera duplikaty?
Zbiór (set) przechowuje każdą wartość tylko raz. Jeśli zbiór jest krótszy od listy, coś się powtórzyło. Powiedz na głos, jaki jest koszt: to jedno przejście, a elementy muszą być hashowalne.
numbers = [1, 2, 3, 2, 1] print(len(numbers) != len(set(numbers)))
Wynik:
True
Czy dwa wyrazy są anagramami?
Dwa wyrazy są anagramami, gdy ich posortowane litery są takie same.
print(sorted("listen") == sorted("silent"))Wynik:
True
Listy kontra krotki
Listy można zmieniać po utworzeniu, krotek nie. Krotki używa się do stałych grup, na przykład punktu, a ponieważ nie mogą się zmieniać, mogą być kluczami słownika.
point = (3, 4)
try:
point[0] = 9
except TypeError:
print("tuples cannot change")Wynik:
tuples cannot change
is kontra ==
== sprawdza, czy dwie wartości są równe. is sprawdza, czy to dokładnie ten sam obiekt w pamięci. Dwie osobne listy o tej samej zawartości są równe, ale nie są tym samym obiektem.
a = [1, 2] b = [1, 2] print(a == b) print(a is b)
Wynik:
True False
Pułapka domyślnego argumentu mutowalnego
Wartość domyślna jest tworzona raz, gdy funkcja jest definiowana, a nie przy każdym wywołaniu. Jeśli domyślną wartością jest lista, każde wywołanie korzysta z tej samej listy. To najsłynniejsza pułapka w Pythonie.
def add_item(item, items=[]):
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Wynik:
['a'] ['a', 'b']
Rozwiązanie: użyj None
Ustaw None jako wartość domyślną i utwórz listę wewnątrz funkcji. Teraz każde wywołanie zaczyna od nowa.
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Wynik:
['a'] ['b']
Częste pytania
- Jakie zagadnienia z Pythona pojawiają się najczęściej na rozmowach?
- Ciągi znaków, listy, słowniki i zbiory w zadaniach rozgrzewkowych, a potem funkcje, błędy, klasy oraz to, jak zachowują się typy mutowalne i niemutowalne. Znaj koszt typowych operacji i umiej uzasadnić wybór struktury danych.
- Czy powinienem zapamiętywać rozwiązania?
- Lepiej zrozum ideę każdego z nich. Jeśli umiesz wyjaśnić, dlaczego zbiór znajduje duplikaty w jednym przejściu, rozwiążesz kolejny wariant, którego nigdy wcześniej nie widziałeś.
- Jak ćwiczyć wyjaśnianie swojej odpowiedzi?
- Uruchom każdy przykład, a potem na głos powiedz, co wypisuje i dlaczego, zanim przeczytasz wyjaśnienie. Rekruterów interesuje tok rozumowania tak samo jak kod.