Python yra populiari prog­ra­ma­vi­mo kalba. Taigi, jei pre­ten­duo­ja­te į prog­ra­muo­to­jo darbą, tu­rė­tu­mė­te būti pasirengę atsakyti į išsamius klausimus apie jos veikimą. Čia pa­tei­kia­me 10 Python interviu klausimų, kuriuos galite gauti, ir kaip į juos atsakyti.

Python interviu klausimas Nr. 1: Kuo ypatingas Python ir kokius pri­va­lu­mus turi ši kalba?

Python yra uni­ver­sa­li prog­ra­ma­vi­mo kalba, kuri gali būti naudojama ži­nia­tink­lio kūrimo, duomenų analizės ir dirbtinio intelekto srityse. Ji yra ne­pa­pras­tai patogi naudoti, uni­ver­sa­li ir našiai veikia – tai tik trys prie­žas­tys, kodėl daugelis prog­ra­ma­vi­mo spe­cia­lis­tų ją pasirenka kaip prog­ra­ma­vi­mo kalbą, kurią nori išmokti.

Tai labai pra­de­dan­tie­siems draugiška kalba su lengvai su­pran­ta­ma sintakse ir išsamia stan­dar­ti­ne bi­b­lio­te­ka, kurioje yra daug parengtų modulių ir funkcijų.

Kiti pri­va­lu­mai – didelė, aktyvi Python kūrėjų bend­ruo­me­nė, kuri prisideda prie išorinių išteklių ir palaiko kūrimo procesą. Kaip in­ter­pre­ta­ci­nė ir objektinė kalba, ji taip pat puikiai tinka greitam kodo rašymui ir jo iš­kar­ti­niam te­sta­vi­mui. Dinaminis ti­pi­za­vi­mas dar labiau padidina kalbos lankstumą.

Kaip ir Java, Python yra ne­pri­klau­so­mas nuo plat­for­mos. Jis gali būti lengvai in­te­gruo­ja­mas su kitomis kalbomis, pvz., C++, pa­leng­vin­da­mas darbą su skir­tin­go­mis plat­for­mo­mis ir po­ten­cia­lų našumo op­ti­mi­za­vi­mą.

Python interviu klausimas Nr. 2: Ką reiškia „apimtis“ Python kalboje?

„Apimtis“ reiškia sritį, kurioje kin­ta­ma­sis yra ga­lio­jan­tis. Tai yra kodo dalis, kurioje kin­ta­ma­sis yra matomas ir pri­ei­na­mas, ir kurioje kin­ta­mie­ji gali būti apibrėžti ir naudojami. Tai padaro kodą aiškesnį ir sumažina pa­va­di­ni­mų konf­lik­tus. Python turi du pag­rin­di­nius apimties tipus:

  • Vi­suo­ti­nis taikymo sritis: Šio tipo kin­ta­ma­sis api­brė­žia­mas už funkcijų ir klasių ribų. Jis pri­ei­na­mas visoje prog­ra­mo­je ir dažnai randamas kodo pradžioje arba aukš­tes­nia­me lygyje.
  • Vietinė apimtis: Vietinės apimties kin­ta­mie­ji yra apriboti funkcija, kurioje jie yra apibrėžti. Jie taip pat gali būti priskirti konk­re­čiai api­brėž­tam blokui.

Jei norite pasiekti kintamąjį už apibrėžto kodo ribų, turėsite išplėsti jo taikymo sritį spe­cia­liuo­ju teiginiu, pvz., „global“ arba „nonlocal“.

Python interviu klausimas Nr. 3: Koks yra skirtumas tarp sąrašų ir tuplų Python kalboje?

Python kalboje yra du duomenų tipai, skirti tvar­kin­gai elementų ko­lek­ci­jai saugoti: sąrašai ir tuples. Sąrašai daž­niau­siai naudojami dėl jų lankstumo. Štai keletas esminių skirtumų tarp šių dviejų tipų:

  • Kin­ta­mu­mas: sąrašus galima keisti net ir po jų sukūrimo. Juose galima pridėti, pašalinti ar keisti elementus. Kita vertus, po sukūrimo tuple elementų keisti negalima.
  • Sintaksė: sąrašai kuriamos naudojant kvad­ra­ti­nes skliaus­te­les [], o tuples – apvalias skliaus­te­les (). Skir­tin­gai nuo sąrašų, tuples taip pat galima apibrėžti naudojant kablelius vietoj skliaus­te­lių.
  • Greitis: Kuris duomenų tipas yra grei­tes­nis, priklauso nuo konteksto. Sąrašų kei­čia­mu­mas leidžia juos greičiau atlikti kai kurias ope­ra­ci­jas, pvz., didelius duomenų pa­kei­ti­mus. Tuple yra greitesni, kai reikia pasiekti elementus ko­lek­ci­jo­je.

Python interviu klausimas Nr. 4: Koks yra skirtumas tarp modulių ir paketų?

Moduliai ir paketai skiriasi savo pri­tai­ky­mu. Moduliai yra atskiri failai su kodu, o paketai yra modulių rinkiniai viename kataloge. Abu yra skirti padėti sukurti aiškią struktūrą, kuri gali būti naudinga di­des­niuo­se Python pro­jek­tuo­se. Kiti moduliai ir paketai skiriasi taip:

  • Modulis: Python kalboje moduliai yra atskiri failai, kuriuose gali būti funkcijos, klasės ir kin­ta­mie­ji. Failai turi galūnę .py ir padeda geriau or­ga­ni­zuo­ti kodą. Atskirų failų nau­do­ji­mas padeda pagerinti skai­to­mu­mą ir priežiūrą.
  • Paketas: Paketai taip pat naudojami tvarkymui, bet yra su­skirs­ty­ti į katalogus ir aplankus. Tai leidžia kodą su­skirs­ty­ti į modulius pagal hie­rar­chi­ją. Kad katalogas būtų trak­tuo­ja­mas kaip paketas, jame turi būti failas __init__.py.

Python interviu klausimas Nr. 5: Kas yra „pickling“ ir „un­pick­ling“?

„Pickling“ ir „un­pick­ling“ reiškia vidinių objektų se­ri­ja­vi­mą ir de­se­ri­ja­vi­mą. Šie procesai leidžia kon­ver­tuo­ti objektus į dve­je­tai­nių duomenų atvaizdus (pickling) arba išgauti objektus iš dve­je­tai­nių atvaizdų (un­pick­ling).

  • Ma­ri­na­vi­mas: Ma­ri­na­vi­mas kon­ver­tuo­ja objektą į dve­je­tai­nį atvaizdą. Tai svarbu, jei norite išsaugoti duomenis visam laikui arba perduoti juos į tinklą. Python kalboje ma­ri­na­vi­mui nau­do­ja­mas modulis „pickle “. Jis se­ri­ji­zuo­ja objektą, kon­ver­tuo­da­mas jį į baitų srautą.
  • Iš­sau­go­ji­mo at­sta­ty­mas: At­virkš­čiai nei iš­sau­go­ji­mo procesas, iš­sau­go­ji­mo at­sta­ty­mas atkuria anksčiau išsaugotą objektą iš jo dve­je­tai­nės formos. „Pickle“ modulis taip pat nau­do­ja­mas iš­sau­go­ji­mo at­sta­ty­mui ir de­se­ria­li­zuo­ja baitų srautą atgal į Python objektą.

Python interviu klausimas Nr. 6: Koks yra skirtumas tarp funkcijos ir lambda funkcijos?

Apskritai, abu funkcijos tipai tarnauja tam pačiam tikslui. Lambda funkcijos yra trum­pes­nės ir dažniau nau­do­ja­mos pa­pras­tes­nėms ope­ra­ci­joms ir fil­t­ra­vi­mo užduotims. Pag­rin­di­niai skirtumai tarp įprastos funkcijos ir lambda va­ria­ci­jos yra susiję su sintaksės, taikymo sritimi ir naudojimo sritimis.

  • Sintaksė: Lambda funkcijos turi kom­pak­tiš­kes­nę sintaksę, kai kalbama apie api­brė­ži­mą, kūną ir grą­ži­na­mą­ją vertę. Pa­vyz­džiui, grą­ži­na­mo­ji vertė nėra aiškiai nurodyta kaip „return“, nes išraiškos vertė grąžinama ne­tie­sio­giai. Dėl to lambda išraiškos ypač tinka trumpiems, glaus­tiems funkcijų ap­ra­šy­mams.
  • Taikymo sritis: nors įprastos funkcijos gali turėti kelis teiginius ir sudėtingą logiką, lambda funkcijos yra ribotos iki vieno išraiškos. Lambda variantai gali naudoti tik vietines kin­ta­muo­sius, kurių taikymo sritis paprastai yra ribota. Įprastos funkcijos, kita vertus, gali naudoti tiek vietinius, tiek globalius kin­ta­muo­sius.
  • Naudojimo sritys: įprastos funkcijos gali būti api­brėž­tos bet kurioje kodo vietoje. Lambda kin­ta­mie­ji dažnai naudojami ten, kur rei­ka­lin­gos trum­pa­lai­kės funkcijos, pvz., rū­šia­vi­mas, fil­t­ra­vi­mas ar žemėlapis.

Python interviu klausimas Nr. 7: Kokios pa­vel­dė­ji­mo rūšys yra Python ir kaip Python tvarko daug­kar­ti­nį pa­vel­dė­ji­mą?

Python kalboje yra keletas pa­vel­dė­ji­mo tipų. Galimas tiek viengubas, tiek daug­kar­ti­nis pa­vel­dė­ji­mas. Viengubo pa­vel­dė­ji­mo atveju viena klasė paveldi iš vienos tėvų klasės, o išvestinė klasė perima visus tėvų klasės atributus ir metodus.

Dau­gia­ly­pė­je pa­vel­dė­ji­mo sistemoje klasė paveldi iš daugiau nei vienos tėvų klasės. Išvestinė klasė gali perimti visų tėvų klasių atributus ir metodus.

Python kalboje daug­kar­ti­niam pa­vel­dė­ji­mui nau­do­ja­mas C3 li­ne­ari­za­ci­jos al­go­rit­mas arba metodų sprendimo tvarka. Al­go­rit­mas nustato metodų sprendimo tvarką daug­kar­ti­nio pa­vel­dė­ji­mo hie­rar­chi­jo­je. Tai užtikrina, kad atributai ir metodai būtų ieškoma nuo­sek­liai ir nuspėjama tvarka. Python naudoja li­ne­ari­za­ci­ją, kad išvengtų žinomų pa­vel­dė­ji­mo problemų, pvz., deimanto problemos.

Python interviu klausimas Nr. 8: Kas yra „monkey patching“?

„Monkey patching“ reiškia esamo kodo mo­di­fi­ka­vi­mą vykdymo metu. Pa­vyz­džiui, tai galima padaryti pridedant ar pa­kei­čiant funkcijas ar metodus. „Monkey patching“ leidžia di­na­miš­kai keisti kodą nemo­di­fi­kuo­jant ori­gi­na­laus klasės ar funkcijos šaltinio kodo. Tai gali būti naudinga taisant klaidas, plečiant funk­cio­na­lu­mą ir pri­tai­kant bi­b­lio­te­kų ar sistemų dalis. Kalbant apie klases, metodai taip pat gali būti perrašomi, o nauji metodai gali būti pridedami.

Python interviu klausimas Nr. 9: Kuo skiriasi Django, Pyramid ir Flask?

Django, Pyramid ir Flask yra Python ži­nia­tink­lio prog­ra­ma­vi­mo aplinkos, kurios skiriasi savo požiūriu, su­dė­tin­gu­mu ir pri­ei­na­mo­mis funk­ci­jo­mis. Čia pa­tei­kia­mi pag­rin­di­niai jų skirtumai.

Django

Django yra aukšto lygio ži­nia­tink­lio sistema, siūlanti įvairias pa­pil­do­mas funkcijas. Daugelis funkcijų ir modulių yra iš anksto įdiegti. Pa­vyz­džiui, Django turi savo objektų-santykių at­vaiz­da­vi­mą duomenų bazės sąveikai. Ji taip pat teikia in­te­gruo­tą ad­mi­nist­ra­vi­mo sąsają, kuri su­pa­pras­ti­na duomenų modelių valdymą.

URL dizainas ir programos struktūra yra iš anksto apibrėžti, o tai pa­leng­vi­na prog­ra­ma­vi­mo procesą. Django linkęs daug dėmesio skirti kon­ven­ci­joms. Jis taip pat siūlo in­te­gruo­tą au­ten­tiš­ku­mo pa­tvir­ti­ni­mą ir au­to­ri­za­ci­ją bei turi tokias funkcijas kaip formulės ir CSRF apsauga. Šis fra­me­wor­kas la­biau­siai tinka pa­žen­gu­siems var­to­to­jams, nes dėl didelio funkcijų skaičiaus ir griežtos struk­tū­ros jo mokymasis yra su­dė­tin­gas.

Piramidė

Prie­šin­gai nei išsamus Django, Pyramid yra lengvas ir lankstus. Jis leidžia kūrėjams pa­si­rink­ti pa­gei­dau­ja­mas bi­b­lio­te­kas ir kom­po­nen­tus ir yra sukurtas taip, kad būtų pri­tai­ko­mas ir iš­plės­ti­nas. Šis pagrindas palaiko įvairių rūšių programas, nuo mažų projektų iki didelių, sudėtingų programų.

Skir­tin­gai nei Django, Pyramid neturi nu­sta­ty­tos programos struk­tū­ros, todėl kodą galima or­ga­ni­zuo­ti laisviau. Taip pat galima pa­si­rink­ti šablonų variklį, nes Pyramid nenaudoja nu­ma­ty­to­jo.

Lankstus nau­do­ji­mas ir minimalūs nu­sta­ty­mai žymiai pa­leng­vi­na mokymąsi, todėl „Pyramid“ labiau tinka pra­de­dan­tie­siems.

Kolba

Flask yra va­di­na­ma­sis mik­rof­ra­me­wor­kas. Jis buvo sukurtas taip, kad būtų lengvas ir paprastas naudoti. Tam, kad tai būtų lengviau, fra­me­wor­kas siūlo tik bū­ti­niau­sius dalykus. Jei reikia, su Flask galima pridėti bi­b­lio­te­kas.

Flask naudoja paprastą ir aiškų API, kuris leidžia greitai pradėti kurti. Šis fra­me­wor­kas pagrįstas WSGI įrankių rinkiniu „Werkzeug“ ir naudoja Jinja2 šablonų variklį. Kūrėjai taip pat gali in­te­gruo­ti kitus kom­po­nen­tus pagal poreikį.

Galų gale, jūsų pa­si­rink­ta platforma pri­klau­sys nuo jūsų projekto poreikių ir to, kiek lankstumo reikia. Django siūlo daugybę in­te­gruo­tų funkcijų ir aiškią struktūrą. Pyramid pri­o­ri­te­tą teikia lanks­tu­mui ir mastelio keitimui. O Flask ori­en­tuo­tas į pa­pras­tu­mą ir mi­ni­ma­liz­mą.

Python interviu klausimas Nr. 10: Ką Python kalboje reiškia „args“ ir „kwargs“?

Šie du terminai reiškia po­zi­ci­nius ar­gu­men­tus (args) ir raktinių žodžių ar­gu­men­tus (kwargs). Abu yra kon­ven­ci­jos, kurios dažnai nau­do­ja­mos api­brė­žiant funkcijas su kintamu argumentų skaičiumi, su­tei­kiant kūrėjams papildomą lankstumą. Tai ypač naudinga, jei iš pat pradžių nėra aišku, kiek ir kokių argumentų bus pateikta ga­liau­siai.

Args naudojami, kai funkcija priima kintamą argumentų skaičių pagal poziciją. Tai leidžia įvesti iš anksto ne­nu­sta­ty­tą argumentų skaičių, kurie savo ruožtu funkcija gali būti naudojami kaip tuples.

Kwargs yra panašūs. Jie naudojami priimti kintamą argumentų skaičių pagal raktinius žodžius. Tai leidžia įvesti iš anksto ne­nu­sta­ty­tą argumentų skaičių, kurie funkcijos metu yra prieinami kaip žodynas.

Jei funkcija turi turėti tiek kintamųjų pozicinių, tiek raktinių žodžių argumentų, Python kalboje toje pačioje funk­ci­jo­je galima naudoti args ir kwargs.

Go to Main Menu