42 запитання та відповіді на інтерв’ю Python у реальному часі [2022]

Ви готуєтеся до співбесід на Python? Або просто цікаво дізнатися, скільки ви знаєте Python? Нема проблем. Тут ми висвітлюємо ваші проблеми запитаннями та відповідями.

Стаття допоможе вам зрозуміти, з яким типом питань ви можете зіткнутися на співбесіді. Або допоможе вам оцінити ваші навички роботи з Python. Переконайтеся, що ви відповіли на запитання, перш ніж побачити відповіді, щоб точно оцінити себе. Без зайвих слів, давайте зануримося в питання.

Питання розділені на різні розділи залежно від типу тем. У кожному розділі є запитання та підібрані відповіді. Ви можете змінити відповідь своєю мовою з тим самим значенням. Таким чином, інтерв’юер не відчує, що ви щось читаєте.

Мова Python

#1. Що таке Python?

Python — це інтерпретована мова програмування високого рівня загального призначення. Ми можемо створити практично будь-який тип програми за допомогою Python зі сторонніми бібліотеками та фреймворками. Python є однією з найпопулярніших мов програмування в передових технологіях, таких як AI, Data Science тощо.

#2. У чому головна відмінність між інтерпретатором і компілятором?

Інтерпретатор перекладає по одному оператору в машинний код, а компілятор переводить весь код в машинний код.

#3. Python є мовою статичної чи динамічної типізації?

Python є динамічно типізованою мовою.

#4. Що ви маєте на увазі під динамічно типізованою мовою?

Динамічно типізовані мови перевіряють типи змінних під час виконання. Деякі з динамічно типізованих мов – Python, JavaScript, Ruby тощо.

Бонус: мови зі статичними типами перевіряють типи змінних під час компіляції. Деякі статично типізовані мови – це C++, C, Java тощо,

#5. Наведіть деякі програми Python.

Python має простіший і легкий для вивчення синтаксис. Це може виглядати схоже на англійську. Спільнота розробників для Python величезна. Ми можемо знайти багато пакетів сторонніх розробників для роботи з різними типами розробки програм. Коли справа доходить до розробки, ми можемо створювати веб-додатки, додатки з графічним інтерфейсом користувача, додатки CLI тощо.

Одним із найпопулярніших застосувань Python є автоматизація. Ми можемо легко створювати сценарії на Python для автоматизації таких завдань, як очищення диска, надсилання пошти, отримання даних про ціни на продукти тощо,

Python є однією з найпопулярніших мов для використання в галузі Data Science.

#6. Які програми ви створили за допомогою Python?

Я написав кілька сценаріїв автоматизації, щоб усунути повторювані та нудні завдання. А також сценарії для отримання інформації про ціни на продукти, наявність тощо.

Я також працював із такими фреймворками, як Django, Flask, для створення веб-додатків. І створіть кілька веб-додатків, використовуючи як Django, так і Flask.

Примітка. Відповідь вище є прикладом. Ваша відповідь може повністю відрізнятися від наведеної вище. Спробуйте пояснити різні сфери, над якими ви працювали за допомогою Python. Показати програми, якщо вони доступні.

Типи даних

#7. Які типи даних вбудовані в Python?

У Python є кілька вбудованих типів даних. Це int, float, complex, bool, list, tuple, set, dict, str.

Примітка. Вам не потрібно вказувати всі типи даних, присутні в Python. Назвіть деякі з них, якими ви найчастіше користуєтеся. Інтерв’юер може поставити запитання на основі вашої відповіді.

#8. Яка різниця між списком і кортежем?

І список, і кортеж використовуються для зберігання колекції об’єктів. Основна відмінність між списком і кортежем полягає в тому, що «список є змінним об’єктом, тоді як кортеж є незмінним».

#9. Що таке змінні та незмінні типи даних?

Змінні типи даних можна змінити після їх створення. Деякі зі змінних об’єктів у Python це list, set, dict.

Незмінні типи даних не можна змінити після їх створення. Деякі з незмінних об’єктів у Python – 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]

Примітка. Існують інші методи, як-от «очистити», «вставити», «підрахувати» тощо… Вам не потрібно пояснювати кожен метод зі списку інтерв’юеру. Просто поясніть два-три методи, які ви найчастіше використовуєте.

  Який діапазон середньої мережі Wi-Fi?

#11. Поясніть деякі методи рядків

1. split – метод використовується для поділу рядка на потрібні точки. У результаті він повертає список. За замовчуванням він розбиває рядок на пробіли. Ми можемо надати роздільник як аргумент для методу.

>>> a = "This is techukraine.net"
>>> 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 techukraine.net'
>>> ', '.join(a)
'This, is, techukraine.net'

Примітка. Деякі інші методи рядків: капіталізація, 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. Поясніть деякі методи dict

1. items – метод повертає ключ: пари словників у вигляді списку кортежів.

>>> a = {1: 'techukraine.net', 2: 'techukraine.net Tools', 3: 'techukraine.net 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}

Примітка. Деякі інші методи dict: get, keys, values, clear тощо.

#14. Що таке нарізка в Python?

Зрізання використовується для доступу до підмасиву з типу даних послідовності. Він повертає дані з типу даних послідовності на основі наданих нами аргументів. Він повертає той самий тип даних, що й вихідний тип даних.

Розрізання приймає три аргументи. Це початковий індекс, кінцевий індекс і крок приросту. Синтаксис нарізки є змінним[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. Що таке оператори розпакування в Python? Як їх використовувати?

Оператори * і ** є операторами розпакування в Python.

Оператор розпакування * використовується для призначення кількох значень різним значенням одночасно з типів даних послідовності.

>>> 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. Чи є в Python оператори switch?

Ні, Python не має операторів switch.

#18. Як ви реалізуєте функціональні можливості операторів switch у Python?

Ми можемо реалізувати функціональні можливості операторів 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 використовується для пропуску виконання коду, що залишився. Код після оператора continue не виконується на поточній ітерації, і виконання переходить до наступної ітерації.

>>> for i in range(5):
...     if i == 3:
...             continue
...     print(i)
...
0
1
2
4

#20. Коли код в else виконується за допомогою циклів while і for?

Код всередині блоку else з циклами while і for виконується після виконання всіх ітерацій. І код всередині блоку else не виконується, коли ми розриваємо цикли.

  Створюйте профілі з тригерами для відкриття та закриття програм, папок та URL-адрес

#21. Що таке розуміння списку та словника?

Розуміння списків і словників є синтаксичним цукром для циклів 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. Як працює функція діапазону?

Функція діапазону повертає послідовність чисел від початку до кінця з покроковим кроком. Синтаксис функції діапазону такий: діапазон (початок, зупинка[, step]).

Аргумент stop є обов’язковим. Аргументи 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. Які типи аргументів існують у Python?

Існує в основному чотири типи аргументів. Це позиційні аргументи, аргументи за замовчуванням, аргументи ключових слів і довільні аргументи.

Позиційні аргументи: звичайні аргументи, які ми визначаємо в призначених для користувача функціях, називаються позиційними аргументами. Під час виклику функції необхідні всі позиційні аргументи.

>>> 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="techukraine.net", b='techukraine.net Tools', c="techukraine.net Online Compiler")
{'a': 'techukraine.net', 'b': 'techukraine.net Tools', 'c': 'techukraine.net Online Compiler'}

#25. Що таке лямбда-функція?

Лямбда-функції — це невеликі анонімні функції в Python. Він має окремі вирази та приймає кілька аргументів.

>>> add = lambda a, b: a + b
>>> add(1, 3)
4

#26. Яка різниця між нормальною функцією та лямбда-функцією?

Функціональність звичайних функцій і лямбда-функцій подібна. Але нам потрібно написати додатковий код у звичайних функціях порівняно з лямбда-функціями для тієї ж функціональності.

Лямбда-функції стають у пригоді, коли є один вираз.

#27. Для чого використовується ключове слово pass?

Ключове слово pass використовується для згадування порожнього блоку в коді. Python не дозволяє залишати блоки без коду. Отже, оператор pass дозволяє нам визначати порожні блоки (коли ми вирішимо заповнити код пізніше).

>>> def add(*args):
...
...
  File "<stdin>", line 3

    ^
IndentationError: expected an indented block
>>> def add(*args):
...     pass
...
>>>

#28. Що таке рекурсивна функція?

Сама функція, яка викликається, називається рекурсивною функцією.

Що таке оператори пакування в Python? Як їх використовувати?

Оператори пакування використовуються для збору кількох аргументів у функціях. Вони відомі як довільні аргументи.

Примітка: ви можете переглянути цю статтю, щоб дізнатися більше про оператори пакування в Python.

#29. ООП на Python

Яке ключове слово використовується для створення класів у Python?

Ключове слово class використовується для створення класів у Python. Нам слід дотримуватися стандарту Pascal для іменування класів у Python як галузевого стандарту.

>>> class Car:
...     pass
...

#30. Як створити екземпляр класу в Python?

Ми можемо створити екземпляр класу в Python, просто викликавши його функцію like. Ми можемо передати необхідні атрибути для об’єкта так само, як і для аргументів функції.

>>> 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 у Python?

Самість представляє об’єкт класу. Він використовується для доступу до атрибутів і методів об’єкта всередині класу для конкретного об’єкта.

#32. Що таке метод __init__?

__init__ — це метод конструктора, подібний до конструкторів в інших мовах ООП. Він виконується негайно, коли ми створюємо об’єкт для класу. Він використовується для ініціалізації початкових даних екземпляра.

  Виправити, що Intel Wireless AC 9560 не працює

#33. Що таке docstring у Python?

Рядки документації або рядки документації використовуються для документування блоку коду. Вони також використовуються як багаторядкові коментарі.

Ці рядки документації використовуються в методах класу для опису того, що робить певний метод. І ми можемо побачити документацію методу за допомогою методу довідки.

>>> 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 або magic. Вони в основному використовуються для заміни методів. Деякі з методів, які ми можемо перевизначати в класах, це __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. Як ви реалізуєте успадкування в Python?

Ми можемо передати батьківський клас дочірньому класу як аргумент. І ми можемо викликати батьківський клас методу 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. Як отримати доступ до батьківського класу всередині дочірнього класу в Python?

Ми можемо використовувати super(), який посилається на батьківський клас у дочірньому класі. З його допомогою ми можемо отримати доступ до атрибутів і методів.

Різне

#37. Як використовувати однорядкові та багаторядкові коментарі в Python?

Ми використовуємо хеш (#) для однорядкових коментарів. І потрійні одинарні лапки (”’comment”’) або потрійні подвійні лапки (“””comment”””) для багаторядкових коментарів.

#38. Що таке об’єкт у Python?

Усе в Python є об’єктом. Усі типи даних, функції та класи є об’єктами.

#39. Яка різниця між is і ==?

Оператор == використовується для перевірки того, чи мають два об’єкти однакові значення чи ні. Оператор is використовується для перевірки того, чи посилаються два об’єкти на одне й те саме місце пам’яті.

>>> a = []
>>> b = []
>>> c = a
>>> a == b
True
>>> a is b
False
>>> a is c
True
>>>

#40. Що таке поверхнева та глибока копія?

Неглибока копія: створює точну копію оригіналу без зміни посилань на об’єкти. Тепер і скопійовані, і оригінальні об’єкти посилаються на ті самі посилання на об’єкти. Отже, зміна одного об’єкта вплине на інший.

Для поверхневого копіювання використовується метод копіювання з модуля копіювання.

>>> from copy import copy
>>> a = [1, [2, 3]]
>>> b = copy(a)
>>> a[1].append(4)
>>> a
[1, [2, 3, 4]]
>>> b
[1, [2, 3, 4]]

Глибоке копіювання: воно рекурсивно копіює значення оригінального об’єкта в новий об’єкт. Для глибокого копіювання ми повинні використовувати функцію нарізки або глибокого копіювання з модуля копіювання.

>>> from copy import deepcopy
>>> a = [1, [2, 3]]
>>> b = deepcopy(a)
>>> a[1].append(4)
>>> a
[1, [2, 3, 4]]
>>> b
[1, [2, 3]]
>>> b[1].append(5)
>>> a
[1, [2, 3, 4]]
>>> b
[1, [2, 3, 5]]
>>>

#41. Що таке ітератори?

Ітератори — це об’єкти в Python, які запам’ятовують свій стан ітерації. Він ініціалізує дані методом __iter__ і повертає наступний елемент за допомогою методу __next__.

Нам потрібно викликати next(iterator), щоб отримати наступний елемент з ітератора. І ми можемо перетворити тип даних послідовності в ітератор за допомогою вбудованого методу iter.

>>> a = [1, 2]
>>> iterator = iter(a)
>>> next(iterator)
1
>>> next(iterator)
2
>>> next(iterator)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

#42. Що таке генератори?

Генератори — це функції, які повертають ітератор, як об’єкт генератора. Він використовує вихід для генерації даних.

>>> def numbers(n):
...     for i in range(1, n + 1):
...             yield i
...
>>> _10 = numbers(10)
>>> next(_10)
1
>>> next(_10)
2
>>> next(_10)
3
>>> next(_10)
4

Висновок 👨‍💻

Питання не обмежені, як ми бачимо в цій статті. У цій статті показано, як різні типи запитань можна задавати з різних тем у Python. Але це не обмежується набором питань, які ми обговорювали в цій статті.

Один із способів бути підготовленим під час навчання – ставити собі запитання на різні теми. Спробуйте скласти різні типи запитань із концепції. І відповідайте на них самі. Таким чином, ви, ймовірно, не здивуєте питаннями на співбесіді. Ви також можете перевірити онлайн-компілятор Python, щоб попрактикуватися в коді.

Всього найкращого для вашої майбутньої співбесіди з Python! 👍