42 Pytania i odpowiedzi dotyczące wywiadu w Pythonie w czasie rzeczywistym [2022]

Przygotowujesz się do rozmów kwalifikacyjnych w Pythonie? Lub po prostu chcesz wiedzieć, ile znasz Pythona? Nie ma problemu. Tutaj pokrywamy Twoje problemy z pytaniami i odpowiedziami.

Artykuł pomoże Ci zrozumieć, z jakimi pytaniami możesz się spotkać podczas wywiadów. Lub pomaga ocenić Twoje umiejętności Pythona. Upewnij się, że odpowiedziałeś na pytania, zanim zobaczysz odpowiedzi, aby dokładnie ocenić siebie. Bez zbędnych ceregieli przejdźmy do pytań.

Pytania są podzielone na różne sekcje w zależności od rodzaju tematów. Każda sekcja zawiera pytania wraz z wyselekcjonowanymi odpowiedziami. Możesz zmodyfikować odpowiedź we własnym języku o tym samym znaczeniu. Tak więc osoba przeprowadzająca wywiad nie poczuje, że coś czytasz.

Spis treści:

Język Pythona

#1. Co to jest Python?

Python to interpretowany język programowania wysokiego poziomu, ogólnego przeznaczenia. Możemy zbudować prawie każdy rodzaj aplikacji za pomocą Pythona z bibliotekami i frameworkami innych firm. Python to jeden z najpopularniejszych języków programowania w zaawansowanych technologiach, takich jak AI, Data Science itp.

#2. Jaka jest główna różnica między interpreterem a kompilatorem?

Interpreter tłumaczy jedno polecenie na kod maszynowy, podczas gdy kompilator tłumaczy cały kod na raz na kod maszynowy.

#3. Czy Python jest językiem statycznym czy dynamicznym?

Python to język dynamicznie typowany.

#4. Co masz na myśli mówiąc dynamicznie typowany język?

Języki z typami dynamicznymi sprawdzają typy zmiennych w czasie wykonywania. Niektóre języki dynamicznie typowane to Python, JavaScript, Ruby itp.

Bonus: Statycznie typowane języki sprawdzają typy zmiennych w czasie kompilacji. Niektóre statycznie typowane języki to C++, C, Java itp.,

#5. Podaj kilka zastosowań Pythona.

Python ma prostszą i łatwą do nauczenia składnię. Może wyglądać podobnie do angielskiego. Społeczność programistów Pythona jest ogromna. Możemy znaleźć wiele pakietów firm trzecich do pracy z różnymi rodzajami tworzenia aplikacji. W zakresie programowania możemy tworzyć aplikacje webowe, aplikacje GUI, aplikacje CLI itp.,

Jedną z najpopularniejszych aplikacji Pythona jest automatyzacja. Możemy łatwo tworzyć skrypty w Pythonie do automatyzacji zadań takich jak czyszczenie dysku, wysyłanie maili, pozyskiwanie danych o cenach produktów itp.,

Python jest jednym z najpopularniejszych języków używanych w dziedzinie Data Science.

#6. Jakie aplikacje zbudowałeś w Pythonie?

Napisałem wiele skryptów automatyzacji, aby wyeliminować powtarzające się i nudne zadania. Oraz skrypty do uzyskania informacji o cenach produktów, dostępności itp.

Pracowałem również z frameworkami takimi jak Django, Flask do budowy aplikacji webowych. I zbuduj kilka aplikacji internetowych, używając zarówno Django, jak i Flask.

Uwaga: powyższa odpowiedź jest przykładem. Twoja odpowiedź może być zupełnie inna niż powyższa. Spróbuj wyjaśnić różne obszary, nad którymi pracowałeś, używając Pythona. Pokaż aplikacje, jeśli są dostępne.

Typy danych

7. Jakie są wbudowane typy danych w Pythonie?

W Pythonie istnieje wiele wbudowanych typów danych. Są to int, float, complex, bool, list, krotka, set, dict, str.

Uwaga: Nie musisz podawać wszystkich typów danych obecnych w Pythonie. Wymień niektóre z nich, z których najczęściej korzystasz. Ankieter może zadawać pytania na podstawie Twojej odpowiedzi.

#8. Jaka jest różnica między listą a krotką?

Zarówno lista, jak i krotka służą do przechowywania kolekcji obiektów. Główna różnica między listą a krotką polega na tym, że „lista jest obiektem zmiennym, podczas gdy krotka jest obiektem niezmiennym”.

#9. Czym są zmienne i niezmienne typy danych?

Zmienne typy danych można zmienić po ich utworzeniu. Niektóre z modyfikowalnych obiektów w Pythonie to list, set, dict.

Niezmiennych typów danych nie można zmienić po ich utworzeniu. Niektóre z niezmiennych obiektów w Pythonie to str, krotka.

#10. Wyjaśnij niektóre metody listy.

1. append – metoda służy do dodania elementu do listy. Dodaje element na koniec listy.

>>> a = [1, 2]
>>> a.append(3)
>>> a
[1, 2, 3]

2. pop – metoda służy do usunięcia elementu z listy. Usunie ostatni element, jeśli nie podamy żadnego indeksu jako argumentu lub usunie element z indeksu, jeśli dostarczymy argument.

>>> a = [1, 2, 3, 4, 5]
>>> a.pop()
5
>>> a
[1, 2, 3, 4]
>>> a.pop(1)
2
>>> a
[1, 3, 4]

3. usuń – metoda służy do usunięcia elementu z listy. Musimy podać element jako argument, który chcemy usunąć z listy. Usuwa pierwsze wystąpienie elementu z listy.

>>> a = [1, 2, 2, 3, 4]
>>> a = [1, 2, 3, 2, 4]
>>> a.remove(1)
>>> a
[2, 3, 2, 4]
>>> a.remove(2)
>>> a
[3, 2, 4]

4. sort – metoda służąca do sortowania listy w kolejności rosnącej lub malejącej.

>>> a = [3, 2, 4, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a.sort(reverse=True)
>>> a
[4, 3, 2, 1]

5. reverse – metoda służy do odwracania elementów listy.

>>> a = [3, 2, 4, 1]
>>> a.reverse()
>>> a
[1, 4, 2, 3]

Uwaga: Istnieją inne metody, takie jak wyczyść, wstaw, zlicz itp. Nie musisz wyjaśniać ankieterowi każdej metody z listy. Po prostu wyjaśnij dwie lub trzy metody, z których najczęściej korzystasz.

# 11. Wyjaśnij niektóre metody ciągu

1. split – metoda służy do dzielenia struny w żądanych punktach. W rezultacie zwraca listę. Domyślnie dzieli ciąg w odstępach. Możemy podać ogranicznik jako argument metody.

>>> a = "This is newsblog.pl"
>>> a.split()
['This', 'is', 'Geekflare']
>>> a = "1, 2, 3, 4, 5, 6"
>>> a.split(", ")
['1', '2', '3', '4', '5', '6']

2. join – metoda służy do łączenia listy obiektów tekstowych. Łączy obiekty tekstowe z dostarczonym przez nas ogranicznikiem.

>>> a = ['This', 'is', 'Geekflare']
>>> ' '.join(a)
'This is newsblog.pl'
>>> ', '.join(a)
'This, is, newsblog.pl'

Uwaga: Inne metody tworzenia napisów to: wielkie litery, isalnum, isalpha, isdigit, lower, upper, center, itd.,

#12. Jakie jest negatywne indeksowanie na listach?

Indeks służy do dostępu do elementu z list. Normalne indeksowanie listy zaczyna się od 0.

Podobnie jak w przypadku normalnego indeksowania, indeksowanie ujemne jest również używane w celu uzyskania dostępu do elementów z list. Ale indeksowanie ujemne umożliwia nam dostęp do indeksu z końca listy. Początek ujemnego indeksowania to -1. I stale rośnie, jak -2, -3, -4, itd., aż do długości listy.

>>> a = [1, 2, 3, 4, 5]
>>> a[-1]
5
>>> a[-3]
3
>>> a[-5]
1

#13. Wyjaśnij niektóre metody dykt

1. items – metoda zwraca klucz: pary wartości słowników w postaci listy krotek.

>>> a = {1: 'newsblog.pl', 2: 'newsblog.pl Tools', 3: 'newsblog.pl Online Compiler'}
>>> a.items()
dict_items([(1, 'Geekflare'), (2, 'Geekflare Tools'), (3, 'Geekflare Online Compiler')])

2. pop – metoda służy do usunięcia pary klucz:wartość ze słownika. Akceptuje klucz jako argument i usuwa go ze słownika.

>>> a = {1: 2, 2: 3}
>>> a.pop(2)
3
>>> a
{1: 2}

Uwaga: Niektóre inne metody dyktowania to: pobieranie, klucze, wartości, wyczyść itp.

# 14. Co to jest krojenie w Pythonie?

Slicing służy do uzyskiwania dostępu do podtablicy z typu danych sekwencji. Zwraca dane z typu danych sekwencji na podstawie dostarczonych przez nas argumentów. Zwraca ten sam typ danych, co typ danych źródłowych.

Slicing akceptuje trzy argumenty. Są to indeks początkowy, indeks końcowy i krok przyrostu. Składnia krojenia jest zmienna[start:end:step]. Argumenty nie są obowiązkowe w przypadku krojenia. Możesz podać pusty dwukropek (:), który jako wynik zwróci całe dane.

>>> a = [1, 2, 3, 4, 5]
>>> a[:]
[1, 2, 3, 4, 5]
>>> a[:3]
[1, 2, 3]
>>> a[3:]
[4, 5]
>>> a[0:5:2]
[1, 3, 5]

#15. Jakie typy danych umożliwiają dzielenie na plasterki?

Możemy użyć krojenia na typach danych list, krotka i str.

#16. Czym są operatory rozpakowywania w Pythonie? Jak z nich korzystać?

Operatory * i ** to operatory rozpakowujące w Pythonie.

Operator rozpakowywania * służy do jednoczesnego przypisywania wielu wartości do różnych wartości z typów danych sekwencyjnych.

>>> items = [1, 2, 3]
>>> a, b, c = items
>>> a
1
>>> b
2
>>> c
3
>>> a, *b = items
>>> a
1
>>> b
[2, 3]

Operator rozpakowywania ** jest używany z typami danych dict. Rozpakowywanie w słownikach nie działa jak rozpakowywanie z sekwencyjnymi typami danych.

Rozpakowywanie w słownikach jest najczęściej używane do kopiowania elementów klucza: wartości z jednego słownika do drugiego.

>>> a = {1:2, 3:4}
>>> b = {**a}
>>> b
{1: 2, 3: 4}
>>> c = {3:5, 5:6}
>>> b = {**a, **c}
>>> b
{1: 2, 3: 5, 5: 6}

Uwaga: możesz zapoznać się z tym artykułem, aby uzyskać więcej informacji na temat tych operatorów.

Warunki i pętle

#17. Czy Python ma instrukcje switch?

Nie, Python nie posiada instrukcji switch.

#18. Jak zaimplementować funkcjonalność instrukcji switch w Pythonie?

Możemy zaimplementować funkcjonalność instrukcji switch za pomocą instrukcji if i elif.

>>> if a == 1:
...     print(...)
... elif a == 2:
...     print(....)

# 19. Czym są wypowiedzi przerwać i kontynuować?

break – instrukcja break służy do zakończenia działającej pętli. Wykonanie kodu przeskoczy na zewnątrz pętli przerwania.

>>> for i in range(5):
...     if i == 3:
...             break
...     print(i)
...
0
1
2

continue – instrukcja continue służy do pominięcia wykonania pozostałego kodu. Kod po instrukcji continue nie jest wykonywany w bieżącej iteracji, a wykonanie przechodzi do następnej iteracji.

>>> for i in range(5):
...     if i == 3:
...             continue
...     print(i)
...
0
1
2
4

#20. Kiedy kod w else jest wykonywany z pętlami while i for?

Kod wewnątrz bloku else z pętlami while i for jest wykonywany po wykonaniu wszystkich iteracji. A kod wewnątrz bloku else nie jest wykonywany, gdy przerywamy pętle.

#21. Co to są listy i tłumaczenia słownikowe?

Wyrażenia listowe i słownikowe są cukrem składniowym dla pętli for.

>>> a = [i for i in range(10)]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = {i: i + 1 for i in range(10)}
>>> a
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}
>>>

#22. Jak działa funkcja zasięgu?

Funkcja range zwraca sekwencję liczb od początku do końca z przyrostem kroku. Składnia funkcji range to range(start, stop[, step]).

Argument stop jest obowiązkowy. Argumenty start i step są opcjonalne. Domyślne wartości start i step to odpowiednio 0 i 1.

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]
>>>

Funkcje

#23. Jakie są parametry i argumenty?

Parametry to nazwy wymienione w definicji funkcji.

Argumenty to wartości przekazywane do funkcji podczas wywoływania.

#24. Jakie są rodzaje argumentów w Pythonie?

Istnieją głównie cztery rodzaje argumentów. Są to argumenty pozycyjne, argumenty domyślne, argumenty słów kluczowych i argumenty arbitralne.

Argumenty pozycyjne: normalne argumenty, które definiujemy w funkcjach zdefiniowanych przez użytkownika, nazywane są argumentami pozycyjnymi. Wszystkie argumenty pozycyjne są wymagane podczas wywoływania funkcji.

>>> def add(a, b):
...     return a + b
...
>>> add(1, 2)
3
>>> add(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: add() missing 1 required positional argument: 'b'
>>>

Argumenty domyślne: możemy podać wartość argumentów w samej definicji funkcji jako wartość domyślną. Gdy użytkownik nie przekazał wartości, funkcja rozważy wartość domyślną.

>>> def add(a, b=3):
...     return a + b
...
>>> add(1, 2)
3
>>> add(1)
4

Argumenty słów kluczowych: możemy określić nazwę argumentów podczas wywoływania funkcji i przypisać im wartości. Argumenty słów kluczowych pomagają nam uniknąć porządkowania, które jest obowiązkowe w argumentach pozycyjnych.

>>> def add(a, b):
...     print("a ", a)
...     print("b ", b)
...     return a + b
...
>>> add(b=4, a=2)
a  2
b  4
6

Argumenty arbitralne: używamy arbitralnych argumentów, aby zebrać kilka wartości w czasie, gdy nie znamy liczby argumentów, które otrzyma funkcja. W definicji funkcji mamy operatory * i ** do zbierania argumentów.

>>> def add(*args):
...     return sum(args)
...
>>> add(1, 2, 3, 4, 5)
15
>>> def dict_args(**kwargs):
...     print(kwargs)
...
>>> dict_args(a="newsblog.pl", b='newsblog.pl Tools', c="newsblog.pl Online Compiler")
{'a': 'newsblog.pl', 'b': 'newsblog.pl Tools', 'c': 'newsblog.pl Online Compiler'}

#25. Co to jest funkcja lambda?

Funkcje lambda to małe anonimowe funkcje w Pythonie. Ma pojedyncze wyrażenia i akceptuje wielokrotne argumenty.

>>> add = lambda a, b: a + b
>>> add(1, 3)
4

#26. Jaka jest różnica między funkcją normalną a funkcją lambda?

Funkcjonalność zarówno funkcji normalnych, jak i funkcji lambda jest podobna. Ale musimy napisać dodatkowy kod w normalnych funkcjach w porównaniu z funkcjami lambda dla tej samej funkcjonalności.

Funkcje lambda przydają się w przypadku pojedynczego wyrażenia.

#27. Do czego służy słowo kluczowe pass?

Słowo kluczowe pass służy do wzmianki o pustym bloku w kodzie. Python nie pozwala nam pozostawić bloków bez żadnego kodu. Tak więc instrukcja pass pozwala nam zdefiniować puste bloki (gdy zdecydujemy się wypełnić kod później).

>>> def add(*args):
...
...
  File "<stdin>", line 3

    ^
IndentationError: expected an indented block
>>> def add(*args):
...     pass
...
>>>

#28. Co to jest funkcja rekurencyjna?

Samo wywołanie funkcji nazywa się funkcją rekurencyjną.

Czym są operatory pakowania w Pythonie? Jak z nich korzystać?

Operatory pakowania służą do zbierania wielu argumentów w funkcjach. Są one znane jako arbitralne argumenty.

Uwaga: możesz zapoznać się z tym artykułem, aby uzyskać więcej informacji na temat operatorów pakowania w Pythonie.

#29. OOP w Pythonie

Jakie słowo kluczowe służy do tworzenia klas w Pythonie?

Słowo kluczowe class służy do tworzenia klas w Pythonie. Powinniśmy postępować zgodnie z przypadkiem pascala, aby nazywać klasy w Pythonie jako standardową praktyką branżową.

>>> class Car:
...     pass
...

#30. Jak utworzyć instancję klasy w Pythonie?

Możemy stworzyć instancję klasy w Pythonie, po prostu wywołując ją jak function. Możemy przekazać wymagane atrybuty dla obiektu w taki sam sposób, jak dla argumentów funkcji.

>>> class Car:
...     def __init__(self, color):
...             self.color = color
...
>>> red_car = Car('red')
>>> red_car.color
'red'
>>> green_car = Car('green')
>>> green_car.color
'green'
>>>

# 31. Czym jest jaźń w Pythonie?

Jaźń reprezentuje obiekt klasy. Służy do uzyskiwania dostępu do atrybutów i metod obiektu wewnątrz klasy dla konkretnego obiektu.

#32. Co to jest metoda __init__?

__init__ jest metodą konstruktora podobną do konstruktorów w innych językach OOP. Jest wykonywany natychmiast po utworzeniu obiektu dla klasy. Służy do inicjowania danych początkowych dla instancji.

#33. Co to jest docstring w Pythonie?

Ciągi dokumentacji lub docstrings są używane do dokumentowania bloku kodu. Są również używane jako komentarze wielowierszowe.

Te ciągi dokumentacyjne są używane w metodach klasy do opisywania, co robi dana metoda. I możemy zobaczyć metodę docstring przy użyciu metody pomocy.

>>> class Car:
...     def __init__(self, color):
...             self.color = color
...
...     def change_color(self, updated_color):
...             """This method changes the color of the car"""
...             self.color = updated_color
...
>>> car = Car('red')
>>> help(car.change_color)
Help on method change_color in module __main__:

change_color(updated_color) method of __main__.Car instance
    This method changes the color of the car

>>>

#34. Czym są metody dunder lub magiczne?

Metody posiadające dwa podkreślenia prefiksu i sufiksu nazywane są dunder lub metodami magicznymi. Służą one głównie do zastępowania metod. Niektóre metody, które możemy nadpisać w klasach to __str__, __len__, __setitem__, __getitem__, itd.,

>>> class Car:
...     def __str__(self):
...             return "This is a Car class"
...
>>> car = Car()
>>> print(car)
This is a Car class
>>>

Uwaga: istnieje wiele innych metod, które możesz zmienić. Przydają się, gdy chcesz dogłębnie dostosować kod. Zapoznaj się z dokumentacją, aby uzyskać więcej informacji.

#35. Jak zaimplementować dziedziczenie w Pythonie?

Jako argument możemy przekazać klasę rodzica do klasy dziecka. I możemy wywołać klasę nadrzędną metody init w klasie potomnej.

>>> class Animal:
...     def __init__(self, name):
...             self.name = name
...
>>> class Animal:             e):
...     def __init__(self, name):
...             self.name = name
...
...     def display(self):
...             print(self.name)
>>> class Dog(Animal):        e):ame)
...     def __init__(self, name):
...             super().__init__(name)
...
>>> doggy = Dog('Tommy')
>>> doggy.display()
Tommy
>>>

#36. Jak uzyskać dostęp do klasy nadrzędnej wewnątrz klasy podrzędnej w Pythonie?

Możemy użyć super(), która odnosi się do klasy nadrzędnej wewnątrz klasy potomnej. Za jego pomocą możemy uzyskać dostęp do atrybutów i metod.

Różnorodny

#37. Jak używać komentarzy jedno- i wieloliniowych w Pythonie?

Używamy hash (#) dla komentarzy jednowierszowych. Oraz potrójne pojedyncze cudzysłowy („komentarz”) lub potrójne podwójne cudzysłowy („komentarz””) dla komentarzy wielowierszowych.

#38. Czym jest obiekt w Pythonie?

Wszystko w Pythonie jest obiektem. Wszystkie typy danych, funkcje i klasy są obiektami.

#39. Jaka jest różnica między is i ==?

Operator == służy do sprawdzania, czy dwa obiekty mają tę samą wartość, czy nie. Operator is służy do sprawdzania, czy dwa obiekty odnoszą się do tej samej lokalizacji pamięci, czy nie.

>>> a = []
>>> b = []
>>> c = a
>>> a == b
True
>>> a is b
False
>>> a is c
True
>>>

#40. Czym jest kopia płytka i głęboka?

Shallow Copy: tworzy dokładną kopię jako oryginał bez zmiany odniesień obiektów. Teraz zarówno kopiowane, jak i oryginalne obiekty odwołują się do tych samych referencji do obiektów. Tak więc zmiana jednego obiektu wpłynie na drugi.

W przypadku płytkiej kopii stosowana jest metoda kopiowania z modułu kopiowania.

>>> from copy import copy
>>> a = [1, [2, 3]]
>>> b = copy(a)
>>> a[1].append(4)
>>> a
[1, [2, 3, 4]]
>>> b
[1, [2, 3, 4]]

Deep Copy: kopiuje rekursywnie wartości oryginalnego obiektu do nowego obiektu. Do głębokiego kopiowania musimy użyć funkcji krojenia lub głębokiego kopiowania z modułu kopiowania.

>>> from copy import deepcopy
>>> a = [1, [2, 3]]
>>> b = deepcopy(a)
>>> a[1].append(4)
>>> a
[1, [2, 3, 4]]
>>> b
[1, [2, 3]]
>>> b[1].append(5)
>>> a
[1, [2, 3, 4]]
>>> b
[1, [2, 3, 5]]
>>>

#41. Czym są iteratory?

Iteratory to obiekty w Pythonie, które pamiętają swój stan iteracji. Inicjuje dane metodą __iter__ i zwraca następny element metodą __next__.

Musimy wywołać next(iterator), aby pobrać kolejny element z iteratora. I możemy przekonwertować typ danych sekwencji na iterator za pomocą wbudowanej metody iter.

>>> a = [1, 2]
>>> iterator = iter(a)
>>> next(iterator)
1
>>> next(iterator)
2
>>> next(iterator)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

#42. Czym są generatory?

Generatory to funkcje, które zwracają iterator jak obiekt generatora. Wykorzystuje plon do generowania danych.

>>> def numbers(n):
...     for i in range(1, n + 1):
...             yield i
...
>>> _10 = numbers(10)
>>> next(_10)
1
>>> next(_10)
2
>>> next(_10)
3
>>> next(_10)
4

Wniosek 👨‍💻

Pytania nie są ograniczone, jak widzimy w tym artykule. Ten artykuł pokazuje, jak można zadawać różne typy pytań na różne tematy w Pythonie. Ale nie ogranicza się to do zestawu pytań, które omówiliśmy w tym artykule.

Jednym ze sposobów na przygotowanie się podczas nauki jest zadawanie sobie pytań na różne tematy. Staraj się tworzyć różne rodzaje pytań z koncepcji. I sam na nie odpowiedz. W ten sposób prawdopodobnie nie zaskoczą Cię pytania w wywiadzie. Możesz także sprawdzić kompilator Pythona online, aby przećwiczyć kod.

Wszystkiego najlepszego na zbliżający się wywiad w Pythonie!