Python: 10 häufige Fragen im Vorstellungsgespräch als Entwickler

Python ist als Programmiersprache sehr beliebt, sodass im Bewerbungsgespräch auf eine Entwicklerstelle mit detaillierten Fragen zu Funktionen und Besonderheiten zu rechnen ist. Wir beantworten zehn häufig gestellte Fragen.

Frage 1: Was sind die Besonderheiten von Python und welche Vorteile bietet die Programmiersprache?

Python ist eine sehr vielseitige Programmiersprache, mit der sich Anwendungen im Bereich der Webentwicklung, Datenanalyse und auch künstlichen Intelligenz erstellen lassen. Die Sprache punktet mit großer Benutzerfreundlichkeit, Vielseitigkeit und guter Performance – nur drei Gründe, warum viele angehende Programmierinnen und Programmierer Python wählen, wenn sie eine Programmiersprache erlernen.

Eine sehr umfangreiche Standardbibliothek mit vielen vorgefertigten Modulen und Funktionen sowie eine einfache und leicht verständliche Syntax machen Python vor allem für Anfängerinnen und Anfänger sehr einsteigerfreundlich.

Weitere Vorteile liegen in der großen und aktiven Entwicklungs-Community von Python, womit zusätzliche, externe Ressourcen und auch Unterstützung vieler Fachleute in die Entwicklung fließen. Als interpretierbare und objektbasierte Sprache ist Python gut dazu geeignet, Code zügig zu schreiben und dann direkt zu testen. Hinzu kommt die dynamische Typisierung von Python, die die Programmiersprache flexibel einsetzbar macht.

Ähnlich wie Java kann Python plattformunabhängig ohne Änderungen genutzt werden. Ein besonderer Vorteil gegenüber anderen Programmiersprachen ist die nahtlose Integration anderer Sprachen wie beispielsweise C++. Dies erleichtert nicht nur die übergreifende Arbeit, sondern sorgt auch für eine potenzielle Leistungsoptimierung.

Frage 2 der Python-Interview-Fragen: Was versteht man in Python unter „scope“?

Der Begriff „scope“ bezieht sich in Python auf den Gültigkeitsbereich von Variablen. Er definiert den Teil des Codes, in dem eine Variable sichtbar und zugänglich ist bzw. wo Variablen erstellt und verwendet werden dürfen. Dadurch wird der Code übersichtlicher und Namenskonflikte werden gleichzeitig minimiert. Python kennt zwei Hauptarten von Scopes:

  • Globaler Scope: Diese Form von Variablen ist außerhalb von Funktionen oder Klassen definiert. Auf sie kann im gesamten Programm zugegriffen werden. Dabei stehen globale Variablen oft am Anfang des Codes oder auf einer höheren Ebene.
  • Lokaler Scope: Im Gegensatz dazu beschränken sich Variablen im lokalen Scope auf die Funktion, in der sie definiert wurden. Mit lokalen Variablen ist auch eine Zuordnung in einen spezifisch definierten Block möglich.

Sofern der Zugriff auf eine Variable außerhalb des definierten Codes erfolgen soll, muss eine spezielle Anweisung den Scope entsprechend erweitern. Dies ist zum Beispiel mit „global“ oder „nonlocal“ möglich.

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz

Frage 3: Worin unterscheiden sich „lists“ und „tuples“ in Python?

In Python gibt es zwei Datentypen für die Speicherung von geordneten Sammlungen von Elementen: Listen (lists) und Tupel (tuples). Die beiden Typen sind durch wesentliche Unterschiede definiert, wobei die flexiblere Natur von Listen dafür sorgt, dass sie häufiger verwendet werden:

  • Veränderbarkeit: Listen können verändert werden, auch nachdem die jeweilige Liste bereits erstellt wurde. So lassen sich Elemente hinzufügen, entfernen oder auch ändern. In einem Tupel dagegen können Elemente nach der Erstellung nicht mehr verändert werden.
  • Syntax: Listen werden durch eckige Klammern [ ] dargestellt und Tupel durch runde Klammern ( ). Im Gegensatz zu Listen können Tupel aber auch ohne Klammern definiert werden. Dafür muss klar definiert sein, dass es sich um ein Tupel handelt.
  • Geschwindigkeit: Hier kommt es auf den Anwendungsfall an. Während Listen aufgrund ihrer Veränderbarkeit bei bestimmten Operationen, beispielsweise umfangreichen Datenänderungen, schneller sein können, übertreffen Tupel Listen in Sachen Geschwindigkeit beim Zugriff auf Elemente innerhalb einer Sammlung.

Frage 4: Welchen Unterschied gibt es bei Modulen und Paketen in Python?

Module und Pakete unterscheiden sich in ihrer Anwendung dadurch, dass Module einzelne Dateien mit Code sind, während Pakete eine Sammlung von Modulen innerhalb eines Verzeichnisses darstellen. Beide Formen der Organisationsstruktur sollen dabei helfen, eine übersichtlichere Struktur herzustellen, was gerade bei größeren Python-Projekten von Vorteil ist. Die Unterschiede sind im Detail:

  • Modul: In Python sind Module einzelne Dateien, die Funktionen, Klassen und Variablen enthalten können. Diese Dateien haben die Erweiterung .py und helfen dabei, durch ihre Struktur Code besser zu organisieren, da einzelne Dateien die Lesbarkeit und gleichzeitig auch die Wartbarkeit verbessern.
  • Paket: Pakete dienen in Python ebenfalls der Organisation, sind aber in Verzeichnissen bzw. Ordnern strukturiert. Dadurch können Module im Code in einer hierarchischen Struktur organisiert werden. Damit ein Verzeichnis von Python als Paket behandelt wird, enthalten Pakete die Datei __init__.py.
Tipp

Im Bewerbungsgespräch werden teilweise nicht nur die Spezifika einer bestimmten Programmiersprache abgefragt. Manchmal geht es auch um die Basics oder allgemeine Fragestellungen, um eine größere Bandbreite abzufragen. In weiteren Artikeln finden Sie Informationen über:

Frage 5: Was versteht man unter „pickling“ und „unpickling“?

Wenn in Python von „pickling“ oder „unpickling“ die Rede ist, dann ist damit der Prozess des Serialisierens bzw. Deserialisierens von internen Objekten gemeint. Durch diese Prozesse ist es möglich, Objekte in eine binäre Datenrepräsentation zu überführen (pickling) oder die Objekte aus der binären Darstellung zurückzugewinnen (unpickling):

  • Pickling: Bei diesem Vorgang wird das Objekt in die binäre Darstellung umgewandelt. Dies ist beispielsweise dann wichtig, wenn Daten in Python dauerhaft gespeichert oder in ein Netzwerk übertragen werden sollen. Das Modul pickle wird für den Pickling-Prozess in Python verwendet. Es serialisiert das Objekt, indem es dieses in einen Byte-Stream umwandelt.
  • Unpickling: Im Gegensatz zu „pickling“ wird beim umgekehrten Prozess ein zuvor gepickeltes Objekt aus der binären Darstellung wiederhergestellt. Das Modul pickle wird auch für den Unpickling-Prozess verwendet. Es deserialisiert den Byte-Stream zurück in ein Python-Objekt.

Frage 6: Worin unterscheiden sich eine Funktion und eine „Lambda“-Funktion?

Grundsätzlich erfüllen die beiden Funktionstypen den gleichen Zweck. Lambda-Funktionen sind kürzer und werden häufig bei einfacheren Transformationen oder beispielsweise Filteraufgaben genutzt. Die Hauptunterschiede zwischen einer normalen Funktion und der Lambda-Variante liegen in der Syntax, ihrem Umfang und dem Anwendungsgebiet. Diese sehen im Detail wie folgt aus:

  • Syntax: Lambda-Funktionen sind in der Syntax, was Definition, Body und Rückgabewert betrifft, kompakter; so gibt es beim Rückgabewert beispielsweise kein explizites „return“, da der Ausdruckswert implizit zurückgegeben wird. Dadurch eignen sich Lambda-Funktionen insbesondere für kurze und prägnante Funktionsbschreibungen.
  • Umfang: Während normale Funktionen mehrere Anweisungen sowie eine komplexe Logik erhalten können, sind Lambda-Funktionen auf einen Ausdruck beschränkt. Ebenso können Lambda-Varianten nur lokale Variablen nutzen, die normalerweise auf den Ausdrucksbereich beschränkt sind. Normale Funktionen können dagegen gleichermaßen globale wie auch lokable Variablen verwenden.
  • Anwendungsgebiet: Normale Funktionen können überall im Code definiert werden. Lamdba-Funktionen werden oft dort verwendet, wo eine kurzlebige Funktion benötigt wird. Dies ist beispielsweise bei Funktionen wie sorted, filter oder map der Fall.

Frage 7: Welche Vererbungslogiken gibt es in Python und wie geht Python mit Mehrfachvererbung um?

In Python sind mehrere Vererbungslogiken möglich. Das bedeutet, dass in Python sowohl die einfache Vererbung als auch Mehrfachvererbung möglich sind und angewendet werden können. Dabei erbt eine Klasse in der einfachen Vererbung von einer einzigen übergeordneten Klasse. Die abgeleitete Klasse übernimmt in diesem Fall alle Attribute und Methoden der übergeordneten Klasse.

Im Falle einer Mehrfachvererbung erbt die Klasse von mehr als nur einer übergeordneten Klasse. In diesem Vererbungsfall kann die abgeleitete Klasse die Attribute und Methoden von allen übergeordneten Klassen übernehmen.

Bei Mehrfachvererbung wird in Python die C3-Linearisierungsmethode bzw. die sogenannte Method Resolution Order verwendet. Diese Methode bestimmt die Reihenfolge der Auflösung der Methoden in einer Mehrfachvererbungshierarchie. Auf diese Weise wird sichergestellt, dass die Attribute und Methoden in einer konsistenten und vorhersagbaren Reihenfolge durchsucht werden. Durch die Linearisierung sorgt Python gegen bekannte Vererbungsprobleme wie das Diamant-Problem vor.

Frage 8: Was versteht man in Python unter „Monkey Patching“?

Mit „Monkey Patching“ ist der Vorgang gemeint, bestehenden Code während der Laufzeit zu modifizieren, beispielsweise indem er erweitert wird und neue Funktionen oder Methoden hinzugefügt oder ersetzt werden. Der Begriff leitet sich aus der Idee heraus ab, dass ein Affe den Code innerhalb der Laufzeit patcht.

Durch Monkey Patching sind dynamische Änderungen im Code möglich, ohne den Quellcode der ursprünglichen Klasse oder Funktion zu ändern. Dies kann nützlich sein, um Fehler zu beheben, Funktionalitäten zu erweitern oder auch Teile von Bibliotheken oder Frameworks anzupassen. So können in Bezug auf Klassen auch Methoden überschrieben oder neue Methoden hinzugefügt werden.

Frage 9: Welche Unterschiede bestehen zwischen Django, Pyramid und Flask?

Bei Django, Pyramid und Flask handelt es sich um Python-Web-Frameworks, die sich insgesamt in ihren Ansätzen, der Komplexität und den bereitgestellten Funktionen unterscheiden. Die hauptsächlichen Unterschiede der drei Frameworks sind:

Django

Django ist ein High-Level-Web-Framework, das viele Zusatzfunktionen bietet. Bei diesem Framework sind viele Funktionen und Module bereits vorhanden. Beispielsweise enthält Django ein eigenes Object-Relational Mapping für die Datenbankinteraktion. Es bietet auch ein integriertes Admin-Interface, was die Verwaltung von Datenmodellen erleichtert.

Das URL-Design und die Struktur der Anwendung sind vordefiniert, was die Entwicklung erleichtert. Grundsätzlich legt Django viel Wert auf Konventionen. Das Framework bietet auch eine eingebaute Authentifizierung und Autorisierung und enthält darüber hinaus Funktionen wie Formulare sowie CSRF-Schutz. Dabei bietet sich das Framework eher für Fortgeschrittene an, da die Lernkurve durch den großen Funktionsumfang und die strikte Struktur steil sein kann.

Pyramid

Anders als das umfassende Django-Framework präsentiert sich Pyramid leicht und flexibel. Das Framework ermöglicht Entwicklerinnen und Entwicklern, bevorzugte Bibliotheken und Komponenten auszuwählen. Dabei ist Pyramid besonders stark auf Skalierbarkeit und Erweiterbarkeit ausgelegt. Das Framework unterstützt verschiedene Arten von Anwendungen: Kleine Projekte und große, komplexe Anwendungen profitieren von Pyramid gleichermaßen.

Im Gegensatz zu Django gibt Pyramid keine vorgeschriebene Anwendungsstruktur vor. Damit bestehen mehr Freiheiten bei der Organisation des Codes. Ebenso frei ist die Wahl der Template-Engine, da Pyramid standardmäßig keine Template-Engine verwendet.

Durch seine flexible Anwendung und die minimalen Annahmen ist die Lernkurve bei Pyramid deutlich flacher und das Framework damit besser für den Einstieg geeignet.

Flask

Das dritte Framework im Bunde ist ein sogenanntes Microframework. Es ist im Ursprung darauf spezialisiert, einfach und leichtgewichtig in der Anwendung zu sein. Um dies zu gewährleisten, bietet das Framework nur das Notwendigste, sodass mit Flask Bibliotheken nach Bedarf hinzuzufügt werden können.

Flask setzt auf eine einfache und klare API, die es in der Entwicklung ermöglicht, schnell loszulegen. Dazu basiert das Framework auf dem WSGI-Toolkit „Werkzeug“ und verwendet die Template-Engine Jinja2. Entwicklerinnen und Entwickler können zusätzlich andere Komponenten nach Bedarf integrieren.

Die Wahl zwischen den drei Frameworks hängt grundsätzlich von den Anforderungen des Projekts, und der damit einhergehenden, benötigten Flexibilität ab. Django bietet viele integrierte Funktionen und eine klare Struktur, Pyramid setzt auf Flexibilität und Skalierbarkeit und bei Flask stehen Einfachheit und Minimalismus im Vordergrund.

Frage 10: Wofür stehen „args“ und „kwargs“ in Python?

Die beiden Begriffe stehen für Positional Arguments, kurz „args“, und Keyword Arguments, kurz „kwargs“. Hinter beiden verbergen sich Konventionen, die häufig bei der Definition von Funktionen eingesetzt werden, sofern eine variable Anzahl an Argumenten akzeptiert werden soll. Damit erhalten Entwicklerinnen und Entwickler zusätzliche Flexibilität bei der Definition von Funktionen. Vor allem dann, wenn nicht zu Beginn bereits klar ist, wie viele oder welche Art von Argumenten am Ende übergeben werden soll.

Args bzw. Arguments werden dann genutzt, wenn eine variable Anzahl an Argumenten auf Positionsbasis in einer Funktion akzeptiert werden sollen. Damit kann eine nicht vordefinierte Anzahl von Argumenten übergeben werden, die in der Funktion wiederum als Tupel verfügbar sind.

Kwargs verhalten sich ähnlich: Sie werden verwendet, um eine variable Anzahl an Argumenten auf Schlüsselwortbasis innerhalb einer Funktion zu akzeptieren. Damit wird eine nicht vordefinierte Anzahl von Argumenten übergeben, die in der Funktion als Dictionary verfügbar sind.

Wenn eine Funktion sowohl variable Positional als auch Keyword Arguments enthalten soll, ist es in Python auch möglich, args und kwargs in derselben Funktion zu nutzen.