Direkt zum Inhalt
HeimDer blogPython

Die 23 besten Python-Interview-Fragen und Antworten für 2024

Wesentliche Python-Interviewfragen mit Beispielen für Arbeitssuchende, Studierende im letzten Studienjahr und Datenprofis.
Aktualisierte 10. Sept. 2024  · 23 Min. lesen

Python Interview Fragen

Python ist in der Tech-Branche nach wie vor eine der vielseitigsten und gefragtesten Programmiersprachen. Egal, ob du dich auf ein technisches Vorstellungsgespräch vorbereitest oder deine Programmierkenntnisse verbessern willst, Python zu beherrschen ist unerlässlich. In Vorstellungsgesprächen geht es oft darum, Herausforderungen zu lösen und komplexe Funktionalitäten in Python zu erklären.

Dieser Leitfaden enthält eine umfassende Liste der häufigsten und fortgeschrittensten Python-Interview-Fragen. Durch das Üben dieser Fragen erhalten Datenexperten, Entwickler und Softwareingenieure das nötige Rüstzeug, um in technischen Interviews zu glänzen und ihre Karriere voranzutreiben.

Erhalte eine Top Data Zertifizierung

Bringe deine Karriere mit branchenführenden Zertifizierungen voran.
Beschleunige Meine Karriere

Grundlegende Python-Interview-Fragen

Dies sind einige der Fragen, die dir bei einem Python-Einstiegsgespräch begegnen könnten. 

Listen und Tupel sind grundlegende Python-Datenstrukturen mit unterschiedlichen Eigenschaften und Anwendungsfällen.

Liste:

  • Veränderlich: Elemente können nach der Erstellung geändert werden.
  • Speicherverbrauch: Verbraucht mehr Speicherplatz.
  • Leistung: Langsamere Iteration im Vergleich zu Tupeln, aber besser für Einfüge- und Löschvorgänge.
  • Methoden: Bietet verschiedene integrierte Methoden zur Manipulation.

Beispiel:

a_list = ["Data", "Camp", "Tutorial"]
a_list.append("Session")
print(a_list)  # Output: ['Data', 'Camp', 'Tutorial', 'Session']

Tupel:

  • Unveränderlich: Elemente können nach der Erstellung nicht mehr geändert werden.
  • Speicherverbrauch: Verbraucht weniger Speicherplatz.
  • Leistung: Schnellere Iteration im Vergleich zu Listen, aber nicht so flexibel wie Listen.
  • Methoden: Begrenzte eingebaute Methoden.

Beispiel:

a_tuple = ("Data", "Camp", "Tutorial")
print(a_tuple)  # Output: ('Data', 'Camp', 'Tutorial')

Erfahre mehr in unserem Tutorial zu Python-Listen.

2. Was ist __init__() in Python?

Die Methode __init__() ist in der Terminologie der objektorientierten Programmierung (OOP) als Konstruktor bekannt. Sie wird verwendet, um den Zustand eines Objekts zu initialisieren, wenn es erstellt wird. Diese Methode wird automatisch aufgerufen, wenn eine neue Instanz einer Klasse instanziiert wird.

Zweck:

  • Weise den Objekteigenschaften Werte zu.
  • Führe alle Initialisierungsvorgänge durch.

Beispiel

Wir haben eine Klasse "book_shop" erstellt und den Konstruktor und die Funktion "book()" hinzugefügt. Der Konstruktor speichert den Namen des Buchtitels und die Funktion `book()` gibt den Namen des Buches aus.

Um unseren Code zu testen, haben wir das Objekt `b` mit "Sandman" initialisiert und die Funktion `book()` ausgeführt. 

class book_shop:

    # constructor
    def __init__(self, title):
        self.title = title

    # Sample method
    def book(self):
        print('The tile of the book is', self.title)


b = book_shop('Sandman')
b.book()
# The tile of the book is Sandman

3. Was ist der Unterschied zwischen einem veränderbaren Datentyp und einem unveränderbaren Datentyp?

Veränderbare Datentypen:

  • Definition: Veränderliche Datentypen sind solche, die nach ihrer Erstellung verändert werden können.
  • Beispiele: Liste, Wörterbuch, Set.
  • Merkmale: Elemente können hinzugefügt, entfernt oder geändert werden.
  • Anwendungsfall: Geeignet für Sammlungen von Gegenständen, die häufig aktualisiert werden müssen.

Beispiel:

# List Example
a_list = [1, 2, 3]
a_list.append(4)
print(a_list)  # Output: [1, 2, 3, 4]

# Dictionary Example
a_dict = {'a': 1, 'b': 2}
a_dict['c'] = 3
print(a_dict)  # Output: {'a': 1, 'b': 2, 'c': 3}

Unveränderliche Datentypen:

  • Definition: Unveränderliche Datentypen sind solche, die nach ihrer Erstellung nicht mehr verändert werden können.
  • Beispiele: Numerisch (int, float), String, Tupel.
  • Merkmale: Einmal gesetzte Elemente können nicht geändert werden; jede Operation, die ein unveränderliches Objekt zu ändern scheint, erzeugt ein neues Objekt.

Beispiel:

# Numeric Example
a_num = 10
a_num = 20  # Creates a new integer object
print(a_num)  # Output: 20

# String Example
a_str = "hello"
a_str = "world"  # Creates a new string object
print(a_str)  # Output: world

# Tuple Example
a_tuple = (1, 2, 3)
# a_tuple[0] = 4  # This will raise a TypeError
print(a_tuple)  # Output: (1, 2, 3)

4. Erkläre das Listen-, Wörterbuch- und Tupel-Verständnis anhand eines Beispiels.

Liste

Das Listenverständnis bietet eine Einzeiler-Syntax, um eine neue Liste auf der Grundlage der Werte einer bestehenden Liste zu erstellen. Du kannst eine "for-Schleife" verwenden, um dasselbe zu tun, aber dafür musst du mehrere Zeilen schreiben, und das kann manchmal sehr komplex werden. 

Das Listenverständnis erleichtert die Erstellung der Liste auf der Grundlage einer vorhandenen Iterable. 

my_list = [i for i in range(1, 10)]
my_list
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

Wörterbuch

Ähnlich wie bei einem Listenverständnis kannst du ein Wörterbuch auf der Grundlage einer bestehenden Tabelle mit einer einzigen Zeile Code erstellen. Du musst die Operation mit geschweiften Klammern "{}" einschließen.

my_dict = {i for i in range(1, 10)}
my_dict
# {1, 2, 3, 4, 5, 6, 7, 8, 9}

Tupel

Bei Tupeln ist es ein bisschen anders. Du kannst ein Tupel-Verständnis mit runden Klammern `()` erstellen, aber es wird ein Generator-Objekt zurückgeben, kein Tupel-Verständnis.

Du kannst die Schleife ausführen, um die Elemente zu extrahieren oder sie in eine Liste umzuwandeln.

my_tuple = (i for i in range(1, 10))
my_tuple
# <generator object <genexpr> at 0x7fb91b151430>

Mehr dazu erfährst du in unserem Tutorial zu Python Tuples

Interviewfragen für Fortgeschrittene in Python

Diese Interviewfragen sind für erfahrenere Python-Praktiker. 

5. Was ist Monkey Patching in Python?

Monkey Patching in Python ist eine dynamische Technik, die das Verhalten des Codes zur Laufzeit ändern kann. Kurz gesagt, du kannst eine Klasse oder ein Modul zur Laufzeit ändern.

Beispiel:

Lass uns das Affenpatching anhand eines Beispiels lernen. 

  1. Wir haben eine Klasse `Affe` mit einer `patch()` Funktion erstellt. Wir haben auch eine Funktion "monk_p" außerhalb der Klasse erstellt. 
  2. Wir ersetzen nun die Funktion `patch` durch die Funktion `monk_p`, indem wir `monkey.patch` der Funktion `monk_p` zuweisen.
  3. Am Ende werden wir die Änderung testen, indem wir das Objekt mit der Klasse "monkey" erstellen und die Funktion "patch()" ausführen. 

Statt der Anzeige "patch() wird aufgerufen" wurde "monk_p() wird aufgerufen" angezeigt. 

class monkey:
    def patch(self):
          print ("patch() is being called")

def monk_p(self):
    print ("monk_p() is being called")

# replacing address of "patch" with "monk_p"
monkey.patch = monk_p

obj = monkey()

obj.patch()
# monk_p() is being called

6. Wofür ist die Python-Anweisung "with" gedacht?

Die Anweisung `with` wird für die Behandlung von Ausnahmen verwendet, um den Code sauberer und einfacher zu machen. Sie wird im Allgemeinen für die Verwaltung allgemeiner Ressourcen wie das Erstellen, Bearbeiten und Speichern einer Datei verwendet. 

Beispiel:

Anstatt mehrere Zeilen mit open, try, finally und close zu schreiben, kannst du mit der Anweisung `with` eine Textdatei erstellen und schreiben. Es ist ganz einfach.

# using with statement
with open('myfile.txt', 'w') as file:
    file.write('DataCamp Black Friday Sale!!!')

7. Warum sollte man in Python else im try/except-Konstrukt verwenden?

`try:` und `except:` sind allgemein für die Behandlung von Ausnahmen in Python bekannt, aber wozu ist `else:` gut? `else:` wird ausgelöst, wenn keine Ausnahme ausgelöst wird. 

Beispiel:

Mit ein paar Beispielen wollen wir mehr über `else:` erfahren.

  1. Beim ersten Versuch haben wir 2 in den Zähler und "d" in den Nenner eingegeben. Das ist falsch, und `except:` wurde mit "Ungültige Eingabe!" ausgelöst. 
  2. Beim zweiten Versuch gaben wir 2 als Zähler und 1 als Nenner ein und erhielten das Ergebnis 2. Es wurde keine Ausnahme ausgelöst, so dass die Meldung "Division ist erfolgreich" gedruckt wurde. 
try:
    num1 = int(input('Enter Numerator: '))
    num2 = int(input('Enter Denominator: '))
    division = num1/num2
    print(f'Result is: {division}')
except:
    print('Invalid input!')
else:
    print('Division is successful.')


## Try 1 ##
# Enter Numerator: 2
# Enter Denominator: d
# Invalid input!

## Try 2 ##
# Enter Numerator: 2
# Enter Denominator: 1
# Result is: 2.0
# Division is successful.

Im Kurs Python Grundlagen erwirbst du die grundlegenden Fähigkeiten, die du als Python-Programmierer brauchst. 

8. Was sind Dekoratoren in Python? 

Decorators in Python sind ein Entwurfsmuster, mit dem du einem bestehenden Objekt neue Funktionen hinzufügen kannst, ohne seine Struktur zu verändern. Sie werden häufig verwendet, um das Verhalten von Funktionen oder Methoden zu erweitern.

Beispiel:

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()
# Output:
# Something is happening before the function is called.
# Hello!
# Something is happening after the function is called.

9. Was sind Kontextmanager in Python und wie werden sie implementiert?

Kontextmanager in Python werden verwendet, um Ressourcen zu verwalten und sicherzustellen, dass sie ordnungsgemäß erworben und freigegeben werden. Die häufigste Verwendung von Kontextmanagern ist die Anweisung with.

Beispiel:

class FileManager:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode
    
    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file
    
    def __exit__(self, exc_type, exc_value, traceback):
        self.file.close()

with FileManager('test.txt', 'w') as f:
    f.write('Hello, world!')

In diesem Beispiel ist die Klasse FileManager ein Kontextmanager, der sicherstellt, dass die Datei ordnungsgemäß geschlossen wird, nachdem sie in der Anweisung with verwendet wurde.

Python Data Science Interview Fragen

Für diejenigen, die sich mehr auf datenwissenschaftliche Anwendungen von Python konzentrieren, sind dies einige Fragen, auf die du stoßen könntest. 

10. Was sind die Vorteile von NumPy gegenüber normalen Python-Listen?

Speicher 

Numpy-Arrays verbrauchen weniger Speicher. 

Wenn du zum Beispiel eine Liste und ein Numpy-Array mit tausend Elementen erstellst. Die Liste wird 48K Bytes und das Numpy-Array 8K Bytes Speicherplatz benötigen.  

Geschwindigkeit

Numpy-Arrays brauchen weniger Zeit, um die Operationen auf Arrays auszuführen als Listen. 

Wenn wir zum Beispiel zwei Listen und zwei Numpy-Arrays mit 1 Million Elementen miteinander multiplizieren. Es dauerte 0,15 Sekunden für die Liste und 0,0059 Sekunden für das Array, um zu arbeiten. 

Vesititly 

Numpy-Arrays sind praktisch, denn sie bieten einfache Array-Vervielfachung, Addition und viele weitere integrierte Funktionen. Python-Listen hingegen sind nicht in der Lage, grundlegende Operationen auszuführen. 

11. Was ist der Unterschied zwischen Merge, Join und Concatenate?

Zusammenführen

Verschmelze zwei DataFrames mit dem Namen Serienobjekte unter Verwendung des eindeutigen Spaltenbezeichners. 

Dazu brauchst du zwei DataFrame, eine gemeinsame Spalte in beiden DataFrame und wie du sie zusammenführen willst. Du kannst zwei DataFrames links, rechts, außen, innen und über Kreuz verbinden. Standardmäßig ist es eine innere Verknüpfung. 

pd.merge(df1, df2, how='outer', on='Id')

Mitglied werden

Verbinde die DataFrames mit dem eindeutigen Index. Sie benötigt ein optionales "on"-Argument, das eine Spalte oder mehrere Spaltennamen sein kann. Standardmäßig führt die Join-Funktion einen Left Join durch. 

df1.join(df2)

Verketten

Concatenate verknüpft zwei oder mehrere DataFrames entlang einer bestimmten Achse (Zeilen oder Spalten). Sie benötigt kein "on"-Argument. 

pd.concat(df1,df2)
  • join(): Verbindet zwei DataFrames nach Index.
  • merge(): Verbindet zwei DataFrames nach der oder den von dir angegebenen Spalten.
  • concat(): Verbindet zwei oder mehr DataFrames vertikal oder horizontal.

12. Wie identifizierst du fehlende Werte und wie gehst du damit um?

Identifizierung fehlender Werte 

Wir können fehlende Werte im DataFrame identifizieren, indem wir die Funktion `isnull()` verwenden und dann `sum()` anwenden. Die Funktion "isnull()" gibt boolesche Werte zurück, und die Summe gibt die Anzahl der fehlenden Werte in jeder Spalte an. 

Im Beispiel haben wir ein Wörterbuch mit Listen erstellt und es in einen Pandas DataFrame umgewandelt. Danach haben wir isnull().sum() verwendet, um die Anzahl der fehlenden Werte in jeder Spalte zu ermitteln.  

import pandas as pd
import numpy as np

# dictionary of lists
dict = {'id':[1, 4, np.nan, 9],
        'Age': [30, 45, np.nan, np.nan],
        'Score':[np.nan, 140, 180, 198]}

# creating a DataFrame
df = pd.DataFrame(dict)

df.isnull().sum()
# id       1
# Age      2
# Score    1

Umgang mit fehlenden Werten

Es gibt verschiedene Möglichkeiten, mit fehlenden Werten umzugehen. 

  1. Verwirf die gesamte Zeile oder die Spalten, wenn sie aus fehlenden Werten besteht, mit `dropna()`. Diese Methode wird nicht empfohlen, da du dabei wichtige Informationen verlierst.
  2. Fülle die fehlenden Werte mit der Konstante, dem Durchschnitt, der Rückwärtsfüllung und der Vorwärtsfüllung mit der Funktion `fillna()` auf.
  3. Ersetze fehlende Werte durch eine konstante String-, Integer- oder Float-Zahl mit der Funktion `replace()`.
  4. Fülle die fehlenden Werte mit einer Interpolationsmethode auf.   

Hinweis: Achte darauf, dass du mit einem größeren Datensatz arbeitest, wenn du die Funktion `dropna()` verwendest. 

# drop missing values
df.dropna(axis = 0, how ='any')

#fillna
df.fillna(method ='bfill')

#replace null values with -999
df.replace(to_replace = np.nan, value = -999)

# Interpolate
df.interpolate(method ='linear', limit_direction ='forward')

Pandas interpolieren

Werde ein/e professionelle/r Datenwissenschaftler/in, indem du den Karrierepfad Data Scientist with Python einschlägst. Es umfasst 25 Kurse und sechs Projekte, mit denen du alle Grundlagen der Datenwissenschaft mit Hilfe der Python-Bibliotheken erlernen kannst. 

13. Welche Python-Bibliotheken hast du für die Visualisierung verwendet? 

Die Datenvisualisierung ist der wichtigste Teil der Datenanalyse. Du siehst deine Daten in Aktion und kannst so versteckte Muster erkennen.

Die beliebtesten Python-Bibliotheken zur Datenvisualisierung sind:

  1. Matplotlib
  2. Seaborn
  3. Plotly
  4. Bokeh

In Python verwenden wir in der Regel Matplotlib und seaborn, um alle Arten von Datenvisualisierungen darzustellen. Mit ein paar Zeilen Code kannst du damit Streudiagramme, Liniendiagramme, Boxdiagramme, Balkendiagramme und vieles mehr anzeigen. 

Für interaktive und komplexere Anwendungen verwenden wir Plotly. Du kannst damit mit wenigen Zeilen Code farbenfrohe interaktive Diagramme erstellen. Du kannst zoomen, Animationen anwenden und sogar Kontrollfunktionen hinzufügen. Plotly bietet mehr als 40 einzigartige Diagrammtypen, die wir sogar für die Erstellung einer Webanwendung oder eines Dashboards verwenden können. 

Bokeh wird für detaillierte Grafiken mit einem hohen Maß an Interaktivität für große Datensätze verwendet. 

Python Coding Interview Fragen

Wenn du ein Vorstellungsgespräch zum Thema Python-Codierung vor dir hast, kannst du den Interviewer mit Fragen wie diesen beeindrucken. 

14. Wie kannst du in Python ein Leerzeichen durch ein bestimmtes Zeichen ersetzen?

Es handelt sich um eine einfache String-Manipulationsaufgabe. Du musst das Leerzeichen durch ein bestimmtes Zeichen ersetzen.  

Beispiel 1: Ein Benutzer hat die Zeichenfolge "l vey u" und das Zeichen "o" eingegeben, und die Ausgabe wird "loveyou" sein.

Beispiel 2: Ein Benutzer hat die Zeichenfolge "D t C mpBl ckFrid yS le" und das Zeichen "a" eingegeben, und die Ausgabe wird "DataCampBlackFridaySale" sein.

In der Funktion "str_replace()" werden wir jeden Buchstaben der Zeichenkette in einer Schleife überprüfen, ob er ein Leerzeichen enthält oder nicht. Wenn es aus einem Leerzeichen besteht, ersetzen wir es durch das vom Benutzer angegebene Zeichen. Zum Schluss geben wir den geänderten String zurück. 

def str_replace(text,ch):
    result = ''
    for i in text: 
            if i == ' ': 
                i = ch  
            result += i 
    return result

text = "D t C mpBl ckFrid yS le"
ch = "a"

str_replace(text,ch)
# 'DataCampBlackFridaySale'

15. Gib eine positive ganze Zahl num an und schreibe eine Funktion, die True liefert, wenn num ein perfektes Quadrat ist, sonst False.

Dafür gibt es eine relativ einfache Lösung. Du kannst überprüfen, ob die Zahl eine perfekte Quadratwurzel hat, indem du:

  1. Finde die Quadratwurzel der Zahl und wandle sie in eine ganze Zahl um.
  2. Wende das Quadrat auf die Quadratwurzel an und prüfe, ob es eine perfekte Quadratwurzel ist.
  3. Gibt das Ergebnis als booleschen Wert zurück. 

Test 1  

Wir haben der Funktion `valid_square()` die Nummer 10 gegeben. 

  1. Wenn wir die Quadratwurzel aus der Zahl ziehen, erhalten wir 3.1622776601683795.
  2. Wenn wir sie in eine ganze Zahl umwandeln, erhalten wir 3.
  3. Dann nimm das Quadrat von 3 und erhalte 9.
  4. 9 ist nicht gleich der Zahl, also gibt die Funktion False zurück. 

a

Test 2

Wir haben der Funktion `valid_square()` die Nummer 36 gegeben. 

  1. Wenn wir die Quadratwurzel aus der Zahl ziehen, erhalten wir 6.
  2. Wenn wir sie in eine ganze Zahl umwandeln, erhalten wir 6.
  3. Dann nimm das Quadrat von 6 und erhalte 36.
  4. 36 ist gleich der Zahl, also wird die Funktion True zurückgeben. 
def valid_square(num):
    square = int(num**0.5)
    check = square**2==num
    return check

valid_square(10)
# False
valid_square(36)
# True

16. Gib bei einer ganzen Zahl n die Anzahl der nachgestellten Nullen in n faktoriell n!

Um diese Aufgabe zu bestehen, musst du zuerst die n-Faktorielle Zahl (n!) berechnen und dann die Anzahl der Trainingsnullen ermitteln. 

Faktorielle Bestimmung 

Im ersten Schritt verwenden wir eine while-Schleife, um über die n-Faktorielle zu iterieren und anzuhalten, wenn n gleich 1 ist. 

Berechnung der nachgestellten Nullen

Im zweiten Schritt berechnen wir die hintere Null, nicht die Gesamtzahl der Nullen. Das ist ein großer Unterschied. 

7! = 5040

Die sieben Fakultäten haben insgesamt zwei Nullen und nur eine nachgestellte Null, also sollte unsere Lösung 1 ergeben. 

  1. Wandle die Faktorzahl in eine Zeichenkette um.
  2. Lies es noch einmal und bewerbe dich für eine Schleife.
  3. Wenn die Zahl 0 ist, addiere +1 zum Ergebnis, andernfalls breche die Schleife ab.
  4. Gibt das Ergebnis zurück.

Die Lösung ist elegant, erfordert aber viel Liebe zum Detail. 

def factorial_trailing_zeros(n):

    fact = n
    while n > 1:
        fact *= n - 1
        n -= 1

    result = 0

    for i in str(fact)[::-1]:
        if i == "0":
            result += 1
        else:
            break

    return result


factorial_trailing_zeros(10)
# 2
factorial_trailing_zeros(18)
# 3

Nimm an diesem Kurs teil, um dich auf deine nächsten Programmiergespräche in Python vorzubereiten.

FAANG Python Interview Frage

Im Folgenden haben wir einige der Fragen herausgesucht, die du von den begehrtesten Stellen in der Branche erwarten kannst, z.B. bei Meta, Amazon, Google und Co. 

Facebook/Meta Python Interviewfragen

Die genauen Fragen, auf die du bei Meta stoßen wirst, hängen weitgehend von der jeweiligen Rolle ab. Du kannst jedoch einige der folgenden Punkte erwarten: 

17. String-Segmentierung

Du bekommst eine große Zeichenkette und ein Wörterbuch mit den Wörtern. Du musst herausfinden, ob die Eingabezeichenfolge mithilfe des Wörterbuchs in Wörter zerlegt werden kann oder nicht.  

String-Segmentierung

Bild vom Autor

Die Lösung ist ziemlich einfach. Du musst eine große Zeichenkette an jedem Punkt segmentieren und prüfen, ob die Zeichenkette in die Wörter des Wörterbuchs segmentiert werden kann.

  1. Führe die Schleife mit der Länge der großen Schnur aus.
  2. Wir werden zwei Teilstrings erstellen. 
  3. Die erste Teilzeichenkette prüft jeden Punkt in der großen Zeichenkette von s[0:i]
  4. Wenn die erste Teilzeichenkette nicht im Wörterbuch enthalten ist, wird False zurückgegeben.
  5. Wenn die erste Teilzeichenkette im Wörterbuch steht, wird die zweite Teilzeichenkette mit s[i:0] erstellt.
  6. Wenn die zweite Teilzeichenkette im Wörterbuch enthalten ist oder die zweite Teilzeichenkette die Länge Null hat, wird True zurückgegeben. Rufe rekursiv `can_segment_str()` mit der zweiten Teilzeichenkette auf und gib True zurück, wenn sie segmentiert werden kann. 
def can_segment_str(s, dictionary):
    for i in range(1, len(s) + 1):
        first_str = s[0:i]
        if first_str in dictionary:
            second_str = s[i:]
            if (
                not second_str
                or second_str in dictionary
                or can_segment_str(second_str, dictionary)
            ):
                return True
    return False


s = "datacamp"
dictionary = ["data", "camp", "cam", "lack"]
can_segment_string(s, dictionary)
# True

18. Duplikate aus einem sortierten Array entfernen

Entferne bei einem ganzzahligen, aufsteigend sortierten Array die doppelten Zahlen so, dass jedes einzelne Element nur einmal vorkommt. Achte darauf, dass du die endgültige Reihenfolge des Arrays beibehältst.

Da es in Python nicht möglich ist, die Länge des Arrays zu ändern, werden wir das Ergebnis in den ersten Teil des Arrays setzen. Nachdem wir Duplikate entfernt haben, haben wir k Elemente und die ersten k Elemente im Array sollten die Ergebnisse enthalten. 

Duplikate aus einem sortierten Array entfernen

Bild von LeetCode

Beispiel 1: Das Eingabefeld ist [1,1,2,2], die Funktion sollte 2 zurückgeben. 

Beispiel 2: Das Eingabefeld ist [1,1,2,3,3], die Funktion sollte 3 zurückgeben.

Lösung:

  1. Führe die Schleife für den Bereich von 1 bis zur Größe des Arrays aus.
  2. Prüfe, ob die vorherige Nummer eindeutig ist oder nicht. Wir vergleichen frühere Elemente mit dem aktuellen.  
  3. Wenn sie eindeutig ist, aktualisiere das Array mit insertIndex, der am Anfang 1 ist, und füge +1 zum insertIndex hinzu. 
  4. Gib insertIndex zurück, da es das k ist. 

Diese Frage ist relativ einfach zu beantworten, wenn du weißt, wie. Wenn du dir mehr Zeit nimmst, um die Aussage zu verstehen, kannst du leicht eine Lösung finden. 

def removeDuplicates(array):
    size = len(array)
    insertIndex = 1
    for i in range(1, size):
        if array[i - 1] != array[i]:
            # Updating insertIndex in our main array
            array[insertIndex] = array[i]
            # Incrementing insertIndex count by 1
            insertIndex = insertIndex + 1
    return insertIndex

array_1 = [1,2,2,3,3,4]
removeDuplicates(array_1)
# 4


array_2 = [1,1,3,4,5,6,6]
removeDuplicates(array_2)
# 5

19. Finde den maximalen Einzelverkaufsgewinn

Du bekommst eine Liste mit Aktienkursen und musst den Kauf- und Verkaufspreis angeben, um den höchsten Gewinn zu erzielen. 

Hinweis: Wir müssen den maximalen Gewinn aus einem einzigen Kauf/Verkauf erzielen, und wenn wir keinen Gewinn erzielen können, müssen wir unsere Verluste reduzieren. 

Beispiel 1: stock_price = [8, 4, 12, 9, 20, 1], buy = 4 und sell = 20. Maximierung des Gewinns. 

Beispiel 2: stock_price = [8, 6, 5, 4, 3, 2, 1], buy = 6 und sell = 5. Den Verlust minimieren.

Lösung:

  1. Wir berechnen den globalen Gewinn, indem wir den globalen Verkauf (das erste Element in der Liste) vom aktuellen Kauf (das zweite Element in der Liste) abziehen. 
  2. Führe die Schleife für den Bereich von 1 bis zur Länge der Liste aus. 
  3. Berechne innerhalb der Schleife den aktuellen Gewinn anhand der Listenelemente und des aktuellen Kaufwerts. 
  4. Wenn der aktuelle Gewinn größer ist als der globale Gewinn, ändere den globalen Gewinn mit dem aktuellen Gewinn und den globalen Verkauf in das i-Element der Liste.
  5. Wenn der aktuelle Kauf größer ist als das aktuelle Element der Liste, tausche den aktuellen Kauf mit dem aktuellen Element der Liste. 
  6. Am Ende werden wir den globalen Kauf- und Verkaufswert zurückgeben. Um den globalen Kaufwert zu erhalten, ziehen wir den globalen Verkauf vom globalen Gewinn ab.

Die Frage ist ein bisschen knifflig und du kannst dir deinen eigenen Algorithmus ausdenken, um die Probleme zu lösen. 

def buy_sell_stock_prices(stock_prices):
    current_buy = stock_prices[0]
    global_sell = stock_prices[1]
    global_profit = global_sell - current_buy

    for i in range(1, len(stock_prices)):
        current_profit = stock_prices[i] - current_buy

        if current_profit > global_profit:
            global_profit = current_profit
            global_sell = stock_prices[i]

        if current_buy > stock_prices[i]:
            current_buy = stock_prices[i]

    return global_sell - global_profit, global_sell

stock_prices_1 = [10,9,16,17,19,23]
buy_sell_stock_prices(stock_prices_1)
# (9, 23)


stock_prices_2 = [8, 6, 5, 4, 3, 2, 1]
buy_sell_stock_prices(stock_prices_2)
# (6, 5)

Amazon Python Interview Fragen

Die Fragen im Amazon Python-Interview können sehr unterschiedlich sein, aber sie können Folgendes beinhalten: 

20. Finde die fehlende Zahl im Array

Du hast die Liste der positiven ganzen Zahlen von 1 bis n erhalten. Alle Zahlen von 1 bis n sind vorhanden, außer x, und du musst x finden. 

Beispiel:

4

5

3

2

8

1

6

  • n = 8 
  • fehlende Zahl = 7

Diese Frage ist ein einfaches mathematisches Problem.

  1. Finde die Summe aller Elemente in der Liste.
  2. Mit der Formel für die arithmetische Reihensumme finden wir die erwartete Summe der ersten n Zahlen. 
  3. Gib die Differenz zwischen der erwarteten Summe und der Summe der Elemente zurück.  
def find_missing(input_list):

  sum_of_elements = sum(input_list)
 
  # There is exactly 1 number missing
  n = len(input_list) + 1
  actual_sum = (n * ( n + 1 ) ) / 2
 
  return int(actual_sum - sum_of_elements)
list_1 = [1,5,6,3,4]


find_missing(list_1)
# 2

21. Pythagoreisches Tripel in einem Array

Schreibe eine Funktion, die True zurückgibt, wenn es ein pythagoreisches Triplett gibt, das a2+ b2 = c2 erfüllt.

Beispiel:

Input

Ausgabe

[3, 1, 4, 6, 5] 

Wahr 

[10, 4, 6, 12, 5] 

Falsch 

Lösung:

  1. Quadriere alle Elemente im Array.
  2. Sortiere das Array in aufsteigender Reihenfolge.
  3. Führe zwei Schleifen durch. Die äußere Schleife beginnt mit dem letzten Index des Arrays bis 1 und die innere Schleife beginnt mit (outer_loop_index -1) bis zum Start.
  4. Erstelle set(), um die Elemente zwischen dem äußeren Schleifenindex und dem inneren Schleifenindex zu speichern.
  5. Überprüfe, ob eine Zahl in der Menge vorhanden ist, die gleich ist wie (array[outerLoopIndex] - array[innerLoopIndex]). Wenn ja, gibst du True zurück, sonst False. 
def checkTriplet(array):
    n = len(array)
    for i in range(n):
        array[i] = array[i]**2

    array.sort()

    for i in range(n - 1, 1, -1):
        s = set()
        for j in range(i - 1, -1, -1):
            if (array[i] - array[j]) in s:
                return True
            s.add(array[j])
    return False


arr = [3, 2, 4, 6, 5]
checkTriplet(arr)
# True

22. Auf wie viele Arten kannst du mit Münzen und einem Gesamtbetrag Wechselgeld herstellen?

Wir müssen eine Funktion erstellen, die eine Liste von Münzwerten und Gesamtbeträgen annimmt und die Anzahl der Möglichkeiten zurückgibt, wie wir das Geld wechseln können. 

In diesem Beispiel haben wir die Münzwerte [1, 2, 5] und den Gesamtbetrag von 5 angegeben. Im Gegenzug haben wir fünf Möglichkeiten, wie wir den Wandel schaffen können. 

Wechselgeld mit Münzen herstellen

Bild vom Autor

Lösung:

  1. Wir erstellen eine Liste mit der Größe amount + 1. Es werden zusätzliche Räume hinzugefügt, um die Lösung für einen Nullbetrag zu speichern.
  2. Wir werden eine Lösungsliste mit 1.
  3. Wir werden zwei Schleifen laufen lassen. Die äußere Schleife gibt die Anzahl der Stückelungen zurück, und die innere Schleife läuft vom Bereich des äußeren Schleifenindex bis zum Betrag +1.
  4. Die Ergebnisse der verschiedenen Nennungen werden in dem Array solution gespeichert. solution[i] = solution[i] + solution[i - den]
  5. Der Vorgang wird für alle Elemente der Bezeichnungsliste wiederholt und am letzten Element der Lösungsliste haben wir unsere Nummer.
def solve_coin_change(denominations, amount):
    solution = [0] * (amount + 1)
    solution[0] = 1
    for den in denominations:
        for i in range(den, amount + 1):
            solution[i] += solution[i - den]

    return solution[len(solution) - 1]

denominations = [1,2,5]
amount = 5

solve_coin_change(denominations,amount)
# 4

Google Python Interview Fragen

Wie bei den anderen erwähnten Unternehmen hängen die Fragen im Google Python-Interview von der Funktion und dem Grad der Erfahrung ab. Einige häufige Fragen sind jedoch folgende:

23. Definiere eine Lambda-Funktion, einen Iterator und einen Generator in Python.

Die Lambda-Funktion ist auch als anonyme Funktion bekannt. Du kannst eine beliebige Anzahl von Parametern hinzufügen, aber mit nur einer Anweisung. 

Ein Iterator ist ein Objekt, das wir verwenden können, um über iterierbare Objekte wie Listen, Wörterbücher, Tupel und Mengen zu iterieren.

Der Generator ist eine Funktion, die einer normalen Funktion ähnelt, aber er erzeugt einen Wert mit dem Schlüsselwort yield statt return. Wenn der Funktionskörper yield enthält, wird er automatisch zum Generator.  

Lies mehr über Python Iteratoren und Generatoren in unserem vollständigen Tutorial. 

24. Finde für ein Array arr[] das Maximum j - i, so dass arr[j] > arr[i]

Diese Frage ist ziemlich einfach, aber sie erfordert besondere Aufmerksamkeit für Details. Wir haben eine Reihe von positiven ganzen Zahlen. Wir müssen die maximale Differenz zwischen j-i finden, bei der array[j] > array[i] ist.

Beispiele:

  1. Eingang: [20, 70, 40, 50, 12, 38, 98], Ausgang: 6  (j = 6, i = 0)
  2. Eingabe: [10, 3, 2, 4, 5, 6, 7, 8, 18, 0], Ausgabe: 8 ( j = 8, i = 0)

Lösung

  1. Berechne die Länge des Arrays und beginne die maximale Differenz mit -1.
  2. Führe zwei Schleifen durch. Die äußere Schleife wählt Elemente von links aus und die innere Schleife vergleicht die ausgewählten Elemente mit Elementen, die auf der rechten Seite beginnen. 
  3. Halte die innere Schleife an, wenn das Element größer ist als das ausgewählte Element und aktualisiere die maximale Differenz mit j - I. 
def max_index_diff(array):
    n = len(array)
    max_diff = -1
    for i in range(0, n):
        j = n - 1
        while(j > i):
            if array[j] > array[i] and max_diff < (j - i):
                max_diff = j - i
            j -= 1

    return max_diff

array_1 = [20,70,40,50,12,38,98]

max_index_diff(array_1)
# 6

25. Wie würdest du die ternären Operatoren in Python verwenden?

Ternäre Operatoren werden auch als bedingte Ausdrücke bezeichnet. Sie sind Operatoren, die Ausdrücke basierend auf den Bedingungen Wahr und Falsch auswerten.

Du kannst bedingte Ausdrücke in einer einzigen Zeile schreiben, anstatt mehrere Zeilen mit if-else-Anweisungen zu verwenden. Sie ermöglicht es dir, sauberen und kompakten Code zu schreiben. 

Wir können zum Beispiel verschachtelte if-else-Anweisungen in eine Zeile umwandeln, wie unten gezeigt. 

If-else-Anweisung

score = 75

if score < 70:
    if score < 50:
        print('Fail')
    else:
        print('Merit')
else:
    print('Distinction')
# Distinction

Verschachtelter ternärer Operator

print('Fail' if score < 50 else 'Merit' if score < 70 else 'Distinction')
# Distinction

Dein Team mit Python weiterbilden

Während die Vorbereitung auf Python-Interviews für Arbeitssuchende und Personalverantwortliche unerlässlich ist, ist es für Unternehmen genauso wichtig, in kontinuierliche Python-Schulungen für ihre Teams zu investieren. In einer Zeit, in der Automatisierung, Datenanalyse und Softwareentwicklung von zentraler Bedeutung sind, kann es für den Erfolg deines Unternehmens entscheidend sein, dass deine Mitarbeiter/innen über gute Pythonkenntnisse verfügen.

Wenn du ein Teamleiter oder Unternehmer bist und sicherstellen willst, dass dein gesamtes Team Python beherrscht, bietet DataCamp for Business maßgeschneiderte Trainingsprogramme an, die deinen Mitarbeitern helfen, Python zu beherrschen - von den Grundlagen bis hin zu fortgeschrittenen Konzepten. Wir können dir helfen:

  • Gezielte Lernwege: Anpassbar an das aktuelle Qualifikationsniveau deines Teams und die spezifischen Anforderungen deines Unternehmens.
  • Praktische Übungen: Praxisnahe Projekte und Programmierübungen, die das Gelernte vertiefen und die Merkfähigkeit verbessern.
  • Fortschrittskontrolle: Werkzeuge, um die Fortschritte deines Teams zu überwachen und zu bewerten und sicherzustellen, dass sie ihre Lernziele erreichen.

Die Investition in Python-Weiterbildung durch Plattformen wie DataCamp verbessert nicht nur die Fähigkeiten deines Teams, sondern verschafft deinem Unternehmen auch einen strategischen Vorteil, der es dir ermöglicht, innovativ zu sein, wettbewerbsfähig zu bleiben und wirkungsvolle Ergebnisse zu erzielen. Nimm Kontakt mit unserem Team auf und fordere noch heute eine Demo an.

Steigere die Python-Kenntnisse deines Teams

Trainiere dein Team in Python mit DataCamp for Business. Umfassende Schulungen, praktische Projekte und detaillierte Leistungskennzahlen für dein Unternehmen.

Fordere Noch Heute Eine Demo An!
homepage-hero.png

Schlussgedanken

Die Beherrschung von Python ist entscheidend für alle, die in technischen Vorstellungsgesprächen glänzen wollen, egal ob sie angehende Datenexperten, Entwickler oder Softwareingenieure sind. In diesem Leitfaden findest du einen Überblick über gängige Python-Interview-Fragen, die von grundlegenden bis zu fortgeschrittenen Fragen reichen, sowie Coding-Herausforderungen und spezifische Fragen von Top-Tech-Unternehmen.

Wenn du diese Fragen übst und ihre Lösungen verstehst, kannst du deine Problemlösungskompetenz und dein technisches Wissen deutlich verbessern und bist so gut auf die technischen und kodierenden Phasen deiner Vorstellungsgespräche vorbereitet.

Wenn du die besten Python-Zertifizierungen anstrebst und dich in Kursen und Projekten kontinuierlich weiterbildest, kannst du dein Fachwissen und deine Karriereaussichten in der Tech-Branche weiter verbessern. Wenn du deine Kenntnisse auffrischen möchtest, solltest du unseren Karrierepfad zum Associate Data Scientist in Python absolvieren. 

Python Interview FAQs

Wie bereite ich mich auf ein Python-Interview vor?

Du musst die Python-Syntax, Funktionen, Klassen, Datentypen, Algorithmen, Datenstrukturen und die Behandlung von Ausnahmen überarbeiten. Außerdem musst du technische Anleitungen lesen, Beispielprojekte, Spickzettel und Übungsfragen durchgehen und Programmieraufgaben lösen, um das Vorstellungsgespräch zu bestehen.

Du musst dich auf allgemeine Python-Fragen zur nativen Funktionalität, auf berufsspezifische Fragen (Data Engineer, Data Scientist, Backend Developer) und auf zeitbasierte Fragen zum Code vorbereiten. Du kannst üben Machine Learning Python Fragen und Statistik-Python-Interview-Fragen mit DataCamp.

Wie hebst du dich in einem Interview mit einem Python-Programmierer hervor?

Du musst die Fähigkeit haben, sauberen, produktionsreifen Code zu schreiben, die berufsspezifischen Python-Bibliotheken, -Tools und -Algorithmen zu verstehen und einzigartige Lösungen für komplexe Probleme zu finden. Das könnt ihr alle tun, indem ihr Coding Challenges übt oder an einem Open-Source-Projekt arbeitet. 

Du kannst dich auch von der Masse abheben, indem du ein Portfolio von Python-basierten Projekten auf GitHub und persönlichen Websites erstellst.

Was ist Lambda in Python?

Eine Lambda-Funktion ist auch als anonyme Funktion bekannt, eine Python-Funktion ohne Namen. Sie kann eine beliebige Anzahl von Argumenten annehmen, wertet aber nur einen Ausdruck aus und gibt ihn zurück.

Syntax:

lambda arguments : expression

Beispiel:

lambda_add = lambda a : a + 10
print(lambda_add (7))
# 17

Was sind die fünf wichtigsten Einsatzgebiete von Python?

  1. Entwicklung von Websites und Software
  2. Skripting und Hilfssoftware
  3. Desktop-Anwendungen
  4. Datenanalyse
  5. Maschinelles Lernen

Ist eine Karte schneller als eine for-Schleife?

"map" ist schneller als "for loop", wenn du die Funktion auf jedes Element einer Iterable anwendest. 

Themen

Python Interview Kurse

Course

Practicing Machine Learning Interview Questions in Python

4 hr
9.7K
Sharpen your knowledge and prepare for your next interview by practicing Python machine learning interview questions.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

See MoreSee More