42 Fragen und Antworten zu Python-Interviews in Echtzeit [2022]

Inhaltsverzeichnis

Python-Interviewfragen und -antworten: Ein umfassender Leitfaden

Bereiten Sie sich auf ein Python-Vorstellungsgespräch vor oder sind Sie einfach neugierig, wie gut Sie Python beherrschen? Kein Problem! Wir haben für Sie eine Sammlung von Fragen und Antworten zusammengestellt, die Ihnen dabei helfen, Ihre Kenntnisse zu überprüfen und sich optimal vorzubereiten.

Dieser Artikel soll Ihnen einen Einblick geben, welche Art von Fragen in einem Vorstellungsgespräch auf Sie zukommen könnten und Ihnen ermöglichen, Ihr Python-Wissen einzuschätzen. Versuchen Sie, die Fragen selbst zu beantworten, bevor Sie die Antworten lesen, um eine realistische Selbsteinschätzung zu erhalten. Beginnen wir mit den Fragen!

Die Fragen sind nach Themengebieten in verschiedene Abschnitte unterteilt. Jeder Abschnitt enthält Fragen und sorgfältig ausgearbeitete Antworten. Sie können die Antworten in Ihren eigenen Worten formulieren, um den Eindruck zu vermeiden, dass Sie etwas vorlesen. Ziel ist es, authentisch und kompetent zu wirken.

Python-Grundlagen

#1. Was ist Python?

Python ist eine interpretierte, universell einsetzbare Programmiersprache auf hoher Ebene. Sie ermöglicht es uns, mithilfe von Bibliotheken und Frameworks von Drittanbietern nahezu jede Art von Anwendung zu entwickeln. Python ist besonders beliebt in zukunftsorientierten Bereichen wie künstlicher Intelligenz und Datenwissenschaft.

#2. Was ist der Hauptunterschied zwischen einem Interpreter und einem Compiler?

Ein Interpreter übersetzt den Code Zeile für Zeile in Maschinencode, während ein Compiler den gesamten Code als Einheit in Maschinencode umwandelt.

#3. Ist Python statisch oder dynamisch typisiert?

Python ist eine dynamisch typisierte Sprache.

#4. Was bedeutet dynamisch typisiert?

Dynamisch typisierte Sprachen überprüfen die Datentypen von Variablen erst zur Laufzeit. Bekannte Beispiele für dynamisch typisierte Sprachen sind Python, JavaScript und Ruby.

Zusatzinfo: Statisch typisierte Sprachen führen die Typüberprüfung bereits zur Kompilierzeit durch. Beispiele hierfür sind C++, C und Java.

#5. Nennen Sie einige Anwendungsbereiche von Python.

Python zeichnet sich durch seine leicht verständliche und einfach zu lernende Syntax aus, die der englischen Sprache ähnelt. Die aktive Entwicklergemeinschaft ist riesig, und es gibt unzählige Drittanbieter-Pakete für verschiedene Anwendungsgebiete. Im Bereich der Entwicklung lassen sich mit Python Webanwendungen, grafische Oberflächen (GUIs) und Kommandozeilen-Anwendungen (CLIs) realisieren.

Ein besonders häufiger Anwendungsfall ist die Automatisierung. Python-Skripte können beispielsweise Aufgaben wie das Aufräumen der Festplatte, das Versenden von E-Mails oder das Abrufen von Produktpreisinformationen automatisieren.

Darüber hinaus ist Python eine der führenden Sprachen im Bereich der Datenwissenschaft.

#6. Welche Projekte haben Sie mit Python realisiert?

Ich habe verschiedene Automatisierungsskripte entwickelt, um wiederkehrende Aufgaben zu vereinfachen und Informationen über Produktpreise und Verfügbarkeiten abzurufen.

Außerdem habe ich mit Frameworks wie Django und Flask Webanwendungen entwickelt.

Hinweis: Die obige Antwort ist ein Beispiel. Ihre Antwort sollte Ihre individuellen Erfahrungen widerspiegeln. Beschreiben Sie die Bereiche, in denen Sie Python angewendet haben, und zeigen Sie Ihre Projekte, wenn möglich.

Datentypen

#7. Welche eingebauten Datentypen gibt es in Python?

Python verfügt über zahlreiche eingebaute Datentypen wie int, float, complex, bool, list, tuple, set, dict und str.

Hinweis: Sie müssen nicht alle Datentypen aufzählen. Nennen Sie einige der häufigsten, die Sie regelmäßig verwenden. Der Interviewer kann dann basierend auf Ihrer Antwort weitere Fragen stellen.

#8. Was ist der Unterschied zwischen einer Liste und einem Tupel?

Sowohl Listen als auch Tupel dienen zum Speichern von Sammlungen von Elementen. Der Hauptunterschied ist, dass Listen veränderlich sind, während Tupel unveränderlich sind.

#9. Was sind veränderliche und unveränderliche Datentypen?

Veränderliche Datentypen können nach ihrer Erstellung modifiziert werden. Beispiele hierfür sind Listen, Sets und Dictionaries.

Unveränderliche Datentypen können nach ihrer Erstellung nicht mehr verändert werden. Beispiele sind Strings und Tupel.

#10. Erläutern Sie einige Methoden von Listen.

  1. append() – Fügt ein Element am Ende der Liste hinzu.
    >>> a = [1, 2]
    >>> a.append(3)
    >>> a
    [1, 2, 3]
            
  2. pop() – Entfernt ein Element aus der Liste. Ohne Argument entfernt es das letzte Element, mit einem Indexargument das Element an der entsprechenden Position.
    >>> a = [1, 2, 3, 4, 5]
    >>> a.pop()
    5
    >>> a
    [1, 2, 3, 4]
    >>> a.pop(1)
    2
    >>> a
    [1, 3, 4]
            
  3. remove() – Entfernt das erste Vorkommen eines bestimmten Elements aus der Liste.
    >>> 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() – Sortiert die Liste entweder aufsteigend oder absteigend.
    >>> a = [3, 2, 4, 1]
    >>> a.sort()
    >>> a
    [1, 2, 3, 4]
    >>> a.sort(reverse=True)
    >>> a
    [4, 3, 2, 1]
            
  5. reverse() – Kehrt die Reihenfolge der Listenelemente um.
    >>> a = [3, 2, 4, 1]
    >>> a.reverse()
    >>> a
    [1, 4, 2, 3]
              

Hinweis: Es gibt weitere Methoden wie delete, insert, count usw. Sie müssen nicht alle Methoden aufzählen, sondern können zwei bis drei häufig verwendete Methoden erklären.

#11. Erklären Sie einige String-Methoden.

  1. split() – Teilt einen String an den gewünschten Stellen auf und gibt eine Liste von Teilstrings zurück. Standardmäßig wird der String an Leerzeichen aufgeteilt. Das Trennzeichen kann als Argument angegeben werden.
    >>> a = "Das ist ein Text"
    >>> a.split()
    ['Das', 'ist', 'ein', 'Text']
    >>> a = "1, 2, 3, 4, 5, 6"
    >>> a.split(", ")
    ['1', '2', '3', '4', '5', '6']
            
  2. join() – Kombiniert eine Liste von String-Objekten zu einem einzigen String, wobei ein Trennzeichen verwendet wird.
    >>> a = ['Das', 'ist', 'ein', 'Text']
    >>> ' '.join(a)
    'Das ist ein Text'
    >>> ', '.join(a)
    'Das, ist, ein, Text'
              

Hinweis: Weitere String-Methoden sind capitalize, isalnum, isalpha, isdigit, lower, upper, center usw.

#12. Was bedeutet negative Indizierung bei Listen?

Auf Elemente einer Liste wird üblicherweise über ihren Index zugegriffen, wobei die normale Indizierung bei 0 beginnt. Negative Indizierung ermöglicht den Zugriff vom Ende der Liste aus. Der letzte Index ist -1, der vorletzte -2 und so weiter.

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

#13. Erklären Sie einige Dictionary-Methoden.

  1. items() – Gibt eine Liste von Tupeln zurück, die die Schlüssel-Wert-Paare des Dictionaries enthalten.
    >>> a = {1: 'Wert1', 2: 'Wert2', 3: 'Wert3'}
    >>> a.items()
    dict_items([(1, 'Wert1'), (2, 'Wert2'), (3, 'Wert3')])
            
  2. pop() – Entfernt ein Schlüssel-Wert-Paar aus dem Dictionary anhand des Schlüssels.
    >>> a = {1: 2, 2: 3}
    >>> a.pop(2)
    3
    >>> a
    {1: 2}
            

Hinweis: Weitere Dictionary-Methoden sind get, keys, values und clear.

#14. Was ist Slicing in Python?

Slicing ermöglicht den Zugriff auf einen Teilbereich eines Sequenzdatentyps. Es gibt basierend auf den angegebenen Argumenten Daten des gleichen Typs wie das ursprüngliche Datenobjekt zurück.

Slicing akzeptiert bis zu drei Argumente: Startindex, Endindex und Schrittweite. Die Syntax lautet variable[start:end:step]. Die Argumente sind optional. Ein leerer Doppelpunkt ([:]) gibt die gesamten Daten zurück.

>>> 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. Welche Datentypen unterstützen Slicing?

Slicing kann mit Listen, Tupeln und Strings verwendet werden.

#16. Was sind Entpackoperatoren in Python? Wie werden sie verwendet?

Die Operatoren * und ** sind Entpackoperatoren in Python.

Der *-Operator wird verwendet, um mehrere Werte aus einem Sequenzdatentyp gleichzeitig zu Variablen zuzuweisen.

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

Der **-Operator wird mit Dictionary-Datentypen verwendet und kopiert Schlüssel-Wert-Paare von einem Dictionary in ein anderes.

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

Hinweis: Weitere Informationen zu diesen Operatoren finden Sie in der Python-Dokumentation.

Bedingungen und Schleifen

#17. Hat Python Switch-Anweisungen?

Nein, Python unterstützt keine Switch-Anweisungen.

#18. Wie wird die Funktionalität von Switch-Anweisungen in Python implementiert?

Die Funktionalität von Switch-Anweisungen kann mit if– und elif-Anweisungen realisiert werden.

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

#19. Was sind break– und continue-Anweisungen?

break – Die break-Anweisung beendet die Ausführung der aktuellen Schleife und springt zur Anweisung nach der Schleife.

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

continue – Die continue-Anweisung überspringt die Ausführung des restlichen Codes im aktuellen Schleifendurchlauf und geht zum nächsten Durchlauf über.

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

#20. Wann wird der Code im else-Block von while– und for-Schleifen ausgeführt?

Der Code im else-Block einer while– oder for-Schleife wird nach der Ausführung aller Schleifendurchläufe ausgeführt, aber nicht, wenn die Schleife mit einem break beendet wird.

#21. Was sind List- und Dictionary-Comprehensions?

List- und Dictionary-Comprehensions sind verkürzte Schreibweisen für for-Schleifen.

>>> 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. Wie funktioniert die range()-Funktion?

Die range()-Funktion gibt eine Zahlenfolge zwischen einem Start- und einem Stoppwert mit einer optionalen Schrittweite zurück. Die Syntax lautet range(start, stop[, step]).

Das stop-Argument ist obligatorisch, während start und step optional sind. Standardwerte sind 0 für start und 1 für step.

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

Funktionen

#23. Was sind Parameter und Argumente?

Parameter sind die Namen, die in der Funktionsdefinition verwendet werden.

Argumente sind die tatsächlichen Werte, die der Funktion beim Aufruf übergeben werden.

#24. Welche Arten von Argumenten gibt es in Python?

Es gibt vier Hauptarten von Argumenten: Positionsargumente, Standardargumente, Keyword-Argumente und variable Argumente.

Positionsargumente: Die Argumente, die in der Funktionsdefinition verwendet werden. Sie sind beim Aufruf der Funktion erforderlich und müssen in der richtigen Reihenfolge übergeben werden.

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

Standardargumente: Bei der Definition der Funktion kann für Argumente ein Standardwert angegeben werden. Wenn der Benutzer keinen Wert übergibt, wird der Standardwert verwendet.

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

Keyword-Argumente: Beim Aufruf der Funktion können die Argumente mit ihrem Namen übergeben werden. Dies ermöglicht es, die Reihenfolge der Argumente zu ändern.

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

Variable Argumente: Um eine beliebige Anzahl von Argumenten zu sammeln, verwenden wir die Operatoren * und ** in der Funktionsdefinition.

>>> def add(*args):
...     return sum(args)
...
>>> add(1, 2, 3, 4, 5)
15
>>> def dict_args(**kwargs):
...     print(kwargs)
...
>>> dict_args(a="Wert1", b='Wert2', c="Wert3")
{'a': 'Wert1', 'b': 'Wert2', 'c': 'Wert3'}
        

#25. Was ist eine Lambda-Funktion?

Lambda-Funktionen sind kleine, anonyme Funktionen mit einem einzigen Ausdruck, die eine beliebige Anzahl von Argumenten akzeptieren können.

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

#26. Was ist der Unterschied zwischen einer normalen Funktion und einer Lambda-Funktion?

Die Funktionalität von normalen Funktionen und Lambda-Funktionen ist ähnlich. Im Vergleich zu Lambda-Funktionen ist bei normalen Funktionen jedoch zusätzlicher Code für die gleiche Funktionalität erforderlich.

Lambda-Funktionen sind besonders nützlich für einzelne Ausdrücke.

#27. Wofür wird das Schlüsselwort pass verwendet?

Das Schlüsselwort pass dient als Platzhalter in einem leeren Codeblock. Python erlaubt keine leeren Blöcke, daher kann pass verwendet werden, wenn ein Block ohne Code definiert werden soll (z. B. zur späteren Implementierung).

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

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

#28. Was ist eine rekursive Funktion?

Eine Funktion, die sich selbst aufruft, wird als rekursive Funktion bezeichnet.

Was sind Packoperatoren in Python? Wie werden sie verwendet?

Packoperatoren werden verwendet, um mehrere Argumente in Funktionen zu sammeln. Sie werden als variable Argumente bezeichnet.

Hinweis: Weitere Informationen zu Packoperatoren finden Sie in der Python-Dokumentation.

OOP in Python

#29. Welches Schlüsselwort wird verwendet, um Klassen in Python zu erstellen?

Das Schlüsselwort class wird verwendet, um Klassen zu erstellen. Es ist üblich, Klassennamen im PascalCase-Format zu schreiben.

>>> class Auto:
...     pass
...
        

#30. Wie wird eine Klasse in Python instanziiert?

Eine Instanz einer Klasse wird erstellt, indem die Klasse wie eine Funktion aufgerufen wird. Die erforderlichen Attribute können wie Funktionsargumente übergeben werden.

>>> class Auto:
...     def __init__(self, farbe):
...             self.farbe = farbe
...
>>> rotes_auto = Auto('rot')
>>> rotes_auto.farbe
'rot'
>>> gruenes_auto = Auto('gruen')
>>> gruenes_auto.farbe
'gruen'
        

#31. Was ist self in Python?

self repräsentiert das Objekt der Klasse. Es wird innerhalb der Klasse verwendet, um auf die Attribute und Methoden des jeweiligen Objekts zuzugreifen.

#32. Was ist die Methode __init__?

__init__ ist die Konstruktormethode einer Klasse. Sie wird automatisch beim Erstellen eines Objekts ausgeführt und dient zur Initialisierung von Daten für die Instanz.

#33. Was ist ein Docstring in Python?

Docstrings (Dokumentationsstrings) werden zur Dokumentation von Code verwendet und können auch als mehrzeilige Kommentare dienen. Sie werden häufig verwendet, um Methoden in einer Klasse zu beschreiben.

Der Docstring einer Methode kann mit der help()-Funktion angezeigt werden.

>>> class Auto:
...     def __init__(self, farbe):
...             self.farbe = farbe
...
...     def farbe_aendern(self, neue_farbe):
...             """Diese Methode aendert die Farbe des Autos"""
...             self.farbe = neue_farbe
...
>>> auto = Auto('rot')
>>> help(auto.farbe_aendern)
Help on method farbe_aendern in module __main__:

farbe_aendern(neue_farbe) method of __main__.Auto instance
    Diese Methode aendert die Farbe des Autos
>>>
        

#34. Was sind Dunder- oder Magic-Methoden?

Methoden mit zwei vorangestellten und nachgestellten Unterstrichen werden als Dunder- oder Magic-Methoden bezeichnet. Sie werden hauptsächlich verwendet, um Standardmethoden zu überschreiben. Beispiele sind __str__, __len__, __setitem__ und __getitem__.

>>> class Auto:
...     def __str__(self):
...             return "Dies ist eine Auto-Klasse"
...
>>> auto = Auto()
>>> print(auto)
Dies ist eine Auto-Klasse
>>>
        

Hinweis: Es gibt viele weitere Methoden, die überschrieben werden können, um die Funktionalität der Klassen anzupassen. Weitere Informationen finden Sie in der Python-Dokumentation.

#35. Wie wird Vererbung in Python implementiert?

Die Elternklasse wird als Argument an die Kindklasse übergeben. Die __init__-Methode der Elternklasse kann dann in der Kindklasse aufgerufen werden.

>>> class Tier:
...     def __init__(self, name):
...             self.name = name
...
>>> class Tier:
...     def __init__(self, name):
...             self.name = name
...
...     def anzeigen(self):
...             print(self.name)
>>> class Hund(Tier):
...     def __init__(self, name):
...             super().__init__(name)
...
>>> hundi = Hund('Tommy')
>>> hundi.anzeigen()
Tommy
>>>
            

#36. Wie greift man in Python auf die Elternklasse aus der Kindklasse zu?

Mit super() kann auf die Elternklasse in der Kindklasse zugegriffen werden. Dies ermöglicht den Zugriff auf Attribute und Methoden der Elternklasse.

Sonstiges

#37. Wie werden einzeilige und mehrzeilige Kommentare in Python verwendet?

Für einzeilige Kommentare wird das Rautezeichen (#) verwendet. Für mehrzeilige Kommentare können dreifache einfache ('''Kommentar''') oder doppelte Anführungszeichen ("""Kommentar""") verwendet werden.

#38. Was ist ein Objekt in Python?

In Python ist alles ein Objekt. Alle Datentypen, Funktionen und Klassen sind Objekte.

#39. Was ist der Unterschied zwischen is und ==?

Der Operator == prüft, ob zwei Objekte den gleichen Wert haben. Der Operator is prüft, ob zwei Objekte auf denselben Speicherplatz verweisen.

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

#40. Was sind flache und tiefe Kopien?

Flache Kopie: Erstellt eine exakte Kopie des Originals, wobei jedoch die Referenzen der Objekte nicht kopiert werden. Sowohl das Original als auch die Kopie verweisen auf dieselben Objektreferenzen, d.h. Änderungen in einem Objekt wirken sich auf das andere aus.

Für flache Kopien wird die Methode copy() aus dem Modul copy verwendet.

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

Tiefe Kopie: Erstellt eine rekursive Kopie des Originalobjekts, einschließlich aller darin enthaltenen Referenzen. Änderungen an einem Objekt wirken sich nicht auf das andere aus. Für tiefe Kopien wird die deepcopy()-Funktion aus dem Modul copy verwendet.

>>> 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. Was sind Iteratoren?

Iteratoren sind Objekte, die sich ihren Iterationszustand merken. Sie werden mit der Methode __iter__ initialisiert und geben das nächste Element mit der Methode __next__ zurück.

Um das nächste Element vom Iterator zu erhalten, wird next(iterator) aufgerufen. Ein Sequenzdatentyp kann mit der eingebauten Funktion iter() in einen Iterator umgewandelt werden.

>>> 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. Was sind Generatoren?

Generatoren sind Funktionen, die ein Iterator-ähnliches Generatorobjekt zurückgeben. Sie verwenden das Schlüsselwort yield, um die Daten zu generieren.

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

Fazit 👨‍💻

Die Menge an Fragen zu Python ist grenzenlos, wie in diesem Artikel deutlich wird. Dieser Artikel gibt Ihnen einen Überblick über verschiedene Arten von Fragen zu unterschiedlichen Themen, ist aber keinesfalls eine abschließende Liste.

Eine gute Vorbereitung besteht darin, sich selbst während des Lernens immer wieder zu hinterfragen. Versuchen Sie, verschiedene Arten von Fragen zu einem bestimmten Konzept zu formulieren und diese selbst zu beantworten. So können Sie Überraschungen im Vorstellungsgespräch vermeiden. Nutzen Sie auch den Online-Python-Compiler, um Ihre Programmierkenntnisse zu üben.

Viel Erfolg bei Ihrem bevorstehenden Python-Interview! 👍