Ви готуєтеся до співбесід на 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]
Примітка. Існують інші методи, як-от «очистити», «вставити», «підрахувати» тощо… Вам не потрібно пояснювати кожен метод зі списку інтерв’юеру. Просто поясніть два-три методи, які ви найчастіше використовуєте.
#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 не виконується, коли ми розриваємо цикли.
#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__ — це метод конструктора, подібний до конструкторів в інших мовах ООП. Він виконується негайно, коли ми створюємо об’єкт для класу. Він використовується для ініціалізації початкових даних екземпляра.
#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! 👍