Mitkä ovat 10 yleisintä Python-haastattelukysymystä? (Ja miten niihin vastataan)
Python on suosittu ohjelmointikieli. Jos haet kehittäjän työpaikkaa, sinun kannattaa varautua yksityiskohtaisiin kysymyksiin sen toiminnasta. Tässä artikkelissa tarkastelemme 10 Python-haastattelukysymystä, joita saatat saada, ja miten niihin voi vastata.
Python-haastattelukysymys 1: Mikä on erityistä Pythonissa ja mitä etuja kielellä on?
Python on monipuolinen ohjelmointikieli, jota voidaan käyttää verkkokehityksen, data-analyysin ja tekoälyn aloilla. Se on erittäin käyttäjäystävällinen, monipuolinen ja suorituskykyinen – vain kolme syytä, miksi monet aloittelevat ohjelmoijat valitsevat sen oppimakseen ohjelmointikielenä.
Se on aloittelijoille erittäin sopiva kieli, jonka syntaksi on helppo ymmärtää ja joka sisältää kattavan standardikirjaston, jossa on monia valmiita moduuleja ja toimintoja.
Muita etuja ovat suuri, aktiivinen Python-kehittäjien yhteisö, joka tarjoaa ulkoisia resursseja ja tukea kehitysprosessille. Tulkitsevana ja objektipohjaisena kielenä se sopii hyvin myös koodin nopeaan kirjoittamiseen ja välittömään testaamiseen. Dynaaminen tyypitys parantaa kielen joustavuutta entisestään.
Java:n tavoin Python on alustariippumaton. Se voidaan integroida saumattomasti muihin kieliin, kuten C++:aan, mikä helpottaa alustojen välistä työskentelyä ja mahdollistaa suorituskyvyn optimoinnin.
Python-haastattelukysymys 2: Mitä tarkoitetaan Pythonissa termillä “scope” (laajuus)?
‘Scope’ viittaa alueeseen, jossa muuttuja on voimassa. Se on osa koodia, jossa muuttuja on näkyvissä ja käytettävissä ja jossa muuttujat voidaan määritellä ja käyttää. Se tekee koodista selkeämmän ja minimoi nimikonfliktit. Pythonissa on kaksi päätyyppistä scopea:
- Globaali laajuus: Tämäntyyppinen muuttuja määritellään funktioiden ja luokkien ulkopuolella. Se on käytettävissä koko ohjelmassa ja löytyy usein koodin alusta tai ylemmältä tasolta.
- Paikallinen laajuus: Paikallisen laajuuden muuttujat ovat rajoitettuja funktioon, jossa ne on määritelty. Ne voidaan myös määrittää tiettyyn lohkoon.
Jos haluat käyttää muuttujaa määritellyn koodin ulkopuolella, sinun on laajennettava sen vaikutusaluetta erityisellä lauseella, kuten ‘global’ tai ‘nonlocal’.
Python-haastattelukysymys 3: Mikä on ero Pythonin listojen ja tuplejen välillä?
Pythonissa on kaksi tietotyyppiä järjestettyjen elementtien kokoelmien tallentamiseen: listat ja tuple-tyypit. Listat ovat tyypillisesti suositumpia niiden joustavuuden vuoksi. Tässä on muutamia keskeisiä eroja näiden kahden välillä:
- Muuttuvuus: Luetteloita voidaan muokata myös niiden luomisen jälkeen. Niihin voi lisätä, poistaa tai muuttaa elementtejä. Sen sijaan tuple-tyyppisen luettelon elementtejä ei voi muuttaa sen luomisen jälkeen.
- Syntaksi: Luettelot luodaan hakasulkeilla
[], kun taas tupleissa käytetään pyöreitä sulkeita(). Toisin kuin luettelot, tupleja voidaan määritellä myös pilkuilla sulkeiden sijaan. - Nopeus: Kumpi tietotyyppi on nopeampi, riippuu kontekstista. Listojen muokattavuus tekee niistä nopeampia joissakin toiminnoissa, kuten laajoissa tietojen muokkauksissa. Tupleja on nopeampi käyttää, kun on kyse kokoelman elementtien käyttämisestä.
Python-haastattelukysymys 4: Mikä on ero moduulien ja pakettien välillä?
Moduulit ja paketit eroavat toisistaan sovelluksiltaan. Moduulit ovat yksittäisiä tiedostoja, jotka sisältävät koodia, kun taas paketit ovat hakemistossa olevien moduulien kokoelmia. Molemmat on tarkoitettu auttamaan selkeän rakenteen luomisessa, mikä voi olla hyödyllistä suuremmissa Python-projekteissa. Muita moduulien ja pakettien välisiä eroja ovat:
- Moduuli: Pythonissa moduulit ovat yksittäisiä tiedostoja, jotka voivat sisältää funktioita, luokkia ja muuttujia. Tiedostojen pääte on
.py, ja ne auttavat järjestämään koodia paremmin. Yksittäiset tiedostot parantavat luettavuutta ja ylläpitoa. - Paketti: Paketteja käytetään myös järjestämiseen, mutta ne on rakennettu hakemistoihin ja kansioihin. Tämä mahdollistaa koodin moduulien hierarkkisen järjestämisen. Jotta hakemistoa voidaan käsitellä pakettina, sen tulisi sisältää tiedosto
__init__.py.
Python-haastattelukysymys 5: Mitä ovat pickling ja unpickling?
“Pickling” ja “unpickling” viittaavat sisäisten objektien sarjoittamiseen ja sarjoituksen purkamiseen. Näiden prosessien avulla objektit voidaan muuntaa binäärimuotoisiksi datan esityksiksi (pickling) tai hakea objektit binäärimuotoisista esityksistä (unpickling).
- Pickling: Pickling muuntaa objektin binäärimuotoon. Tämä on tärkeää, jos haluat tallentaa tietoja pysyvästi tai siirtää tietoja verkkoon. Pickle-moduulia käytetään picklingiin Pythonissa. Se sarjoittaa objektin muuntamalla sen tavuvirraksi.
- Unpickling: Pickling-prosessin käänteisenä unpickling palauttaa aiemmin pickling-käsitellyn objektin sen binäärimuodosta. Pickle- moduulia käytetään myös unpickling-käsittelyyn, ja se deserialisoi tavuvirran takaisin Python-objektiksi.
Python-haastattelukysymys 6: Mikä ero on funktion ja lambda-funktion välillä?
Yleisesti ottaen nämä kaksi funktiotyyppiä palvelevat samaa tarkoitusta. Lambda-funktiot ovat lyhyempiä ja niitä käytetään useammin yksinkertaisempiin operaatioihin ja suodatustehtäviin. Tärkeimmät erot normaalin funktion ja lambda-variantin välillä liittyvät syntaksiin, laajuuteen ja käyttöalueisiin.
- Syntaksi: Lambda-funktioilla on kompaktimpi syntaksi määritelmän, rungon ja palautusarvon osalta. Esimerkiksi palautusarvolle ei ole eksplisiittistä “return”-komentoa, koska lausekkeen arvo palautetaan implisiittisesti. Tämä tekee lambda-lausekkeista erityisen sopivia lyhyille, ytimekkäille funktiokuvauksille.
- Soveltamisala: Normaalit funktiot voivat sisältää useita lauseita ja monimutkaista logiikkaa, mutta lambda-funktiot ovat rajoitettuja yhteen lausekkeeseen. Lambda-variantit voivat käyttää vain paikallisia muuttujia, joiden soveltamisala on tyypillisesti rajoitettu. Normaalit funktiot voivat puolestaan käyttää sekä paikallisia että globaaleja muuttujia.
- Käyttöalueet: Normaalit funktiot voidaan määritellä missä tahansa koodissa. Lambda-muuttujia käytetään usein silloin, kun tarvitaan lyhytaikainen funktio, kuten sorted, filter tai map.
Python-haastattelukysymys 7: Millaisia perintötyyppejä Pythonissa on ja miten Python käsittelee moniperintöä?
Pythonissa on useita perintötyyppejä. Sekä yksittäinen perintö että moninkertainen perintö ovat mahdollisia. Yksittäisessä perinnössä yksi luokka perii yhden vanhemman luokan ja johdettu luokka ottaa käyttöön kaikki vanhemman luokan attribuutit ja menetelmät.
Mon periytymisessä luokka perii useammasta kuin yhdestä vanhemmasta luokasta. Johdettu luokka voi omaksua kaikkien vanhempien luokkien attribuutit ja menetelmät.
Pythonissa käytetään C3-linearisointialgoritmia tai menetelmän ratkaisujärjestystä moniperintöisyyden yhteydessä. Algoritmi määrittää järjestyksen, jossa menetelmät ratkaistaan moniperintöisyyden hierarkiassa. Tämä varmistaa, että attribuutteja ja menetelmiä haetaan johdonmukaisessa ja ennustettavassa järjestyksessä. Python käyttää linearisointia estääkseen tunnettuja perintöongelmia, kuten timanttiongelman.
Python-haastattelukysymys 8: Mikä on monkey patching?
”Monkey patching” tarkoittaa olemassa olevan koodin muokkaamista suorituksen aikana. Tämä voidaan tehdä esimerkiksi lisäämällä tai korvaamalla toimintoja tai menetelmiä. Monkey patching mahdollistaa koodin dynaamiset muutokset muuttamatta alkuperäisen luokan tai toiminnon lähdekoodia. Se voi olla hyödyllistä virheiden korjaamisessa, toimintojen laajentamisessa ja kirjastojen tai kehysten osien mukauttamisessa. Luokkien osalta myös menetelmät voidaan korvata ja uusia menetelmiä voidaan lisätä.
Python-haastattelukysymys 9: Mitkä ovat Djangon, Pyramidin ja Flaskin erot?
Django, Pyramid ja Flask ovat Python-verkkokehyksiä, jotka eroavat toisistaan lähestymistavoiltaan, monimutkaisuudeltaan ja käytettävissä olevilta toiminnoiltaan. Tässä on joitakin niiden tärkeimpiä eroja.
Django
Django on korkean tason web-kehys, joka tarjoaa monia lisäominaisuuksia. Monet toiminnot ja moduulit ovat esiasennettuina. Esimerkiksi Djangolla on oma objektirelaatiomallinnus tietokantayhteydenpitoa varten. Se tarjoaa myös integroidun hallintaliittymän, joka yksinkertaistaa tietomallien hallintaa.
Sovelluksen URL-suunnittelu ja rakenne on määritelty etukäteen, mikä helpottaa kehitystyötä. Django painottaa paljon käytäntöjä. Se tarjoaa myös sisäänrakennetun todennuksen ja valtuutuksen sekä sisältää toimintoja, kuten kaavoja ja CSRF-suojausta. Kehys sopii parhaiten edistyneille käyttäjille, sillä laaja valikoima ominaisuuksia ja tiukka rakenne tekevät oppimiskäyrästä jyrkän.
Pyramidi
Toisin kuin kattava Django, Pyramid on kevyt ja joustava. Se antaa kehittäjille mahdollisuuden valita haluamansa kirjastot ja komponentit, ja se on suunniteltu skaalautuvaksi ja laajennettavaksi. Kehys tukee erilaisia sovelluksia pienistä projekteista suuriin ja monimutkaisiin sovelluksiin.
Toisin kuin Django, Pyramidilla ei ole määrättyä sovellusrakennetta, mikä antaa enemmän vapautta koodin järjestämisessä. Myös mallimoottorin valinta on vapaa, koska Pyramid ei käytä oletusmoottoria.
Sen joustava käyttö ja vähäiset esiasetukset tekevät sen oppimiskäyrästä huomattavasti tasaisemman, minkä ansiosta Pyramid sopii paremmin aloittelijoille.
Pullo
Flask on niin sanottu mikrokehys. Se on alun perin suunniteltu kevyeksi ja helppokäyttöiseksi. Tämän helpottamiseksi kehys tarjoaa vain välttämättömät ominaisuudet. Tarvittaessa Flaskiin voidaan lisätä kirjastoja.
Flask käyttää yksinkertaista ja selkeää sovellusliittymää (API), jonka avulla kehitystyö voidaan aloittaa nopeasti. Kehys perustuu WSGI-työkalupakettiin ”Werkzeug” ja käyttää Jinja2-mallimoottoria. Kehittäjät voivat myös integroida muita komponentteja tarpeen mukaan.
Lopulta valitsemasi kehys riippuu projektisi tarpeista ja siitä, kuinka paljon joustavuutta tarvitset. Django tarjoaa lukuisia integroituja toimintoja ja selkeän rakenteen. Pyramid painottaa joustavuutta ja skaalautuvuutta. Flask puolestaan keskittyy yksinkertaisuuteen ja minimalismiin.
Python-haastattelukysymys 10: Mitä ‘args’ ja ‘kwargs’ tarkoittavat Pythonissa?
Nämä kaksi termiä tarkoittavat positiivisargumentteja (args) ja avainsana-argumentteja (kwargs). Molemmat ovat käytäntöjä, joita käytetään usein määriteltäessä funktioita, joissa on vaihteleva määrä argumentteja, mikä antaa kehittäjille lisää joustavuutta. Tämä on erityisen hyödyllistä, jos ei ole alusta alkaen selvää, kuinka monta tai minkälaisia argumentteja lopulta annetaan.
Args-muuttujia käytetään, kun funktiossa hyväksytään vaihteleva määrä argumentteja sijainnin perusteella. Tämä mahdollistaa ennalta määrittelemättömän määrän argumenttien syöttämisen, jotka puolestaan ovat käytettävissä funktiossa tupleina.
Kwargit ovat samanlaisia. Niitä käytetään hyväksymään vaihteleva määrä argumentteja avainsanojen perusteella. Tämä mahdollistaa ennalta määrittelemättömän määrän argumenttien syöttämisen, jotka ovat käytettävissä funktiossa sanakirjana.
Jos funktio tarvitsee sisältää sekä muuttujien sijaintia että avainsanoja koskevia argumentteja, Pythonissa on mahdollista käyttää args- ja kwargs-argumentteja samassa funktiossa.