Hva er de 10 vanligste spørsmålene i Python-intervjuer? (Og hvordan du svarer på dem)
Python er et populært programmeringsspråk. Hvis du søker på utviklerjobber, bør du derfor regne med å få detaljerte spørsmål om hvordan det fungerer. Her ser vi på 10 Python-intervjuspørsmål du kan få, og hvordan du kan svare på dem.
Python-intervjuspørsmål 1: Hva er spesielt med Python, og hvilke fordeler har språket?
Python er et allsidig programmeringsspråk som kan brukes innen webutvikling, dataanalyse og kunstig intelligens. Det er utrolig brukervennlig, allsidig og har god ytelse – bare tre grunner til at mange ambisiøse programmerere velger det som programmeringsspråk å lære.
Det er et svært nybegynnervennlig språk med en lettforståelig syntaks og et omfattende standardbibliotek som inneholder mange ferdige moduler og funksjoner.
Andre fordeler inkluderer det store, aktive fellesskapet av Python-utviklere, som bidrar med eksterne ressurser og støtte til utviklingsprosessen. Som et tolkende og objektbasert språk er det også godt egnet til å skrive kode raskt og teste den umiddelbart. Dynamisk typing forbedrer språkets fleksibilitet ytterligere.
I likhet med Java er Python plattformuavhengig. Det kan integreres sømløst med andre språk, som C++, noe som letter plattformoverskridende arbeid og potensiell ytelsesoptimalisering.
Python-intervjuspørsmål 2: Hva menes med «scope» i Python?
«Omfang» refererer til området hvor en variabel er gyldig. Det er den delen av koden hvor variabelen er synlig og tilgjengelig, og hvor variabler kan defineres og brukes. Det gjør koden klarere og minimerer navnekonflikter. Python har to hovedtyper av omfang:
- Globalt omfang: Denne typen variabel er definert utenfor funksjoner og klasser. Den er tilgjengelig i hele programmet og finnes ofte i begynnelsen av koden eller på et høyere nivå.
- Lokalt omfang: Variabler i lokalt omfang er begrenset til funksjonen de er definert i. De kan også tilordnes til en spesifikt definert blokk.
Hvis du vil få tilgang til en variabel utenfor den definerte koden, må du utvide omfanget med en spesiell setning som «global» eller «nonlocal».
Python-intervjuspørsmål 3: Hva er forskjellen mellom lister og tupler i Python?
I Python finnes det to datatyper for lagring av ordnede samlinger av elementer: lister og tupler. Lister brukes vanligvis oftere på grunn av deres fleksibilitet. Her er noen viktige forskjeller mellom de to:
- Endringsbarhet: Lister kan endres selv etter at de er opprettet. Du kan legge til, fjerne eller endre elementer i dem. På den annen side kan du ikke endre elementene i en tuple etter at den er opprettet.
- Syntaks: Lister opprettes ved hjelp av firkantede parenteser
[], mens tupler bruker runde parenteser(). I motsetning til lister kan tupler også defineres ved hjelp av kommaer i stedet for parenteser. - Hastighet: Hvilken datatype som er raskest, avhenger av konteksten. Listers mutabilitet gjør dem raskere i noen operasjoner, for eksempel omfattende datamodifikasjoner. Tuppler er raskere når det gjelder tilgang til elementer i en samling.
Python-intervjuspørsmål 4: Hva er forskjellen mellom moduler og pakker?
Moduler og pakker skiller seg fra hverandre i bruksområdet. Moduler er individuelle filer med kode, mens pakker er samlinger av moduler i en katalog. Begge er ment å bidra til å skape en klar struktur, noe som kan være nyttig i større Python-prosjekter. Noen andre forskjeller mellom moduler og pakker er:
- Modul: I Python er moduler individuelle filer som kan inneholde funksjoner, klasser og variabler. Filene har endelsen
.pyog bidrar til å organisere koden bedre. Å ha individuelle filer bidrar til å forbedre lesbarheten og vedlikeholdet. - Pakke: Pakker brukes også til organisering, men er strukturert i kataloger og mapper. Dette gjør det mulig å organisere modulene i koden hierarkisk. For at en katalog skal behandles som en pakke, må den inneholde filen
__init__.py.
Python-intervjuspørsmål 5: Hva er pickling og unpickling?
«Pickling» og «unpickling» refererer til serialisering og deserialisering av interne objekter. Prosessene gjør det mulig å konvertere objekter til binære datarepresentasjoner (pickling) eller hente objekter fra binære representasjoner (unpickling).
- Pickling: Pickling konverterer et objekt til binær representasjon. Dette er viktig hvis du vil lagre data permanent eller overføre data til et nettverk. Pickle-modulen brukes til pickling i Python. Den serialiserer objektet ved å konvertere det til en byte-strøm.
- Unpickling: I en reversering av pickling-prosessen gjenoppretter unpickling et tidligere picklet objekt fra dets binære representasjon. Pickle-modulen brukes også til unpickling og deserialiserer byte-strømmen tilbake til et Python-objekt.
Python-intervjuspørsmål 6: Hva er forskjellen mellom en funksjon og en lambda-funksjon?
Generelt sett har de to funksjonstypene samme formål. Lambda-funksjoner er kortere og brukes oftere til enklere operasjoner og filteroppgaver. De viktigste forskjellene mellom en vanlig funksjon og en lambda-variant er knyttet til syntaks, omfang og bruksområder.
- Syntaks: Lambda-funksjoner har en mer kompakt syntaks når det gjelder definisjon, kropp og returverdi. For eksempel er det ingen eksplisitt «return» for returverdien, siden uttrykkets verdi returneres implisitt. Det gjør lambda-uttrykk spesielt godt egnet for korte, konsise funksjonsbeskrivelser.
- Omfang: Mens normale funksjoner kan inneholde flere setninger og kompleks logikk, er lambda-funksjoner begrenset til ett uttrykk. Lambda-varianter kan bare bruke lokale variabler, som vanligvis er begrenset i omfang. Normale funksjoner kan derimot bruke både lokale og globale variabler.
- Bruksområder: Normale funksjoner kan defineres hvor som helst i koden. Lambda-variabler brukes ofte der det er behov for en kortvarig funksjon som sortering, filtrering eller kartlegging.
Python-intervjuspørsmål 7: Hvilke typer arv finnes det i Python, og hvordan håndterer Python multiarv?
Det finnes flere typer arv i Python. Både enkel arv og flerarv er mulig. I enkel arv arver en klasse fra en enkelt overordnet klasse, og den avledede klassen overtar alle attributter og metoder fra den overordnede klassen.
I multiarv arver klassen fra mer enn én overordnet klasse. Den avledede klassen kan ta i bruk attributtene og metodene til alle overordnede klasser.
I Python brukes C3-lineariseringalgoritmen eller Method Resolution Order for multippel arv. Algoritmen bestemmer rekkefølgen metodene løses i en multippel arvhierarki. Dette sikrer at attributtene og metodene søkes i en konsistent og forutsigbar rekkefølge. Python bruker linearisering for å forhindre kjente arvproblemer som diamantproblemet.
Python-intervjuspørsmål 8: Hva er monkey patching?
«Monkey patching» refererer til prosessen med å endre eksisterende kode under kjøring. Dette kan for eksempel gjøres ved å legge til eller erstatte funksjoner eller metoder. Monkey patching gjør det mulig å gjøre dynamiske endringer i koden uten å endre kildekoden til den opprinnelige klassen eller funksjonen. Det kan være nyttig for å fikse feil, utvide funksjonaliteter og tilpasse deler av biblioteker eller rammeverk. Når det gjelder klasser, kan metoder også overskrives, og nye metoder kan legges til.
Python-intervjuspørsmål 9: Hva er forskjellene mellom Django, Pyramid og Flask?
Django, Pyramid og Flask er Python-webrammeverk som skiller seg fra hverandre med hensyn til tilnærming, kompleksitet og tilgjengelige funksjoner. Her er noen av de viktigste forskjellene mellom dem.
Django
Django er et høynivå webrammeverk som tilbyr en rekke tilleggsfunksjoner. Mange funksjoner og moduler er forhåndsinstallert. For eksempel har Django sin egen objektrelasjonelle kartlegging for databaseinteraksjon. Det tilbyr også et integrert administrasjonsgrensesnitt som forenkler administrasjonen av datamodeller.
URL-designet og strukturen til applikasjonen er forhåndsdefinert, noe som gjør utviklingen enklere. Django legger stor vekt på konvensjoner. Det tilbyr også innebygd autentisering og autorisasjon og inneholder funksjoner som formler og CSRF-beskyttelse. Rammeverket passer best for avanserte brukere, da det store utvalget av funksjoner og den strenge strukturen gjør læringskurven bratt.
Pyramide
I motsetning til Djangos omfattende funksjonalitet er Pyramid lett og fleksibelt. Det gjør det mulig for utviklere å velge foretrukne biblioteker og komponenter, og er designet for å være skalerbart og utvidbart. Rammeverket støtter ulike typer applikasjoner, fra små prosjekter til store, komplekse applikasjoner.
I motsetning til Django har Pyramid ikke en forhåndsbestemt applikasjonsstruktur, noe som gir større frihet i organiseringen av koden. Valget av malmotor er også åpent, siden Pyramid ikke bruker en standardmalmotor.
Den fleksible bruken og minimale forhåndsinnstillinger gjør læringskurven betydelig flatere, noe som gjør Pyramid bedre egnet for nybegynnere.
Flaske
Flask er det man kaller et mikro-rammeverk. Det ble opprinnelig utviklet for å være lett og enkelt å bruke. For å gjøre dette mulig tilbyr rammeverket bare det aller viktigste. Om nødvendig kan biblioteker legges til med Flask.
Flask bruker et enkelt og oversiktlig API som gjør det mulig å komme raskt i gang med utviklingen. Rammeverket er basert på WSGI-verktøysettet «Werkzeug» og bruker Jinja2-malmotoren. Utviklere kan også integrere andre komponenter etter behov.
Til syvende og sist vil valget av rammeverk avhenge av prosjektets behov og hvor mye fleksibilitet som kreves. Django tilbyr en rekke integrerte funksjoner og en klar struktur. Pyramid prioriterer fleksibilitet og skalerbarhet. Og Flask fokuserer på enkelhet og minimalisme.
Python-intervjuspørsmål 10: Hva står «args» og «kwargs» for i Python?
De to begrepene står for posisjonsargumenter (args) og nøkkelordargumenter (kwargs). Begge er konvensjoner som ofte brukes når man definerer funksjoner med et varierende antall argumenter, noe som gir utviklere ekstra fleksibilitet. Dette er spesielt nyttig hvis det ikke er klart fra starten hvor mange eller hva slags argumenter som til slutt vil bli gitt.
Args brukes når et variabelt antall argumenter aksepteres i en funksjon basert på posisjon. Dette gjør det mulig å angi et ikke-forhåndsdefinert antall argumenter, som igjen er tilgjengelige som tupler i funksjonen.
Kwargs er lignende. De brukes til å akseptere et variabelt antall argumenter basert på nøkkelord. Dette gjør det mulig å legge inn et ikke-forhåndsdefinert antall argumenter, som er tilgjengelige i funksjonen som en ordbok.
Hvis en funksjon må inneholde både variable posisjonsargumenter og nøkkelordargumenter, er det mulig å bruke args og kwargs i samme funksjon i Python.