Припремате ли се за интервјуе за позиције које захтевају знање Питхон-а? Или вас једноставно занима колико добро познајете овај програмски језик? Нема проблема! У овом чланку ћемо проћи кроз низ питања и одговора који ће вам помоћи да се припремите и процените своје знање.
Овај чланак вам може помоћи да разумете каква питања можете очекивати на интервјуима за посао везан за Питхон. Такође, може послужити као алат за самопроцену ваших вештина у овом програмском језику. Препоручујемо вам да прво покушате да одговорите на питања сами, пре него што погледате предложене одговоре, како бисте добили реалну слику свог знања. Кренимо одмах на питања!
Питања су структурисана у различите категорије, зависно од тема које покривају. Свака категорија садржи питања заједно са детаљним одговорима. Наравно, можете прилагодити одговоре својим речима, али је важно задржати суштину и тачност. Циљ је да интервјуер не стекне утисак да само рецитујете научено.
Питхон Програмски Језик
#1. Шта је Питхон?
Питхон је интерпретирани програмски језик високог нивоа који се користи у различите сврхе. Захваљујући великом броју библиотека и фрејмворка треће стране, Питхон омогућава израду практично било које врсте апликација. То је један од најпопуларнијих језика у напредним технолошким областима, као што су вештачка интелигенција и наука о подацима.
#2. Која је основна разлика између интерпретера и компајлера?
Интерпретер преводи код линију по линију у машински код током извршавања, док компајлер преводи цео блок кода у машински код пре извршавања.
#3. Да ли је Питхон статички или динамички типизиран језик?
Питхон је динамички типизиран језик.
#4. Шта подразумевате под динамички типизираним језиком?
Динамички типизирани језици врше проверу типова променљивих током извршавања програма. Примери динамички типизираних језика су Питхон, ЈаваСцрипт и Руби.
Бонус: Статички типизирани језици врше проверу типова променљивих у току компилације. Неки статички типизирани језици су Ц++, Ц и Јава.
#5. Наведите неке примене Питхон-а.
Питхон има једноставну синтаксу која је лака за учење и подсећа на енглески језик. Такође има огромну заједницу програмера, што омогућава приступ бројним пакетима треће стране за различите видове развоја апликација. Може се користити за креирање веб апликација, апликација са графичким корисничким интерфејсом (ГУИ), командних линија (ЦЛИ) и још много тога.
Једна од најпопуларнијих примена Питхон-а је аутоматизација. Може се лако користити за креирање скрипти за аутоматизацију задатака, као што су чишћење диска, слање имејлова, прикупљање података о ценама производа, итд.
Питхон је такође један од најпопуларнијих језика који се користе у области науке о подацима.
#6. Које сте апликације ви креирали користећи Питхон?
Написао сам бројне скрипте за аутоматизацију како бих елиминисао рутинске и досадне задатке, укључујући скрипте за прикупљање података о ценама производа и доступности.
Такође сам радио са фрејмворцима као што су Дјанго и Фласк за развој веб апликација и креирао сам неколико веб апликација користећи их.
Напомена: Ово је само пример одговора. Ваш одговор може бити сасвим другачији. Важно је да опишете различите области у којима сте користили Питхон. Ако је могуће, покажите и конкретне примере ваших апликација.
Типови Података
#7. Који су уграђени типови података у Питхон-у?
Питхон има различите уграђене типове података. Ту спадају: инт (цели бројеви), float (бројеви са покретним зарезом), complex (комплексни бројеви), bool (логички типови), list (листе), tuple (торке), set (скупови), dict (речници) и str (ниске).
Напомена: Не морате навести све типове података који постоје у Питхон-у. Спомените оне које најчешће користите. Интервјуер ће можда постављати додатна питања у зависности од вашег одговора.
#8. Која је разлика између листе и торке?
И листе и торке се користе за чување колекције објеката. Главна разлика између њих је у томе што је „листа променљив објекат, док је торка непроменљив објекат“.
#9. Шта су променљиви и непроменљиви типови података?
Променљиви типови података се могу мењати након што су креирани. Неки од променљивих објеката у Питхон-у су list, set и dict.
Непроменљиви типови података се не могу мењати након што су креирани. Неки од непроменљивих објеката у Питхон-у су str и tuple.
#10. Објасните неке методе листа.
1. append – Ова метода се користи за додавање елемента на крај листе.
>>> a = [1, 2] >>> a.append(3) >>> a [1, 2, 3]
2. pop – Ова метода се користи за уклањање елемента са листе. Уклониће последњи елемент ако не дамо никакав индекс као аргумент, или ће уклонити елемент на датом индексу ако га дамо.
>>> a = [1, 2, 3, 4, 5] >>> a.pop() 5 >>> a [1, 2, 3, 4] >>> a.pop(1) 2 >>> a [1, 3, 4]
3. remove – Ова метода се користи за уклањање одређеног елемента са листе. Морамо да наведемо елемент као аргумент који желимо да уклонимо. Ова метода уклања прву појаву елемента.
>>> a = [1, 2, 2, 3, 4] >>> a = [1, 2, 3, 2, 4] >>> a.remove(1) >>> a [2, 3, 2, 4] >>> a.remove(2) >>> a [3, 2, 4]
4. sort – Ова метода се користи за сортирање листе у растућем или опадајућем редоследу.
>>> a = [3, 2, 4, 1] >>> a.sort() >>> a [1, 2, 3, 4] >>> a.sort(reverse=True) >>> a [4, 3, 2, 1]
5. reverse – Ова метода се користи за преокретање редоследа елемената у листи.
>>> a = [3, 2, 4, 1] >>> a.reverse() >>> a [1, 4, 2, 3]
Напомена: Постоје и друге методе као што су del, insert, count, итд. Не морате објашњавати сваку методу листе интервјуеру. Довољно је да објасните две или три методе које најчешће користите.
#11. Објасните неке методе низова.
1. split – Ова метода се користи за дељење низа на мање делове. Враћа листу као резултат. Подразумевано, дели низ по размацима. Такође можете навести делимитер као аргумент методе.
>>> a = "This is techblog.co.rs" >>> a.split() ['This', 'is', 'Geekflare'] >>> a = "1, 2, 3, 4, 5, 6" >>> a.split(", ") ['1', '2', '3', '4', '5', '6']
2. join – Ова метода се користи за спајање листе ниски. Комбинује ниске у један низ са делимитером који задајете.
>>> a = ['This', 'is', 'Geekflare'] >>> ' '.join(a) 'This is techblog.co.rs' >>> ', '.join(a) 'This, is, techblog.co.rs'
Напомена: Неке друге корисне методе низова су: capitalize, isalnum, isalpha, isdigit, lower, upper, center, итд.
#12. Шта је негативно индексирање у листама?
Индекс се користи за приступ елементима листе. Нормално индексирање листе почиње од 0.
Слично нормалном индексирању, негативно индексирање се такође користи за приступ елементима листе, али нам омогућава да приступамо индексима са краја листе. Почетак негативног индексирања је -1 и наставља се до -2, -3, -4, итд., све до дужине листе.
>>> a = [1, 2, 3, 4, 5] >>> a[-1] 5 >>> a[-3] 3 >>> a[-5] 1
#13. Објасните неке методе речника.
1. items – Ова метода враћа кључ:вредност парове речника као листу торки.
>>> a = {1: 'techblog.co.rs', 2: 'techblog.co.rs Tools', 3: 'techblog.co.rs Online Compiler'} >>> a.items() dict_items([(1, 'Geekflare'), (2, 'Geekflare Tools'), (3, 'Geekflare Online Compiler')])
2. pop – Ова метода се користи за уклањање пара кључ:вредност из речника. Прихвата кључ као аргумент и уклања га из речника.
>>> a = {1: 2, 2: 3} >>> a.pop(2) 3 >>> a {1: 2}
Напомена: Неке друге методе речника су: get, keys, values, clear, итд.
#14. Шта је сечење у Питхон-у?
Сечење се користи за приступ подскупу података из секвенцијалних типова података. Враћа делове података на основу аргумената које наведете. Враћа исти тип података као оригинални тип података.
Сечење прихвата три аргумента: почетни индекс, крајњи индекс и корак. Синтакса сечења је: променљива[start:end:step]. Аргументи нису обавезни. Можете користити празан двотачку (:) да вратите све податке.
>>> a = [1, 2, 3, 4, 5] >>> a[:] [1, 2, 3, 4, 5] >>> a[:3] [1, 2, 3] >>> a[3:] [4, 5] >>> a[0:5:2] [1, 3, 5]
#15. Који типови података дозвољавају сечење?
Можемо користити сечење на list, tuple и str типовима података.
#16. Шта су оператори за распакивање у Питхон-у? Како се користе?
Оператори * и ** су оператори за распакивање у Питхон-у.
Оператор за распакивање * се користи за додељивање више вредности различитим променљивим из секвенцијалних типова података.
>>> items = [1, 2, 3] >>> a, b, c = items >>> a 1 >>> b 2 >>> c 3 >>> a, *b = items >>> a 1 >>> b [2, 3]
Оператор за распакивање ** се користи са dict типовима података. Распакивање у речницима не функционише исто као и распакивање код секвенцијалних типова података.
Распакивање у речницима се углавном користи за копирање кључ:вредност парова из једног речника у други.
>>> a = {1:2, 3:4} >>> b = {**a} >>> b {1: 2, 3: 4} >>> c = {3:5, 5:6} >>> b = {**a, **c} >>> b {1: 2, 3: 5, 5: 6}
Напомена: За више информација о овим операторима, погледајте додатни чланак.
Услови и Петље
#17. Да ли Питхон има switch наредбу?
Не, Питхон нема switch наредбу.
#18. Како можете имплементирати функционалност switch наредбе у Питхон-у?
Функционалност switch наредбе може се постићи коришћењем if и elif наредби.
>>> if a == 1: ... print(...) ... elif a == 2: ... print(....)
#19. Шта су break и continue наредбе?
break – Наредба break се користи за прекид петље. Извршавање кода се наставља изван петље.
>>> for i in range(5): ... if i == 3: ... break ... print(i) ... 0 1 2
continue – Наредба continue се користи за прескакање извршавања преосталог кода у текућој итерацији петље. Извршавање се наставља са следећом итерацијом.
>>> for i in range(5): ... if i == 3: ... continue ... print(i) ... 0 1 2 4
#20. Када се извршава else блок кода у while и for петљама?
Код унутар else блока се извршава након што се све итерације петље заврше нормално. Код унутар else блока се не извршава ако се петља прекине помоћу break наредбе.
#21. Шта су comprehension листе и речника?
Разумевање листа и речника је синтаксно скраћена форма за употребу for-петљи.
>>> a = [i for i in range(10)] >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a = {i: i + 1 for i in range(10)} >>> a {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10} >>>
#22. Како функционише функција range()?
Функција range() враћа секвенцу бројева у одређеном опсегу, са дефинисаним почетком, крајем и кораком. Синтакса функције range() је: range(start, stop[, step]).
Аргумент stop је обавезан. Аргументи start и step су опциони. Подразумеване вредности за start и step су 0 и 1, респективно.
>>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 10)) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 10, 2)) [1, 3, 5, 7, 9] >>>
Функције
#23. Шта су параметри и аргументи?
Параметри су имена која су дефинисана у функцији.
Аргументи су вредности које се прослеђују функцији приликом позивања.
#24. Које су различите врсте аргумената у Питхон-у?
Постоје четири главне врсте аргумената: позициони аргументи, подразумевани аргументи, аргументи кључне речи и произвољни аргументи.
Позициони аргументи: Ово су нормални аргументи које дефинишемо у корисничким функцијама. Сви позициони аргументи су обавезни при позивању функције.
>>> def add(a, b): ... return a + b ... >>> add(1, 2) 3 >>> add(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: add() missing 1 required positional argument: 'b' >>>
Подразумевани аргументи: Можемо дати подразумевану вредност аргументима у самој дефиницији функције. Ако корисник не проследи вредност за тај аргумент, функција ће користити подразумевану вредност.
>>> def add(a, b=3): ... return a + b ... >>> add(1, 2) 3 >>> add(1) 4
Аргументи кључне речи: Можемо навести име аргумента при позивању функције и доделити му вредност. Аргументи кључне речи нам помажу да избегнемо редослед који је обавезан код позиционих аргумената.
>>> def add(a, b): ... print("a ", a) ... print("b ", b) ... return a + b ... >>> add(b=4, a=2) a 2 b 4 6
Произвољни аргументи: Користимо произвољне аргументе када не знамо тачан број аргумената које ће функција примити. Користимо * и ** операторе у дефиницији функције за прикупљање произвољних аргумената.
>>> def add(*args): ... return sum(args) ... >>> add(1, 2, 3, 4, 5) 15 >>> def dict_args(**kwargs): ... print(kwargs) ... >>> dict_args(a="techblog.co.rs", b='techblog.co.rs Tools', c="techblog.co.rs Online Compiler") {'a': 'techblog.co.rs', 'b': 'techblog.co.rs Tools', 'c': 'techblog.co.rs Online Compiler'}
#25. Шта је ламбда функција?
Ламбда функције су мале анонимне функције у Питхон-у. Садрже један израз и прихватају вишеструке аргументе.
>>> add = lambda a, b: a + b >>> add(1, 3) 4
#26. Која је разлика између нормалне функције и ламбда функције?
Функционалност и нормалних и ламбда функција је слична. Међутим, нормалне функције захтевају више кода у поређењу са ламбда функцијама за исту функционалност.
Ламбда функције су корисне када је потребан један израз.
#27. За шта се користи кључна реч pass?
Кључна реч pass се користи за навођење празног блока кода. Питхон не дозвољава да оставимо блокове без икаквог кода. Наредба pass нам омогућава да дефинишемо празне блокове, када код планирамо да попунимо касније.
>>> def add(*args): ... ... File "<stdin>", line 3 ^ IndentationError: expected an indented block >>> def add(*args): ... pass ... >>>
#28. Шта је рекурзивна функција?
Рекурзивна функција је функција која позива саму себе.
Шта су оператори за паковање у Питхон-у? Како се користе?
Оператори за паковање се користе за прикупљање више аргумената у функцијама. Познати су и као произвољни аргументи.
Напомена: Погледајте додатни чланак за више информација о операторима за паковање у Питхон-у.
ООП у Питхон-у
#29. Која се кључна реч користи за креирање класа у Питхон-у?
Кључна реч class се користи за креирање класа у Питхон-у. Требало би да следимо Паскал конвенцију за именовање класа као индустријски стандард.
>>> class Car: ... pass ...
#30. Како се инстанцира класа у Питхон-у?
Инстанцу класе у Питхон-у можемо креирати једноставним позивањем класе као функције. Можемо проследити потребне атрибуте објекта на исти начин као што радимо са аргументима функције.
>>> class Car: ... def __init__(self, color): ... self.color = color ... >>> red_car = Car('red') >>> red_car.color 'red' >>> green_car = Car('green') >>> green_car.color 'green' >>>
#31. Шта је self у Питхон-у?
self представља објекат класе. Користи се за приступ атрибутима објекта и методама унутар класе за конкретан објекат.
#32. Шта је __init__ метод?
__init__ је конструкторски метод, сличан конструкторима у другим ООП језицима. Извршава се одмах након креирања објекта класе. Користи се за иницијализацију почетних података објекта.
#33. Шта је docstring у Питхон-у?
Документационе ниске или docstrings се користе за документовање блокова кода. Такође се могу користити као вишередни коментари.
Ове ниске се користе у методама класе да би описале шта тачно та метода ради. Docstring методе можемо видети помоћу функције help().
>>> class Car: ... def __init__(self, color): ... self.color = color ... ... def change_color(self, updated_color): ... """This method changes the color of the car""" ... self.color = updated_color ... >>> car = Car('red') >>> help(car.change_color) Help on method change_color in module __main__: change_color(updated_color) method of __main__.Car instance This method changes the color of the car >>>
#34. Шта су dunder или магичне методе?
Методе чија имена имају две доње црте као префикс и суфикс се називају dunder или магичне методе. Углавном се користе за надјачавање подразумеваних метода. Неке од метода које можемо надјачати у класама су __str__, __len__, __setitem__, __getitem__, итд.
>>> class Car: ... def __str__(self): ... return "This is a Car class" ... >>> car = Car() >>> print(car) This is a Car class >>>
Напомена: Постоји много других метода које можете надјачати. Корисне су када желите детаљно да прилагодите код. Истражите документацију за више информација.
#35. Како се имплементира наслеђивање у Питхон-у?
Родитељску класу прослеђујемо подређеној класи као аргумент. Затим позивамо метод __init__ родитељске класе у подређеној класи.
>>> class Animal: ... def __init__(self, name): ... self.name = name ... >>> class Animal: e): ... def __init__(self, name): ... self.name = name ... ... def display(self): ... print(self.name) >>> class Dog(Animal): e):ame) ... def __init__(self, name): ... super().__init__(name) ... >>> doggy = Dog('Tommy') >>> doggy.display() Tommy >>>
#36. Како се приступа родитељској класи из подређене класе у Питхон-у?
Користимо super() који се односи на родитељску класу унутар подређене класе. Са њим можемо приступити атрибутима и методама родитељске класе.
Остало
#37. Како се користе коментари у једном и више редова у Питхон-у?
Користимо хеш (#) за коментаре у једном реду. А троструке једноструке наводнике (“’коментар“’) или троструке двоструке наводнике („““коментар“““) за коментаре у више редова.
#38. Шта је објекат у Питхон-у?
Све у Питхон-у је објекат. Сви типови података, функције и класе су објекти.
#39. Која је разлика између is и ==?
Оператор == се користи за проверу да ли два објекта имају исту вредност. Оператор is се користи за проверу да ли два објекта показују на исту меморијску локацију.
>>> a = [] >>> b = [] >>> c = a >>> a == b True >>> a is b False >>> a is c True >>>
#40. Шта су плитка и дубока копија?
Плитка копија: Ствара тачну копију објекта без промене референци објеката. У том случају и копирани и оригинални објекти показују на исте референце објеката. Дакле, промена једног објекта ће утицати на други.
За плитку копију користимо метод copy() из модула copy.
>>> from copy import copy >>> a = [1, [2, 3]] >>> b = copy(a) >>> a[1].append(4) >&