Förbered dig inför Python-intervjun
Står du inför en Python-intervju? Eller kanske du bara är nyfiken på att testa dina kunskaper? Inga problem. Vi går igenom olika typer av frågor och svar som kan dyka upp.
Den här artikeln hjälper dig att förstå vilka typer av frågor du kan ställas inför på en intervju, och den ger dig även möjlighet att utvärdera dina egna Python-kunskaper. Det är bäst att du försöker besvara frågorna själv innan du tittar på svaren, för att få en rättvis bild av dina färdigheter. Låt oss börja med frågorna!
Frågorna är indelade i olika kategorier baserat på ämne. Varje avsnitt innehåller frågor tillsammans med genomtänkta svar. Du kan formulera om svaren med dina egna ord, så länge innebörden är densamma. På så sätt kommer det inte att låta som att du läser innantill.
Python som språk
#1. Vad är Python?
Python är ett interpreterat, högnivå, allmänt programmeringsspråk. Tack vare tredjepartsbibliotek och ramverk kan vi bygga nästan vilken typ av applikation som helst med Python. Det är ett av de mest populära språken inom avancerad teknik som AI och datavetenskap.
#2. Vad är den främsta skillnaden mellan en tolk och en kompilator?
En tolk översätter koden rad för rad till maskinkod, medan en kompilator översätter all kod på en gång till maskinkod.
#3. Är Python ett statiskt eller dynamiskt typat språk?
Python är ett dynamiskt typat språk.
#4. Vad menas med ett dynamiskt typat språk?
Dynamiskt typade språk kontrollerar variabeltyper vid körning. Exempel på dynamiskt typade språk är Python, JavaScript och Ruby.
Bonus: Statiskt typade språk kontrollerar variabeltyper under kompilering. Exempel på statiskt typade språk är C++, C och Java.
#5. Ge exempel på några tillämpningar av Python.
Python har en enkel och lättläst syntax som liknar engelska. Det har även ett stort utvecklarsamfund, vilket innebär att det finns många tredjepartspaket för olika typer av applikationsutveckling. Vi kan bygga webbapplikationer, GUI-applikationer och CLI-applikationer, med mera.
En av de populäraste tillämpningarna av Python är automatisering. Man kan enkelt skapa skript för att automatisera uppgifter som diskrensning, e-posthantering, och insamling av produktprisinformation.
Python är även ett av de mest använda språken inom datavetenskap.
#6. Vilka applikationer har du byggt med Python?
Jag har skrivit ett flertal automatiseringsskript för att ta bort repetitiva och tråkiga uppgifter, samt skript för att hämta produktpriser och tillgänglighetsinformation.
Jag har även arbetat med ramverk som Django och Flask för att bygga webbapplikationer. Jag har konstruerat några webbapplikationer med både Django och Flask.
Obs: Ovanstående svar är ett exempel. Dina svar kan se helt annorlunda ut. Försök att förklara olika områden där du har använt Python. Visa upp dina applikationer om det är möjligt.
Datatyper
#7. Vilka är de inbyggda datatyperna i Python?
Det finns flera inbyggda datatyper i Python, till exempel int, float, complex, bool, list, tuple, set, dict och str.
Obs: Du behöver inte nämna alla datatyper i Python. Några av de vanligaste är tillräckligt. Intervjuaren kan komma att ställa följdfrågor baserat på dina svar.
#8. Vad är skillnaden mellan en lista och en tupel?
Både listor och tupler används för att lagra samlingar av objekt. Den största skillnaden är att ”listan är ett muterbart objekt medan tuplen är ett icke-muterbart objekt”.
#9. Vad är muterbara och icke-muterbara datatyper?
Muterbara datatyper kan ändras efter att de har skapats. Exempel på muterbara objekt i Python är list, set och dict.
Icke-muterbara datatyper kan inte ändras efter att de har skapats. Exempel på icke-muterbara objekt i Python är str och tuple.
#10. Beskriv några metoder för listor.
1. append – Denna metod lägger till ett element i listan, i slutet av listan.
>>> a = [1, 2] >>> a.append(3) >>> a [1, 2, 3]
2. pop – Denna metod tar bort ett element från listan. Utan argument tas det sista elementet bort. Med ett indexargument tas elementet på det angivna indexet bort.
>>> a = [1, 2, 3, 4, 5] >>> a.pop() 5 >>> a [1, 2, 3, 4] >>> a.pop(1) 2 >>> a [1, 3, 4]
3. remove – Denna metod tar bort ett element från listan. Vi anger elementet som argument. Den tar bort den första förekomsten av elementet.
>>> a = [1, 2, 2, 3, 4] >>> a.remove(1) >>> a [2, 2, 3, 4] >>> a.remove(2) >>> a [2, 3, 4]
4. sort – Denna metod sorterar listan i stigande eller fallande ordning.
>>> a = [3, 2, 4, 1] >>> a.sort() >>> a [1, 2, 3, 4] >>> a.sort(reverse=True) >>> a [4, 3, 2, 1]
5. reverse – Denna metod vänder listelementen.
>>> a = [3, 2, 4, 1] >>> a.reverse() >>> a [1, 4, 2, 3]
Obs: Det finns fler metoder som clear, insert, count, etc. Du behöver inte beskriva alla metoder, utan bara två eller tre som du använder ofta.
#11. Beskriv några metoder för strängar.
1. split – Denna metod delar upp strängen vid angivna punkter och returnerar en lista. Som standard delas strängen upp vid mellanslag. Vi kan ange en avgränsare som ett argument.
>>> a = "Detta är en sträng" >>> a.split() ['Detta', 'är', 'en', 'sträng'] >>> a = "1, 2, 3, 4, 5, 6" >>> a.split(", ") ['1', '2', '3', '4', '5', '6']
2. join – Denna metod kombinerar strängobjekt från en lista. Den kombinerar strängarna med den avgränsare vi anger.
>>> a = ['Detta', 'är', 'en', 'sträng'] >>> ' '.join(a) 'Detta är en sträng' >>> ', '.join(a) 'Detta, är, en, sträng'
Obs: Några andra strängmetoder är: capitalize, isalnum, isalpha, isdigit, lower, upper, center, etc.
#12. Vad är negativ indexering i listor?
Index används för att nå element i listor. Normal indexering börjar från 0.
Negativ indexering används också för att nå element i listor, men från slutet av listan. Den negativa indexeringen börjar från -1 och ökar sedan mot -2, -3, -4 osv. upp till listans längd.
>>> a = [1, 2, 3, 4, 5] >>> a[-1] 5 >>> a[-3] 3 >>> a[-5] 1
#13. Beskriv några metoder för dicts.
1. items – Denna metod returnerar nyckel:värde-par från en ordbok som en lista av tupler.
>>> a = {1: 'a', 2: 'b', 3: 'c'} >>> a.items() dict_items([(1, 'a'), (2, 'b'), (3, 'c')])
2. pop – Denna metod tar bort ett nyckel:värde-par från ordboken. Den accepterar nyckeln som ett argument och tar bort det.
>>> a = {1: 2, 2: 3} >>> a.pop(2) 3 >>> a {1: 2}
Obs: Några andra dict-metoder är: get, keys, values, clear, etc.
#14. Vad är slicing i Python?
Slicing används för att nå delar av en sekvensdatatyper. Den returnerar data från sekvensdatatypen baserat på de argument vi ger. Den returnerar samma datatyp som källdatatypen.
Slicing accepterar tre argument: startindex, slutindex och stegstorlek. Syntaxen för slicing är variabel[start:end:step]. Argumenten är valfria. Du kan ange ett tomt kolon (:) som returnerar all data.
>>> 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. Vilka datatyper tillåter slicing?
Slicing kan användas på datatyperna list, tuple och str.
#16. Vad är uppackningsoperatorer i Python? Hur använder man dem?
Operatorerna * och ** är uppackningsoperatorer i Python.
* uppackningsoperatorn används för att tilldela flera värden till olika variabler samtidigt från sekvensdatatyper.
>>> items = [1, 2, 3] >>> a, b, c = items >>> a 1 >>> b 2 >>> c 3 >>> a, *b = items >>> a 1 >>> b [2, 3]
** uppackningsoperatorn används med dict-datatyper. Uppackning i ordböcker fungerar inte på samma sätt som för sekvensdatatyper.
Uppackning i ordböcker används oftast för att kopiera nyckel:värde-objekt från en ordbok till en annan.
>>> 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}
Obs: Du kan läsa mer om dessa operatorer i den här artikeln.
Villkor och loopar
#17. Har Python switch-satser?
Nej, Python har inte switch-satser.
#18. Hur implementerar man funktionaliteten hos switch-satser i Python?
Vi kan implementera funktionaliteten hos switch-satser med if- och elif-satser.
>>> if a == 1: ... print(...) ... elif a == 2: ... print(....)
#19. Vad är break- och continue-satser?
break – break-satsen avslutar loopen. Kodexekveringen hoppar till utanför loopen.
>>> for i in range(5): ... if i == 3: ... break ... print(i) ... 0 1 2
continue – continue-satsen hoppar över den resterande koden i den aktuella iterationen. Kodexekveringen fortsätter sedan med nästa iteration.
>>> for i in range(5): ... if i == 3: ... continue ... print(i) ... 0 1 2 4
#20. När exekveras else-koden med while- och for-loopar?
Koden i else-blocket med while- och for-loopar exekveras när alla iterationer i loopen har utförts. Koden i else-blocket exekveras inte när vi bryter loopen med break.
#21. Vad är list- och ordboksförståelser?
List- och ordboksförståelser är ett syntaktiskt sätt att skriva for-loopar mer kompakt.
>>> 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. Hur fungerar range-funktionen?
Range-funktionen returnerar en sekvens av tal mellan start och stopp, med en stegvis ökning. Syntaxen för range-funktionen är range(start, stop[, step]).
Argumentet stop är obligatoriskt. Argumenten start och step är valfria. Standardvärdet för start är 0 och för step är 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]
Funktioner
#23. Vad är parametrar och argument?
Parametrar är namnen som anges i funktionsdefinitionen.
Argument är de värden som skickas till funktionen när den anropas.
#24. Vilka är de olika typerna av argument i Python?
Det finns i huvudsak fyra typer av argument: positionsargument, standardargument, nyckelordsargument och godtyckliga argument.
Positionsargument: De normala argument vi definierar i en funktion kallas positionsargument. Alla positionsargument krävs när funktionen anropas.
>>> 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'
Standardargument: Vi kan ange ett standardvärde för argumenten i funktionsdefinitionen. Om användaren inte anger ett värde används standardvärdet.
>>> def add(a, b=3): ... return a + b ... >>> add(1, 2) 3 >>> add(1) 4
Nyckelordsargument: Vi kan ange argumentens namn när vi anropar funktionen och tilldela värden till dem. Nyckelordsargument hjälper oss att undvika den ordning som är obligatorisk i positionsargument.
>>> def add(a, b): ... print("a ", a) ... print("b ", b) ... return a + b ... >>> add(b=4, a=2) a 2 b 4 6
Godtyckliga argument: Vi använder godtyckliga argument för att samla in ett godtyckligt antal argument. Vi använder * och ** operatorer i funktionsdefinitionen för att samla in argumenten.
>>> def add(*args): ... return sum(args) ... >>> add(1, 2, 3, 4, 5) 15 >>> def dict_args(**kwargs): ... print(kwargs) ... >>> dict_args(a="ett", b='två', c="tre") {'a': 'ett', 'b': 'två', 'c': 'tre'}
#25. Vad är en lambdafunktion?
Lambdafunktioner är små, anonyma funktioner i Python. De har ett enda uttryck och accepterar flera argument.
>>> add = lambda a, b: a + b >>> add(1, 3) 4
#26. Vad är skillnaden mellan en vanlig funktion och en lambdafunktion?
Funktionaliteten hos båda är likartad, men vi behöver skriva lite mer kod i vanliga funktioner. Lambdafunktioner är praktiska när det bara finns ett uttryck.
#27. Vad används nyckelordet pass till?
Nyckelordet pass används för att ange ett tomt block i koden. Python tillåter inte tomma block utan kod, så pass-satsen låter oss definiera tomma block (när vi bestämmer oss för att fylla i koden senare).
>>> def add(*args): ... ... File "<stdin>", line 3 ^ IndentationError: expected an indented block >>> def add(*args): ... pass ... >>>
#28. Vad är en rekursiv funktion?
En funktion som anropar sig själv kallas en rekursiv funktion.
Vad är packningsoperatorer i Python? Hur använder man dem?
Packningsoperatorerna används för att samla in flera argument i funktioner. De är kända som godtyckliga argument.
Obs: Du kan läsa mer om packningsoperatorer i den här artikeln.
OOP i Python
#29. Vilket nyckelord används för att skapa klasser i Python?
Nyckelordet class används för att skapa klasser i Python. Vi bör följa PascalCase för att namnge klasser i Python.
>>> class Bil: ... pass ...
#30. Hur instansierar man en klass i Python?
Vi skapar en instans av en klass i Python genom att anropa den som en funktion. Vi kan skicka de attribut som krävs för objektet, precis som med funktionsargument.
>>> class Bil: ... def __init__(self, farg): ... self.farg = farg ... >>> rod_bil = Bil('röd') >>> rod_bil.farg 'röd' >>> gron_bil = Bil('grön') >>> gron_bil.farg 'grön'
#31. Vad är self i Python?
self representerar klassens objekt. Det används för att nå objektattributen och metoderna i klassen för det specifika objektet.
#32. Vad är metoden __init__?
__init__ är konstruktormetoden som liknar konstruktorer i andra OOP-språk. Den körs direkt när vi skapar ett objekt av klassen. Den används för att initiera data för instansen.
#33. Vad är docstring i Python?
Dokumentationssträngar eller docstrings används för att dokumentera ett kodblock. De används också som kommentarer med flera rader.
Dessa docstrings används i klassmetoder för att beskriva vad en metod gör. Vi kan se metodens docstring med hjälp av help-metoden.
>>> class Bil: ... def __init__(self, farg): ... self.farg = farg ... ... def andra_farg(self, uppdaterad_farg): ... """Denna metod ändrar bilens färg""" ... self.farg = uppdaterad_farg ... >>> bil = Bil('röd') >>> help(bil.andra_farg) Help on method andra_farg in module __main__: andra_farg(uppdaterad_farg) method of __main__.Bil instance Denna metod ändrar bilens färg
#34. Vad är dunder- eller magiska metoder?
Metoder som har två understreck som prefix och suffix kallas dunder- eller magiska metoder. De används främst för att åsidosätta metoder. Några av de metoder som kan åsidosättas är __str__, __len__, __setitem__, __getitem__, etc.
>>> class Bil: ... def __str__(self): ... return "Detta är en bilklass" ... >>> bil = Bil() >>> print(bil) Detta är en bilklass
Obs: Det finns många andra metoder som du kan åsidosätta. De är praktiska om du vill anpassa koden på djupet. Utforska dokumentationen för mer information.
#35. Hur implementerar man arv i Python?
Vi skickar föräldraklassen till barnklassen som ett argument. Och vi kan anropa init-metoden i föräldraklassen i barnklassen.
>>> class Djur: ... def __init__(self, namn): ... self.namn = namn ... >>> class Djur: e): ... def __init__(self, namn): ... self.namn = namn ... ... def visa(self): ... print(self.namn) >>> class Hund(Djur): e):ame) ... def __init__(self, namn): ... super().__init__(namn) ... >>> hund = Hund('Tommy') >>> hund.visa() Tommy
#36. Hur får man tillgång till föräldraklassen i en barnklass i Python?
Vi kan använda super() som refererar till föräldraklassen i barnklassen, och vi kan komma åt dess attribut och metoder.
Diverse
#37. Hur använder man enkelrads- och flerradskommentarer i Python?
Vi använder hash (#) för enkelradskommentarer och trippla enkla citattecken (”’kommentar”’) eller trippla dubbla citattecken (”””kommentar”””) för flerradskommentarer.
#38. Vad är ett objekt i Python?
Allt i Python är ett objekt. Alla datatyper, funktioner och klasser är objekt.
#39. Vad är skillnaden mellan is och ==?
Operatorn == används för att kontrollera om två objekt har samma värde eller inte. Operatorn is används för att kontrollera om två objekt refererar till samma minnesplats eller inte.
>>> a = [] >>> b = [] >>> c = a >>> a == b True >>> a is b False >>> a is c True
#40. Vad är en ytlig och en djup kopia?
Ytlig kopia: Den skapar en kopia som originalet utan att ändra referenserna till objekten. Både det kopierade och originalobjektet refererar nu till samma objektreferenser. Att ändra ett objekt kommer att påverka det andra.
Metoden copy från copy-modulen används för en ytlig kopia.
>>> 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]]
Djup kopia: Den kopierar rekursivt värdena från originalobjektet till det nya objektet. Vi måste använda slicing eller deepcopy-funktionen från copy-modulen för djup kopia.
>>> 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. Vad är iteratorer?
Iteratorer är objekt i Python som minns deras iterationsstatus. De initierar data med metoden __iter__ och returnerar nästa element med metoden __next__.
Vi måste anropa next(iterator) för att få nästa element från iteratorn. Vi kan konvertera sekvensdatatyper till en iterator med den inbyggda iter-metoden.
>>> 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. Vad är generatorer?
Generatorer är funktioner som returnerar en iterator som ett generatorobjekt. Den använder yield för att generera data.
>>> 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
Slutsats
Frågor är inte begränsade till dem i den här artikeln. Artikeln ger en bra bild av olika typer av frågor som kan dyka upp vid en Python-intervju, men intervjuerna kan innehålla andra frågor. Ett bra sätt att förbereda dig är att ställa dig själv frågor under inlärningsprocessen. Försök att generera olika typer av frågor från ett koncept, och svara på dem själv. Då blir du inte lika överraskad av frågorna under intervjun. Du kan också använda en Python-kompilator online för att öva på din kodning.
Lycka till med din kommande Python-intervju! 👍