Python on po­pu­laarne prog­ram­mee­ri­mis­keel. Seega, kui kan­di­dee­rite arendaja ame­ti­ko­hale, peaksite arvestama, et teile esi­ta­takse ük­sik­as­ja­likke küsimusi selle toimimise kohta. Siin vaatame 10 Pythoniga seotud in­terv­juu­kü­si­must, mida teile võidakse esitada, ja kuidas neile vastata.

Python intervjuu küsimus 1: Mis on Pythoni eripära ja millised on selle keele eelised?

Python on mit­me­külgne prog­ram­mee­ri­mis­keel, mida saab kasutada vee­biaren­duse, andmete analüüsi ja te­hisin­tel­lekti vald­kon­nas. See on ka­su­ta­ja­sõb­ra­lik, mit­me­külgne ja pakub head jõudlust – need on vaid kolm põhjust, miks paljud tulevased prog­ram­mee­ri­jad valivad selle prog­ram­mee­ri­mis­kee­leks, mida õppida.

See on al­ga­ja­tele väga sobiv keel, millel on lihtsalt mõistetav süntaks ja põhjalik stan­dard­teek, mis sisaldab palju valmis mooduleid ja funkt­sioone.

Muud eelised hõlmavad suurt ja aktiivset Python-aren­da­jate kogukonda, kes pa­nus­ta­vad aren­dus­prot­sessi väliste res­surs­side ja toega. Tõl­gen­dava ja ob­jek­ti­põ­hise keelena sobib see hästi ka koodi kiireks kir­ju­ta­miseks ja koheseks tes­ti­miseks. Dü­naa­mi­line tüüpimine suurendab veelgi keele paind­lik­kust.

Nagu Java, on ka Python plat­vor­mist sõltumatu. Seda saab sujuvalt in­teg­ree­rida teiste keeltega, nagu C++, hõl­bus­ta­des plat­vormi­de­va­he­list tööd ja po­tent­siaal­set jõudluse op­ti­mee­ri­mist.

Python intervjuu küsimus 2: Mida tähendab Pythonis mõiste „scope“?

„Scope” viitab vald­kon­nale, kus muutuja on kehtiv. See on koodi osa, kus muutuja on nähtav ja kät­te­saa­dav ning kus muutujaid saab de­fi­nee­rida ja kasutada. See muudab koodi selgemaks ja vähendab nimede konflikte. Pythonil on kaks peamist scope’i tüüpi:

  • Globaalne ulatus: seda tüüpi muutuja on de­fi­nee­ri­tud väl­jas­pool funkt­sioone ja klasse. See on kät­te­saa­dav kogu programmi ulatuses ja asub sageli koodi alguses või kõrgemal tasemel.
  • Kohalik ulatus: Kohaliku ulatusega muutujad on piiratud funkt­sioo­niga, milles need on de­fi­nee­ri­tud. Neid saab ka määrata spet­siaal­selt de­fi­nee­ri­tud plokki.

Kui soovite pääseda juurde muutujale väl­jas­pool määratud koodi, peate laiendama ulatust spet­siaalse aval­du­sega, nagu „global” või „nonlocal”.

Python intervjuu küsimus 3: Mis vahe on Pythonis loenditel ja tuplitel?

Pythonis on jär­jes­ta­tud ele­men­tide kogumite sal­ves­ta­miseks kaks and­me­tüüpi: loendid ja tuplid. Loendeid ka­su­ta­takse nende paind­lik­kuse tõttu ta­va­li­selt sa­ge­da­mini. Siin on mõned olulised eri­ne­vu­sed nende kahe vahel:

  • Muu­de­ta­vus: Nimekirju saab muuta isegi pärast nende loomist. Neisse saab lisada, neist eemaldada või neis muuta elemente. Seevastu tupli elemente ei saa pärast selle loomist muuta.
  • Süntaks: Ni­me­kir­jad luuakse kan­di­liste sulgude abil [], tuplid aga ümarate sulgude abil (). Erinevalt ni­me­kir­ja­dest saab tuplid mää­rat­leda ka komade abil sulgude asemel.
  • Kiirus: Milline andmetüüp on kiirem, sõltub kon­teks­tist. Ni­me­kir­jade muutuvus muudab need kiiremaks mõ­nin­ga­tes ope­rat­sioo­ni­des, näiteks ula­tus­li­kes andmete muut­mis­tes. Tuple’id on kiiremad, kui tegemist on kogumiku ele­men­ti­dele juur­de­pää­suga.

Python intervjuu küsimus 4: Mis vahe on moo­du­li­tel ja paketitel?

Moodulid ja paketid erinevad oma ra­ken­duste poolest. Moodulid on üksikud koodiga failid, pa­ket­ti­deks aga ka­ta­loo­gis olevad moodulite kogumid. Mõlemad on mõeldud selge struk­tuuri loomiseks, mis võib olla abiks suu­re­ma­tes Python-pro­jek­ti­des. Muud eri­ne­vu­sed moodulite ja paketite vahel on järgmised:

  • Moodul: Pythonis on moodulid eraldi failid, mis võivad sisaldada funkt­sioone, klasse ja muutujaid. Failidel on laiend .py ja need aitavad koodi paremini or­ga­ni­see­rida. Eraldi failid pa­ran­da­vad loetavust ja hool­da­ta­vust.
  • Pakett: Pakette ka­su­ta­takse samuti or­ga­ni­see­ri­miseks, kuid need on struk­tu­ree­ri­tud ka­ta­loo­gi­desse ja kaus­ta­desse. See võimaldab koodis olevaid mooduleid hie­rar­hi­li­selt or­ga­ni­see­rida. Et kataloogi saaks käsitleda paketina, peaks see sisaldama faili __init__.py.

Python intervjuu küsimus 5: Mis on pickling ja un­pick­ling?

„Pickling” ja „un­pick­ling” tä­hen­da­vad sisemiste objektide se­ria­li­see­ri­mist ja de­se­ria­li­see­ri­mist. Need prot­ses­sid või­mal­da­vad objekte tei­sen­dada bi­naar­se­teks andmete esi­tus­vii­si­deks (pickling) või objekte bi­naar­se­test esi­tus­vii­si­dest taastada (un­pick­ling).

  • Pickling: Pickling teisendab objekti bi­naar­sesse esi­tus­viisi. See on oluline, kui soovite andmeid püsivalt sal­ves­tada või võrku edastada. Pickle-moodulit ka­su­ta­takse Pythonis pick­lin­guks. See se­ria­li­see­rib objekti, tei­sen­da­des selle baitide vooguks.
  • Un­pick­ling: Pickling-protsessi vas­tu­pi­di­selt taastab un­pick­ling varem pickling-protsessi läbinud objekti selle bi­naar­sest esitusest. Pickle- moodulit ka­su­ta­takse ka un­pick­ling-prot­ses­sis ja see se­ria­li­see­rib baitivoo tagasi Python-objektiks.

Python intervjuu küsimus 6: Mis vahe on funkt­sioo­nil ja lambda-funkt­sioo­nil?

Üldiselt täidavad need kaks funkt­sioo­ni­tüüpi sama eesmärki. Lambda-funkt­sioo­nid on lühemad ja neid ka­su­ta­takse sa­ge­da­mini liht­sa­mate ope­rat­sioo­nide ja filt­ree­ri­mis­üles­an­nete jaoks. Peamised eri­ne­vu­sed tavalise funkt­siooni ja lambda-variandi vahel on seotud süntaksi, ulatuse ja ka­su­tus­vald­kon­da­dega.

  • Süntaks: Lambda-funkt­sioo­ni­del on kompaktne süntaks, mis puudutab de­fi­nit­siooni, keha ja ta­gas­ta­ta­vat väärtust. Näiteks puudub ta­gas­ta­tava väärtuse jaoks sel­ge­sõ­na­line „return”, kuna väljendi väärtus ta­gas­ta­takse kaudselt. Seetõttu sobivad lambda-väljendid eriti hästi lühikeste ja kok­ku­võt­like funkt­sioo­ni­kir­jel­duste jaoks.
  • Ko­hal­da­mis­ala: Kui tavalised funkt­sioo­nid võivad sisaldada mitut avaldust ja keerulist loogikat, siis lambda-funkt­sioo­nid on piiratud ühe aval­du­sega. Lambda-va­rian­ti­des saab kasutada ainult kohalikke muutujaid, mille ko­hal­da­mis­ala on ta­va­li­selt piiratud. Ta­va­li­selt saab ta­valis­tes funkt­sioo­ni­des kasutada nii kohalikke kui ka glo­baal­seid muutujaid.
  • Ka­su­tus­alad: tavalisi funkt­sioone saab de­fi­nee­rida koodi mis tahes kohas. Lambda muutujaid ka­su­ta­takse sageli seal, kus on vaja lü­hi­aja­list funkt­siooni, nagu sorted, filter või map.

Python intervjuu küsimus 7: Millised pärimise tüübid on Pythonis olemas ja kuidas Python käsitleb mit­me­kord­set pärimist?

Pythonis on mitu pärimise tüüpi. Võimalik on nii ühekordne kui ka mit­me­kordne pärimine. Ühekordse pärimise puhul pärandab üks klass ühelt va­nem­klas­silt ja tuletatud klass võtab üle kõik va­nem­klassi at­ri­buu­did ja meetodid.

Mitme pärandi puhul pärandab klass rohkem kui ühelt va­nem­klas­silt. Tuletatud klass võib üle võtta kõikide va­nem­klas­side at­ri­buu­did ja meetodid.

Pythonis ka­su­ta­takse mit­me­kordse pärandi jaoks C3 li­neari­see­ri­mis­algo­ritmi või meetodi la­hen­da­mise jär­je­korda. Algoritm määrab kindlaks jär­je­korra, milles meetodid mit­me­kordse pärandi hie­rar­hias la­hen­da­takse. See tagab, et atribuute ja meetodeid otsitakse jär­je­pi­de­vas ja en­nus­ta­ta­vas jär­je­kor­ras. Python kasutab li­neari­see­ri­mist, et vältida tuntud pä­ran­di­prob­leeme, nagu tee­mant­prob­leem.

Python intervjuu küsimus 8: Mis on monkey patching?

„Monkey patching” viitab ole­mas­oleva koodi muut­mis­ele käitamise ajal. Seda saab teha näiteks funkt­sioo­nide või meetodite lisamise või asen­da­mise teel. Monkey patching võimaldab koodi dü­naa­mi­li­selt muuta, ilma et oleks vaja muuta algse klassi või funkt­siooni läh­te­koodi. See võib olla kasulik vigade pa­ran­da­miseks, funkt­sio­naal­suse laien­da­miseks ja raa­ma­tu­ko­gude või raa­mis­tike osade ko­han­da­miseks. Klasside puhul saab ka meetodeid üle­kir­ju­tada ja uusi meetodeid lisada.

Python intervjuu küsimus 9: Millised on eri­ne­vu­sed Django, Pyramid ja Flask vahel?

Django, Pyramid ja Flask on Python-vee­bi­raa­mis­ti­kud, mis erinevad üks­tei­sest lä­he­ne­mis­viisi, keerukuse ja kät­te­saa­da­vate funkt­sioo­nide poolest. Siin on mõned peamised eri­ne­vu­sed nende vahel.

Django

Django on kõr­ge­ta­se­me­line vee­bi­raa­mis­tik, mis pakub mit­me­su­gu­seid li­sa­funkt­sioone. Paljud funkt­sioo­nid ja moodulid on eel­ins­tal­li­tud. Näiteks on Djangol oma objekt-re­lat­sioo­ni­line kaar­dis­tus and­me­baasiga suht­le­miseks. Samuti pakub see in­teg­ree­ri­tud hal­dus­lii­dest, mis liht­sus­tab and­me­mu­de­lite haldamist.

Rakenduse URL-i disain ja struktuur on eelnevalt määratud, mis liht­sus­tab aren­da­mist. Django paneb suurt rõhku kon­vent­sioo­ni­dele. Samuti pakub see sis­se­ehi­ta­tud au­ten­ti­mist ja au­to­ri­see­ri­mist ning sisaldab selliseid funkt­sioone nagu valemid ja CSRF-kaitse. Raamistik sobib kõige paremini kogenud ka­su­ta­ja­tele, kuna suur hulk funkt­sioone ja range struktuur muudavad õppimise kee­ru­li­seks.

Püramiid

Erinevalt Django põh­ja­lik­ku­sest on Pyramid kerge ja paindlik. See võimaldab aren­da­ja­tel valida eelis­ta­tud raa­ma­tu­ko­gud ja kom­po­nen­did ning on ka­van­da­tud nii, et seda saab ska­lee­rida ja laiendada. Raamistik toetab erinevaid rakendusi, alates väi­ke­s­test pro­jek­ti­dest kuni suurte ja kee­ru­liste ra­ken­dus­teni.

Erinevalt Djangost ei ole Pyramidil kind­laks­mää­ra­tud rakenduse struk­tuuri, mis võimaldab koodi or­ga­ni­see­ri­misel suuremat vabadust. Ka mal­li­moo­tori valik on vaba, kuna Pyramid ei kasuta vaikimisi ühtegi.

Selle paindlik rakendus ja mi­ni­maalne eel­sea­dis­tuste hulk muudavad õppimise oluliselt liht­sa­maks, mistõttu Pyramid sobib paremini al­ga­ja­tele.

Pudel

Flask on nn mik­ro­ra­ken­dus­raa­mis­tik. See on algselt loodud kergeks ja lihtsaks ka­su­ta­miseks. Selle hõl­bus­ta­miseks pakub raamistik ainult hä­da­va­ja­likku. Vajaduse korral saab Flaskiga lisada raa­ma­tu­ko­gusid.

Flask kasutab lihtsat ja selget API-d, mis võimaldab aren­dus­tööd kiiresti alustada. Raamistik põhineb WSGI töö­riistakomp­lek­til „Werkzeug” ja kasutab Jinja2 mal­li­moo­to­rit. Arendajad saavad vajaduse korral in­teg­ree­rida ka teisi kom­po­nente.

Lõpp­kok­ku­võt­tes sõltub raa­mis­tiku valik projekti va­ja­dus­test ja va­ja­li­kust paind­lik­ku­sest. Django pakub arvukaid in­teg­ree­ri­tud funkt­sioone ja selget struk­tuuri. Pyramid seab esikohale paind­lik­kuse ja ska­lee­ri­ta­vuse. Flask keskendub liht­su­sele ja mi­ni­ma­lis­mile.

Python intervjuu küsimus 10: Mida tä­hen­da­vad Pythonis „args” ja „kwargs”?

Need kaks terminit tä­his­ta­vad po­sit­sioo­nilisi argumente (args) ja märk­sõ­naar­gu­mente (kwargs). Mõlemad on kon­vent­sioo­nid, mida ka­su­ta­takse sageli erineva arvu ar­gu­men­ti­dega funkt­sioo­nide de­fi­nee­ri­misel, andes aren­da­ja­tele li­saf­lek­si­bi­li­teeti. See on eriti kasulik, kui alguses ei ole selge, kui palju või milliseid argumente lõpuks antakse.

Args ka­su­ta­takse, kui funkt­sioo­nis akt­sep­tee­ri­takse po­sit­sioo­ni­põ­hi­selt muutuvat arvu argumente. See võimaldab sisestada eelnevalt mää­rat­le­mata arvu argumente, mis on omakorda funkt­sioo­nis kät­te­saa­da­vad tuplite kujul.

Kwargid on sarnased. Neid ka­su­ta­takse muutuva arvu ar­gu­men­tide vas­tu­võt­miseks märk­sõ­nade põhjal. See võimaldab sisestada eelnevalt mää­rat­le­mata arvu argumente, mis on funkt­sioo­nis kät­te­saa­da­vad sõ­nas­ti­kuna.

Kui funkt­sioon peab sisaldama nii muutuja po­sit­siooni- kui ka märk­sõ­naar­gu­mente, on Pythonis võimalik kasutada args ja kwargs sama funkt­siooni sees.

Go to Main Menu