42 Otázky a odpovědi pro rozhovory v Pythonu v reálném čase [2022]

Připravujete se na pohovory v Pythonu? Nebo jen chcete vědět, kolik Pythonu znáte? Žádný problém. Zde pokryjeme vaše problémy otázkami a odpověďmi.

Tento článek vám pomůže pochopit, s jakým typem otázek se můžete setkat při pohovorech. Nebo vám pomůže vyhodnotit vaše dovednosti Pythonu. Ujistěte se, že jste odpověděli na otázky, než uvidíte odpovědi, abyste se mohli přesně vyhodnotit. Bez dalších řečí se vrhněme na otázky.

Otázky jsou rozděleny do různých sekcí podle typu témat. Každá sekce obsahuje otázky spolu s vybranými odpověďmi. Odpověď můžete upravit svým vlastním jazykem se stejným významem. Takže tazatel nebude mít pocit, že něco čtete.

Table of Contents

Jazyk Python

#1. Co je Python?

Python je interpretovaný univerzální programovací jazyk na vysoké úrovni. Můžeme vytvořit téměř jakýkoli typ aplikace pomocí Pythonu s knihovnami a frameworky třetích stran. Python je jedním z nejpopulárnějších programovacích jazyků v pokročilých technologiích, jako je AI, Data Science atd.

#2. Jaký je hlavní rozdíl mezi tlumočníkem a kompilátorem?

Interpret překládá jeden příkaz po druhém do strojového kódu, zatímco kompilátor překládá celý kód najednou do strojového kódu.

#3. Je Python staticky nebo dynamicky typovaný jazyk?

Python je dynamicky typovaný jazyk.

#4. Co myslíte dynamicky psaným jazykem?

Dynamicky typované jazyky kontrolují typy proměnných za běhu. Některé dynamicky typované jazyky jsou Python, JavaScript, Ruby atd.

Bonus: Staticky typované jazyky kontrolují typy proměnných v době kompilace. Některé staticky typované jazyky jsou C++, C, Java atd.,

#5. Uveďte nějaké aplikace Pythonu.

Python má jednodušší a snadno pochopitelnou syntaxi. Může to vypadat podobně jako v angličtině. Komunita vývojářů pro Python je obrovská. Můžeme najít mnoho balíčků třetích stran pro práci s různými typy vývoje aplikací. Pokud jde o vývoj, můžeme vytvářet webové aplikace, GUI aplikace, CLI aplikace atd.,

Jednou z nejpopulárnějších aplikací Pythonu je automatizace. Můžeme snadno vytvářet skripty v Pythonu pro automatizaci úloh, jako je čištění disku, odesílání e-mailů, získávání dat o cenách produktů atd..,

Python je jedním z nejpopulárnějších jazyků pro použití v oblasti Data Science.

#6. Jaké aplikace jste vytvořili pomocí Pythonu?

Napsal jsem několik automatizačních skriptů, abych odstranil opakující se a nudné úkoly. A skripty pro získání informací o cenách produktů, dostupnosti atd.

Pracoval jsem také s frameworky jako Django, Flask na vytváření webových aplikací. A vytvořte některé webové aplikace pomocí Django a Flask.

  9 nejlepších nástrojů pro reakci na bezpečnostní incidenty pro malé a velké podniky

Poznámka: Výše ​​uvedená odpověď je příkladem. Vaše odpověď může být zcela odlišná od výše uvedené. Pokuste se vysvětlit různé oblasti, na kterých jste pracovali pomocí Pythonu. Zobrazit aplikace, pokud jsou k dispozici.

Typy dat

#7. Jaké jsou vestavěné datové typy v Pythonu?

V Pythonu existuje několik vestavěných datových typů. Jsou to int, float, complex, bool, list, tuple, set, dict, str.

Poznámka: Nemusíte sdělovat všechny datové typy přítomné v Pythonu. Uveďte některé z nich, které nejčastěji používáte. Tazatel může klást otázky na základě vaší odpovědi.

#8. Jaký je rozdíl mezi seznamem a n-ticí?

Seznam i n-tice se používají k ukládání kolekce objektů. Hlavní rozdíl mezi seznamem a n-tice je „seznam je proměnlivý objekt, zatímco n-tice je neměnný objekt“.

#9. Co jsou proměnlivé a neměnné datové typy?

Proměnlivé datové typy lze po jejich vytvoření změnit. Některé z měnitelných objektů v Pythonu jsou list, set, dict.

Neměnné datové typy nelze po jejich vytvoření změnit. Některé z neměnných objektů v Pythonu jsou str, tuple.

#10. Vysvětlete některé metody seznamu.

1. append – metoda se používá pro přidání prvku do seznamu. Přidá prvek na konec seznamu.

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

2. pop – metoda se používá k odstranění prvku ze seznamu. Odebere poslední prvek, pokud neuvedeme žádný index jako argument, nebo odstraní prvek v indexu, pokud zadáme argument.

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

3. remove – metoda se používá k odstranění prvku ze seznamu. Musíme poskytnout prvek jako argument, který chceme odstranit ze seznamu. Odebere první výskyt prvku ze seznamu.

>>> 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 používaná k řazení seznamu ve vzestupném nebo sestupném pořadí.

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

5. reverse – metoda slouží k obrácení prvků seznamu.

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

Poznámka: Existují i ​​jiné metody, jako je vymazat, vložit, počíst atd… Nemusíte tazateli vysvětlovat každou metodu seznamu. Stačí vysvětlit dvě nebo tři metody, které většinou používáte.

#11. Vysvětlete některé metody řetězce

1. split – metoda se používá k rozdělení řetězce v požadovaných bodech. Jako výsledek vrátí seznam. Ve výchozím nastavení rozděluje řetězec na mezery. Jako argument pro metodu můžeme poskytnout oddělovač.

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

2. join – metoda se používá ke spojení seznamu objektů typu string. Kombinuje objekty typu string s oddělovačem, který poskytujeme.

>>> a = ['This', 'is', 'Geekflare']
>>> ' '.join(a)
'This is etechblog.cz'
>>> ', '.join(a)
'This, is, etechblog.cz'

Poznámka: Některé další metody řetězců jsou: velká písmena, isalnum, isalpha, isdigit, spodní, horní, střed atd.,

#12. Co je negativní indexování v seznamech?

Index se používá pro přístup k prvku ze seznamů. Normální indexování seznamu začíná od 0.

Podobně jako normální indexování se pro přístup k prvkům ze seznamů používá také negativní indexování. Negativní indexování nám však umožňuje přístup k indexu z konce seznamu. Začátek záporné indexace je -1. A neustále se zvyšuje jako -2, -3, -4 atd., až do délky seznamu.

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

#13. Vysvětlete některé metody diktátu

1. items – metoda vrací páry klíč: hodnota slovníků jako seznam n-tic.

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

2. pop – metoda se používá k odstranění páru klíč:hodnota ze slovníku. Přijme klíč jako argument a odstraní jej ze slovníku.

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

Poznámka: Některé další metody diktování jsou: get, keys, values, clear, atd.

#14. Co je krájení v Pythonu?

Slicování se používá pro přístup k podpole z datového typu sekvence. Vrací data z datového typu sekvence na základě námi poskytnutých argumentů. Vrací stejný datový typ jako zdrojový datový typ.

Slicing přijímá tři argumenty. Jsou to počáteční index, koncový index a krok přírůstku. Syntaxe krájení je variabilní[start:end:step]. Argumenty nejsou pro krájení povinné. Můžete zadat prázdnou dvojtečku (:), která vrátí všechna data jako výsledek.

>>> 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. Které datové typy umožňují dělení?

Můžeme použít slicing na datových typech list, tuple a str.

  Každý hluk najednou vám umožní poslouchat hudbu všech žánrů

#16. Co jsou rozbalovací operátory v Pythonu? Jak je používat?

Operátory * a ** rozbalují operátory v Pythonu.

Operátor rozbalení * se používá k přiřazení více hodnot různým hodnotám najednou ze sekvenčních datových typů.

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

Operátor rozbalení ** se používá s datovými typy dict. Rozbalování ve slovnících nefunguje jako rozbalování se sekvenčními datovými typy.

Rozbalení ve slovnících se většinou používá ke kopírování klíčových: hodnotových položek z jednoho slovníku do druhého.

>>> 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}

Poznámka: Další informace o těchto operátorech naleznete v tomto článku.

Podmínky a smyčky

#17. Má Python příkazy switch?

Ne, Python nemá příkazy switch.

#18. Jak implementujete funkčnost příkazů switch v Pythonu?

Funkčnost příkazů switch můžeme implementovat pomocí příkazů if a elif.

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

#19. Co jsou prohlášení o přerušení a pokračování?

break – příkaz break se používá k ukončení běžící smyčky. Provedení kódu skočí na vnější stranu přerušovací smyčky.

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

pokračovat – příkaz continue se používá k přeskočení provádění zbývajícího kódu. Kód za příkazem continue se v aktuální iteraci neprovede a provedení přejde do další iterace.

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

#20. Kdy je kód v else spuštěn pomocí smyček while a for?

Kód uvnitř bloku else se smyčkami while a for se provede po provedení všech iterací. A kód uvnitř bloku else se nespustí, když přerušíme smyčky.

#21. Co jsou porozumění seznamu a slovníku?

Porozumění seznamu a slovníku jsou syntaktickým cukrem pro smyčky 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 funguje funkce rozsahu?

Funkce range vrací sekvenci čísel od začátku do konce s přírůstkem kroku. Syntaxe funkce range je range(start, stop[, step]).

Argument stop je povinný. Argumenty start a step jsou volitelné. Výchozí hodnota startu a kroku je 0 a 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]
>>>

Funkce

#23. Jaké jsou parametry a argumenty?

Parametry jsou názvy uvedené v definici funkce.

Argumenty jsou hodnoty předané funkci při vyvolání.

#24. Jaké jsou různé typy argumentů v Pythonu?

Existují především čtyři typy argumentů. Jsou to poziční argumenty, výchozí argumenty, argumenty klíčových slov a libovolné argumenty.

Poziční argumenty: normální argumenty, které definujeme v uživatelsky definovaných funkcích, se nazývají poziční argumenty. Při vyvolání funkce jsou vyžadovány všechny poziční argumenty.

>>> 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'
>>>

Výchozí argumenty: můžeme zadat hodnotu argumentů v samotné definici funkce jako výchozí hodnotu. Když uživatel nepředá hodnotu, funkce vezme v úvahu výchozí hodnotu.

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

Argumenty klíčových slov: při vyvolání funkce můžeme zadat název argumentů a přiřadit jim hodnoty. Argumenty klíčových slov nám pomáhají vyhnout se řazení, které je v pozičních argumentech povinné.

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

Libovolné argumenty: používáme libovolné argumenty ke shromažďování hromady hodnot v době, kdy neznáme počet argumentů, které funkce získá. My * a ** operátory v definici funkce shromažďujeme argumenty.

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

#25. Co je to funkce lambda?

Lambda funkce jsou malé anonymní funkce v Pythonu. Má jednoduché výrazy a přijímá více argumentů.

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

#26. Jaký je rozdíl mezi normální funkcí a funkcí lambda?

Funkčnost normálních funkcí i funkcí lambda je podobná. Ale pro stejnou funkčnost potřebujeme napsat nějaký extra kód v normálních funkcích ve srovnání s lambda funkcemi.

  8 nejlepších grafů PERT pro projektové manažery

Funkce lambda se hodí, když existuje jediný výraz.

#27. K čemu se používá klíčové slovo pass?

Klíčové slovo pass se používá ke zmínce o prázdném bloku v kódu. Python nám nedovoluje ponechat bloky bez kódu. Příkaz pass nám tedy umožňuje definovat prázdné bloky (když se rozhodneme kód vyplnit později).

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

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

#28. Co je to rekurzivní funkce?

Samotné volání funkce se nazývá rekurzivní funkce.

Co jsou operátory balení v Pythonu? Jak je používat?

Operátory balení se používají ke shromažďování více argumentů ve funkcích. Jsou známé jako svévolné argumenty.

Poznámka: Další informace o operátorech balení v Pythonu najdete v tomto článku.

#29. OOP v Pythonu

Jaké klíčové slovo se používá k vytváření tříd v Pythonu?

Klíčové slovo class se používá k vytváření tříd v Pythonu. Měli bychom postupovat podle pascalu pro pojmenování tříd v Pythonu jako průmyslový standardní postup.

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

#30. Jak vytvořit instanci třídy v Pythonu?

Můžeme vytvořit instanci třídy v Pythonu jednoduchým voláním jako funkce. Požadované atributy pro objekt můžeme předat stejným způsobem jako pro argumenty funkcí.

>>> 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. Co je self v Pythonu?

Já představuje předmět třídy. Používá se pro přístup k atributům objektu a metodám uvnitř třídy pro konkrétní objekt.

#32. Co je metoda __init__?

__init__ je metoda konstruktoru podobná konstruktorům v jiných jazycích OOP. Provede se okamžitě, když vytvoříme objekt pro třídu. Používá se k inicializaci počátečních dat pro instanci.

#33. Co je docstring v Pythonu?

Dokumentační řetězce nebo docstrings se používají k dokumentaci bloku kódu. Používají se také jako víceřádkové komentáře.

Tyto docstrings se používají v metodách třídy k popisu toho, co určitá metoda dělá. A můžeme vidět metodu docstring pomocí metody nápovědy.

>>> 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. Co jsou to dunderovy nebo magické metody?

Metody, které mají dvě podtržítka předpony a přípony, se nazývají dunder nebo magické metody. Používají se hlavně k přepsání metod. Některé z metod, které můžeme ve třídách přepsat, jsou __str__, __len__, __setitem__, __getitem__ atd.,

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

Poznámka: Existuje mnoho dalších metod, které můžete přepsat. Přijdou vhod, když chcete kód upravit do hloubky. Další informace najdete v dokumentaci.

#35. Jak implementujete dědičnost v Pythonu?

Jako argument můžeme předat rodičovskou třídu podřízené třídě. A můžeme vyvolat rodičovskou třídu metody init v podřízené třídě.

>>> 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 získat přístup k rodičovské třídě v podřízené třídě v Pythonu?

Můžeme použít super(), který odkazuje na nadřazenou třídu v podřízené třídě. A můžeme s ním přistupovat k atributům a metodám.

Smíšený

#37. Jak používat jednořádkové a víceřádkové komentáře v Pythonu?

Pro jednořádkové komentáře používáme hash (#). A trojité jednoduché uvozovky (“’komentář”‘) nebo trojité dvojité uvozovky (“””komentář”””) pro víceřádkové komentáře.

#38. Co je objekt v Pythonu?

Všechno v Pythonu je objekt. Všechny datové typy, funkce a třídy jsou objekty.

#39. Jaký je rozdíl mezi is a ==?

Operátor == se používá ke kontrole, zda dva objekty mají stejnou hodnotu nebo ne. Operátor is se používá ke kontrole, zda dva objekty odkazují na stejné paměťové místo nebo ne.

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

#40. Co je mělká a hluboká kopie?

Mělká kopie: vytvoří přesnou kopii jako originál beze změny referencí objektů. Nyní zkopírované i původní objekty odkazují na stejné objekty. Takže změna jednoho objektu ovlivní druhý.

Pro mělkou kopii se používá metoda kopírování z modulu kopírování.

>>> 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: kopíruje hodnoty původního objektu rekurzivně do nového objektu. Pro hluboké kopírování musíme použít funkci slicing nebo deepcopy z kopírovacího modulu.

>>> 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. Co jsou to iterátory?

Iterátory jsou objekty v Pythonu, které si pamatují svůj stav iterace. Inicializuje data metodou __iter__ a vrátí další prvek pomocí metody __next__.

Potřebujeme zavolat next(iterator), abychom získali další prvek z iterátoru. A můžeme převést datový typ sekvence na iterátor pomocí vestavěné 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. Co jsou generátory?

Generátory jsou funkce, které vracejí iterátor jako objekt generátoru. Ke generování dat používá výnos.

>>> 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

Závěr 👨‍💻

Otázky nejsou omezeny, jak vidíme v tomto článku. Tento článek ukazuje, jak lze v Pythonu klást různé typy otázek z různých témat. Není to však omezeno na soubor otázek, které jsme probrali v tomto článku.

Jedním ze způsobů, jak být při učení připraveni, je ptát se na různá témata. Zkuste z konceptu vytvořit různé typy otázek. A odpovězte si na ně sami. Takhle vás asi otázky v rozhovoru nepřekvapí. Můžete se také podívat na online kompilátor Pythonu a procvičit si kód.

Vše nejlepší pro váš nadcházející Python Interview! 👍