Loading...

Ən çox soruşulan Python müsahibə sualları və cavabları

Günay Qadimalıyeva Author
13 İyul, 2022 icon-read 3543 oxunma

Ən çox soruşulan Python müsahibə sualları və cavabları

Əgər siz Python üçün texniki müsahibə mərhələsinə hazırlaşırsınızsa və ya işəgötürənlər tərəfindən ən çox nə kimi sualların soruşulduğu sizlər üçün maraqlıdırsa o zaman bugünkü  blog mövzumuz sizin üçün faydalı olacaqdır. Suallar müxtəlif mövzuları əhatə edir və bu blogun sonunda siz artıq Python üzrə əsas anlayışları da mənimsəmiş olacaqsınız. Gəlin başlayaq!

1. Nəyə görə Python? Onun nə kimi üstünlükləri var?

Python yüksək səviyyəli, ümumi təyinatlı  və masa üstü tətbiqlər, veb-saytlar, onlayn proqramlar yaratmaq üçün istifadə edilə bilən proqramlaşdırma dilidir. Pythonu digərlərindən fərqləndirən bir sıra üstün cəhətləri var. Bunlara aşağıdakılar daxildir:

  • Açıq qaynaqlıdır
  •  Sadə sintaksisinin olması onun öyrənilməsini daha praktik edir.
  • İstifadəçilərin işini asanlaşdıran NumPy, Pandas və s. kimi kitabxanaları mövcuddur.
  • Data növünü təyin etməyə ehtiyac yoxdur
  • Obyekt yönümlü proqramlaşdırma dilidir
  • İnterpreted language olduğundan kodu sətir-sətir oxuyur və hər hansı bir hissədə xəta olarsa error verir.
  • Java, C++ kimi proqramlaşdırma dilləri ilə müqayisədə daha az kod sətri yazmaqla daha çox funksionallıq təmin edir.

2. Modullar nədir?

Modullar başqa Python proqramı daxilində idxal edilə bilən Python kodunu ehtiva edən “.py” uzantılı fayllardır. Sadə dillə desək, modulu kod kitabxanası və ya proqramınıza daxil etmək istədiyiniz funksiyalar dəstini ehtiva edən fayl ilə eyni hesab edə bilərik. Kod modullar şəklində təşkil edildikdə, onu başa düşmək və istifadə etmək daha asan olur. Biz böyük proqramları kiçik, idarə oluna bilən və mütəşəkkil fayllara bölmək üçün modullardan istifadə edirik. Modullar iki kateqoriyaya bölünür:

  • Quraşdırılmış (built-in) modullar – sys, os, datetime, math,random, statistics və s. kimi modulları idxal edərək asanlıqla istifadə edə bilərik.
  • İstifadəçi tərəfindən təyin edilən modullar(user-defined)                                                                                                                                                                                                                                                                                                          

    3. List və tuple arasındakı fərq nədir?  

List və tuplenin hər biri məlumatların toplanması üçün istifadə olunur. Lakin aralarında müəyyən fərqlər mövcuddur. Ən əsas fərq odur    ki, list dəyişkəndir(mutable) , amma tuple immutable, yəni dəyişməzdir. Bu, o deməkdir ki, biz listi yaratdıqdan sonra onun üzərində        dəyişikliklər edə bilərik, amma tupleda bunu etmək mümkün deyil. Buna görə də Python tuple üçün minimum yaddaş ayırır, yəni tuple    listə nəzərən daha səmərəli yaddaş tutumuna malikdir.

     4. Pythonda yerli və global dəyişənlər nələrdir?

Yerli (local) dəyişənlər bir funksiya daxilində təyin edilən və yalnız yaradıldıqları funksiya daxilində əlçatan olan dəyişənlərdir. Yəni      biz   onları global mühitdə (scope) istifadə edə bilmirik. Lakin global dəyişənlər hər hansı funksiyadan kənarda təyin edilir və həm        funksiyaların xaricində, həm də daxilində istifadə oluna bilir.

     5. MVC nədir?

Proqramistlər Software design patternlərdən istifadə edirlər. Bu onlara yazacaqları program üzərində bir dizayn qurmağa yardımçı  olur.  Hansı ki, bu dizayn daha sonra həmin proqram üzərində nəyisə axtarmaq istədikdə, yaxud başqa bir proqramistin həmin layihə  üzərində işlədiyi müddətdə onun strukturunu asanlıqla anlamasına köməklik edir. MVC , yəni  Model-View-Controller də həmin  patternlərdən biridir.

  • Model - Databaza ilə məlumat alış-verişini həyata keçirən bir təbəqədir.
  • View -  İstifadəçiyə ekranda görünən hissədir.
  • Controller – Bu isə View ilə Model arasında olan məntiqi hissədir.Hansı ki, controller istifadəçinin nə istədiyini anlayır, həmin istəyə uyğun databazadan məlumatları çəkir və  sonra həmin məlumatları view-a göndərir. Bundan sonra  isə məlumatlar istifadəçiyə görünür.

      6. CSRF token nədir?

Veb saytlara edilən hücümlardan biri də CSRF adlanır. (Сross Site Request Forgery ). CSRF istifadə edilərək saytlara saxta sorğular  göndərilir, istifadəçinin şifrəsi dəyişdirilir, yaxud şifrənin dəyişilməsi üçün lazım olan məxfi söz əldə olunur. Bu halda “cinayətkar ”      istifadəçi adından serverə müraciət göndərə və məsələn, onun hesabından pul çıxmasına səbəb ola bilər. Ona görə də server bu tip  əməliyyatları yoxlamalıdır. Saytlararası sorğu saxtakarlığının qarşısını almağın ən geniş yayılmış üsulu istifadəçiyə random olaraq  yaradılan və unikal  olan “token” təqdim etməkdir. Bu proses isə aşağıdakı etaplarla həyata keçir:

Veb server bir token yaradır. Və bu token məxfi məlumat olaraq formda saxlanılır. Yəni biz onu front hissədə görə bilmirik. İstifadəçi  post metodunu həyata keçirdikdə back hissədə sistem tərəfindən yaradılan token ilə post metodu ilə göndərilən token qarşılaşdırılır.  Bu tokenlərin uyğunlaşmağı onu göstərir ki, bu sorğu bir “cinayətkar ” tərəfindən deyil də, həqiqi istifadəçi tərəfindən göndərilir.   Tokenlər arası uyğunluq olmazsa isə  sorğu rədd edilir, beləliklə başqa saytlardan gələn zərərli sorğuların qarşısı alınmış olur.

      7. Authentification və Authorization prosesləri nədir?

Authentification - sistemə daxil olarkən istifadəçinin kim olduğunu sübut etmək üçün aparılan  prosesdir. Məsələn, login prosesi authentification, yəni doğrulama prosesidir. Loru dildə desək istifadəçiyə “Kimsən?” sualı verilir. Və çox hallarda bu sual istifadəçi adı   və şifrə formasında cavablanır.  Bu proses ona görə vacibdir ki, əgər düzgün təhlükəsizlik tədbirləri olmazsa,  kart nömrələri və s. kimi   məxfi olması lazım olan istifadəçi məlumatları hakerlərin əlinə keçə bilər. Authorization isə icazələrimizi yoxlayan prosesdir. Məsələn,   biz  login oluruq amma başqa bir istifadəçinin adından post paylaşa , rəy yaza bilmirik, bunu Authorization təmin edir. 

      8. Dictionary nədir?

Dictionary pythondakı built-in data növlərindən biridir. Key-value (açar söz- dəyər) formasında fiqurlu mötərizələr daxilində yazılır.  Şəkildə verilmiş nümunənin nəticəsi:  id: 1

Dictionarylər mutable , yəni, dəyişiləbiləndir. Dictionarydəki dəyərlər istənilən obyekt tipi ola bilər. Açar sözlər isə immutable, yəni, dəyişə bilməyəndir. Bu o deməkdir ki, keylər integer, string, tuple ola bilər, amma list ola bilməz. 

9. remove(), del, pop() arasındakı fərqlər nələrdir?

 

  Del metodu indeksinə əsasən elementi silir:

  Pop() arqument qəbul etməsə listin sonuncu elementini silir, arqument daxil etdikdə isə listdə həmin indeksdəki elementi silir.

 10. Pythonda exception handling necə həyata keçirilir?

Exception handling gözlənilməyən anlarda proqramımızın error vermesi  və dayanması əvəzinə bizim istədiyimiz formada cavab          verməsini təmin etmənin bir üsuludur. Burada try, except, finally, assert sözlüklərindən istifadə olunur. Gəlin aşağıdakı nümunəyə    baxaq:

 Göründüyü kimi proqram try blokumuzu listimizdəki elementlərin hər biri üçün yoxlayır. Bölmə əməliyyatı aparılması mümkün     olmadıqda except blockuna daxil olaraq “Division is not possible!” yazısını çap edir. Bölmə əməliyyatı mümkün olduqda isə try blocku     doğru olmuş olur və nəticəmiz çap olunur.

11. Listi necə hissələrə bölmək olar?

Listdə slicing (hissələrə bölmək) methodu 3 arqument qəbul edə bilir: list[start:stop:step]

Step optional (istəyə bağlı) arqumentdir və elementlərin qaytarıldığı intervalı göstərir.

Output:

12. Pythonda faylı hansı methodların köməyi ilə silmək olar ?

Bunun üçün ilk yol remove() metodundan istifadə etməkdir:

Digər bir üsul isə unlink() metodudur:

Göründüyü kimi bu methodları işə saldıqda main.py faylı silinmiş olur.

13. Dekorator nədir?

Yazılmış kodun strukturunu dəyişmədən ona əlavələr etməyimizə kömək edir. Yəni, funksiyanı dəyişmirik,  amma ona başqa funksionallıqlar əlavə edirik. Bir decorator yaradıb ixtiyari bir funksiyanın yuxarı hissəsində çağırdıqda ilk öncə decorator işə düşür və yazdığımız funksiya decorator daxilində çalışır. Beləliklə funksiyanin nəticəsini əldə edə bilirik. Həmçinin də onun vasitəsi ilə funksiyanın girişlərinə və çıxışlarına da nəzarət edə bilərik. Bəs bu nə deməkdir? Məsələn tutaq ki, sadə bölmə əməliyyatı icra edən bir funksiya yazmışıq, bu zaman decorator daxilində şərt verə bilərik ki, əgər  b==0 olarsa “0-a bölmə əməliyyatı aparıla bilməz!” yazısı çap olunsun. Bunu da qeyd edək ki, decoratorlardan istifadə kod təkrarının da qarşısını alır. Əgər eyni kodu birdən çox funksiyada işlətmək istəyirsinizsə o zaman decoratordan istifadə edə bilərsiniz. Decorator @decorator_name  formasında çağırılır.

14. Obyekt yönümlü proqramlaşdırma (OOP) dilində inheritance anlayışı nədir?

OOP-də 3 əsas prinsip var: inheritance, encapsulation, polymorphism. İnheritance prinsipi hərfi tərcümədən də məlum olduğu kimi miraslığı bildirir. Daha ətraflı desək, bir class digər classın atribut və metodlarını miras alır. Miras alan class derived , miras verən class isə base class adlandırılır.

Məsələn, aşağıdakı nümunədə Vehicle parent classdır. Və onun xüsusiyyətləri Car, Plane , Boat classlarına “miras qalacaqdır”. Race Car isə Car classından inheritance alır. Buna görə də Race Car classına həm Vehicle, həm də Car classlarının xüsusiyyətləri aid olur:

15. Pass, continue, break arasındakı fərq nədir?

Pass – heç bir şey etmədən keçmək deməkdir. Aşağıdakı ilk nümunədə i > 3 olduqda heç bir əməliyyat icra olunmur. 

Continue – növbəti addımla davam edir və hazırkı addımı dayandırır.İkinci nümunədə  i > 3 olduqda növbəti i-ni yoxlamağa keçir.

Break – ardıcıllığı pozur və artıq loop təkrarlanmır.Son nümunədə else şərtinə ilk daxil olduğu anda bir dəfə i-ni çap edir və sonra loopdan çıxır, beləliklə proqram dayanır.

            

                                       

16. Split() və join() funksiyaları nəyə xidmət edir?

Əgər biz kodumuzda stringləri müəyyən hissələrə ayırmaq istəyiriksə bu zaman split() funksiyasından istifadə edə bilərik. Əgər split() üçün arqument daxil etməsək bu zaman boşluqlara görə  stringi böləcəkdir. Amma əgər arqument daxil etsək həmin arqumentə görə böləcəkdir.

Join() funksiyası isə arqument olaraq qəbul etdiyi simvol ilə elementləri  ayırmağa xidmət edir.

17. “is” və “==” arasındakı fərq nədir?

“==” operatoru iki obyektin dəyərlərinin bərabər olub-olmadığını yoxlayır. Pythonda bu bərabərlik operatoru olaraq adlandırılır. “is” identity operatorudur. Hər iki obyektin eyni yaddaş yerinə istinad edib-etmədiyini yoxlayır. Obyekt olaraq yaddaşda ayrı-ayrı yerlər tutursa “False” nəticəsini qaytarır.

  

18. Pythonda hansı fayl formatları ilə işləmək olur ?

Python txt, Json, html , csv kimi fayl formatlarını oxuya, yaza bilir. Komputerimizdə olan hər bir fayl hard diskimizde yerləşir. Open() funksiyası ilə pythona əmr edirik ki, həmin faylları RAM-a yükləsin. Və sonra processor vasitəsilə bizim kodlar RAM-a yüklənmiş fayllar üzərində müəyyən əməliyyatlar icra edə bilir. İşimiz bitdikden sonra isə biz həmin faylı bağlamalıyıq ki, o RAM-dan silinsin. Amma əgər “with” metodu ilə açırıqsa bu zaman yenidən close() etməyimizə ehtiyac yoxdur. Çünki “with” blokundan kənarda bizim faylımız bağlanmış olur.

19. Flask və Django nədir? Fərqləri nələrdir?

Flask və Django Pythonda yazılmış web frameworklərdir. Flask daha az tələblərə malik, daha kiçik proqramlar üçün nəzərdə tutulmuşdur. Django isə əksinə, daha böyük layihələrdə istifadə olunur. Hər ikisi açıq-qaynaqlıdır. Django MVC (Model-View-Controller) arxitekturasına malikdir. Onlar arasındakı əsas fərqlərdən də biri budur ki, Djangonun özünün admin interfeysi hazır üzərində gəlir. Bundan əlavə  Django-da ORM üçün dəstək var.

20. ORM nədir?

ORM -  “Object Relational Mapping” . Tərtibatçılar PostgreSQL, SQLite, MySQL və s. daxil olmaqla, müxtəlif növdə verilənlər bazası ilə işləmək üçün ORM çərçivəsindən istifadə edə bilərlər. Tərtibatçılar ümumi verilənlər bazası əməliyyatlarını yerinə yetirmək üçün uzun SQL sorğularını yazmalı deyillər. SQLAlchemy bu ORM-lərdən biridir.

Müsahibələrdə bizə hansı sualların ünvanlanacağını heç vaxt bilə bilmərik. Buna görə də müsahibə mərhələsi üçün hazırlaşmağın ən yaxşı yolu müxtəlif məqalələr oxumaqla yanaşı həmin məqalələrdəki nümunələrə əsasən praktika etməkdir. Beləliklə, həm də yaxşı kod yazma bacarığımızı inkişaf etdirmiş olacağıq.

Ümid edirəm ki, mövzumuz sizin üçün faydalı oldu.