Agar Python dasturlash tilida kod yozsangiz va ushbu tilni yoqtirsangiz demak bu post siz uchun. Sizni hozir intervyu qilib ko'ramiz, va qanchalik bu tilni yaxshi bilishingizni aniqlab olamiz.
1-Savol
Savol: Pastdagi kod nima uchun bunday ishlashini tushuntirib bering:
Javob: Python -5 -- 256 oralig'idagi raqamlarni cache qiladi manba. Buning javobi Python Memeroy Management posti orqali bafurja o'qib chiqishingiz mumkin.
2-Savol
Savol:
Pythonda import
qanday ishlaydi? Nima uchun pastdagi kod bunday natija qaytarayabdi?
Javob:
Frozen modules, ya'ni Python interpreter siz import qilmoqchi bo'lgan modulni sys.modules dictionary'siga faqat bir marotaba yuklab oladi va uni qayta-qayta ishlatadi. Faqat bir marotaba yuklab olishini ko'zingiz bilan ko'rish uchun python3 interactive oynasini (terminalni oching va python3, enter tugmasini bosing) oching va __hello__
modulini import
qiling:
3-Savol
Savol:
__pycache__
nima? Va uning ichidagi .pyc
faylchi?
Javob: Har qanday Python dasturni ishga tushirganingizda, interpreter kodingizni bytecode'ga compile qiladi (jarayonni soddalashtirish uchun) va natijani **pycache** nomli folder'da saqlaydi [manba].
Agar folder ichiga bir nazar solsangiz, .pyc
yoki .pyo
fayllarni ko'rasiz. Python interpreter kodlarni line-by-line o'qib ishga tushirmaydi, balkim cached .pyc
bytecode'ni virtual mashinaga beradi. Virtual mashina uni bytecode instruksiyasiga qarab uni ishga tushiradi. Ha Java dasturlash tilidagi jarayonga o'xshab ketadi.
4-Savol
Savol: Exception handling qilishni dasturni performance'iga qanday ta'siri bor? Agar u dasturni sekinlashtirsa qanday sekinlashishni oldini olgan bo'lardingiz?
Javob: Python exception handling uchun Stack ishlatadi. Qachonki exception yuzaga kelsa, interpreter call stack'dan exception handlerni qidiradi (try-except deb yozgan kodingizni). Agar handler yozmagan bo'lsangiz, Python dasturni terminate qiladi va traceback'ni print qilib terminalga chiqaradi.
Python sizni LBYL ("look before you leap") uslubidan ko'ra ko'proq, EAFP ("it's easier to ask for forgiveness than permission") uslubida kod yozishga undaydi. Kodingiz samarali va sodda bo'lishi uchun. Tasavvur qiling foydalanuvchilar dasturga raqamlar listini beradi [1, 2, 3, 4] va dastur uni summasini xisoblab foydalanuvchiga qaytaradi. Agar dasturda 90% xolatda foydalanuvchilar raqamli list kiritishiga amin bo'lsangiz try-except yozsangiz bo'ladi. Agar unday bo'lmasa if-else orqali control flow'ni boshqarganingiz yaxshiroq. (Shaxsiy tajriba va Core Python Developerlar maslahatidan)
5-Savol
Savol:
Nima uchun pastdagi kod False
qaytarayabdi? Axir ikkisini ham qiymati bir xil bo'lsa. Buni qanday to'g'rilagan bo'lardingiz?
Javob: Buning uchun 2ta yechim bor.
Yechim-1: Dunder methods ya'ni double underscore methods deb tarjima qilinadi. Havola orqali kirib ko'proq o'rganishingiz mumkin.
Yechim-2: dataclasses moduli yordamga keladi. Agar yuqoridagidek barcha holatlar uchun dunder method yozishni istamasangiz dataclass decoratorini ishlating, chunki u siz uchun kerakli dunder metodlarni o'zi yozib beradi.
6-Savol
Savol: Metaclass va class o'rtasida qanday farq bor? Metaclass yaratib ko'rsata olasizmi?
Javob: Class'lar object yaratishadi va class'larni o'zi ham object xisoblanadi. Metaclass class'lar yaratadi.
7-Savol
Savol: Bizda 3 xil list mavjud.
Agar biz range(1, 10_000_000)
list yaratsak va sonlar yig'indisini sum()
qilib tekshirsak oddiy list()
millisekundlarda qolganlarga nisbatan juda tez xisoblayabdi. Savol nima uchun tez va qanday qilib bunchalik tez xisoblayabdi?
Javob: Bu siz uchun maxsus savol edi. Javobini menga email orqali ([email protected]) yuboring.
Post sizga maksimal foyda keltirishi uchun uni o'rganing va do'stlaringizga o'rgating (bo'lishing).