andrei-volkau / interview_questions_python_junior

Вопросы из собеседования на python junior

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Вопросы для собеседования Python Junior

Еще 300+ вопросов для подготовки к собеседованию

150 вопросов для собеседования на вакансию Python. Часть 1 (без опыта работы)

150 вопросов для собеседования на вакансию Python. Часть 2 (с опытом работы)


1. Виды типизации

  • Статическая - типы устанавливаются на этапе компиляции, динамическая - в рантайме.
  • Сильная - отсутствие автоматических кастов в другой тип (неявных преборазований). Слабая - наличие таковых.
  • Явная - указываем типы везде ручками. Неявная - компилятор/интерпретатор занимается этим сам.

к оглавлению ⬆️

2. Типизация python

Динамическая, сильная, неявная.

к оглавлению ⬆️

3. Что такое переменная

Переменная Python — это идентификатор для ссылки на значение в программе. Переменная содержит место в памяти объекта.

к оглавлению ⬆️

4. Числа в python

  • int - целые числа.
  • float - вещественные или действительные числа(числа с плавающей точкой).
  • complex - комплексные числа.
  • decimal - десятичные дроби.

к оглавлению ⬆️

5. Строки в python

Cтрока – это упорядоченная последовательность символов, которая предназначена для хранения информации в виде простого текста.

к оглавлению ⬆️

6. Списки и кортежи в python

Списки Python схожи с массивами в других языках. Кортеж похож на список, но вы создаете его с круглыми скобками, вместо квадратных. Вы также можете использовать встроенный инструмент для создания кортежей. Разница в том, что кортеж неизменный, в то время как список может меняться.

к оглавлению ⬆️

7. Cловарь в python

Словари в Python - неупорядоченные коллекции произвольных объектов с доступом по ключу.

к оглавлению ⬆️

8. Какие типы данных относятся к структурам данных

  • Массивы
  • Стеки
  • Очереди
  • Связанные списки
  • Графы
  • Деревья
  • Префиксные деревья
  • Хэш таблицы
  • Map

к оглавлению ⬆️

9. Что такое Git

Распределённая система управления версиями.

к оглавлению ⬆️

10. Как создать гит репозиторий локально

git init

к оглавлению ⬆️

11. Что такое git push

Отправка всех неотправленных коммитов на удалённый сервер репозитория.

к оглавлению ⬆️

12. Что делает git commit

Фиксировует изменения любых файлов, входящих в репозиторий.

к оглавлению ⬆️

13. Git merge и rebase

git merge - принимает содержимое ветки источника и объединяет их с целевой веткой. В этом процессе изменяется только целевая ветка. История исходных веток остается неизменной. git rebase — еще один способ перенести изменения из одной ветки в другую. Rebase сжимает все изменения в один «патч». Затем он интегрирует патч в целевую ветку. В отличие от слияния, перемещение перезаписывает историю, потому что она передает завершенную работу из одной ветки в другую. В процессе устраняется нежелательная история.

к оглавлению ⬆️

14. Что такое виртуальное окружение

Виртуальная среда — это инструмент для поддержки отдельного пространства для проекта с его зависимостями и библиотеками в одном месте.

к оглавлению ⬆️

15. Как установить виртуальное окружение

pip install virtualenv
python -m venv namevenv

к оглавлению ⬆️

16. Виды форматирования строк

  • Форматирование f-строками.
  • Форматирование методом str.format().
  • Форматирование оператором '%'.

к оглавлению ⬆️

17. Cрезы или слайсы в python

item[START:STOP:STEP] Функция Python slice() возвращает нарезанный объект из набора индексов ввода, указанного пользователем в соответствии с переданными ему аргументами.

к оглавлению ⬆️

18. Что такое итерация

Переход к следующему объекту в последовательности.

к оглавлению ⬆️

19. Какие циклы есть в python

while и for.

к оглавлению ⬆️

20. Чем отличается while от for

For используется только тогда, когда необходимо совершить перебор элементов заранее известное число раз. Цикл while также используется для повторения частей кода, но вместо зацикливания на n количество раз, он выполняет работу до тех пор, пока не достигнет определенного условия

к оглавлению ⬆️

21. Каким образом реализовано ветвление в python

if-elif-else

к оглавлению ⬆️

22. Как запросить у пользователя ввод

Для получения информации с клавиатуры в Python есть функция input().

к оглавлению ⬆️

23. Преобразование типов

  • Преобразование типов - это преобразование объекта из одного типа данных в другой тип данных.
  • Неявное преобразование типов автоматически выполняется интерпретатором Python.
  • Python позволяет избежать потери данных в неявном преобразовании типов.
  • Явное преобразование типов также называется приведением типов, типы данных объекта преобразуются с использованием предопределенной функции.
  • При приведении типов может произойти потеря данных, поскольку мы приводим объект к определенному типу данных.

к оглавлению ⬆️

24. Что такое аннотация типов

В простейшем случае аннотация содержит непосредственно ожидаемый тип. Аннотации для переменных пишут через двоеточие после идентификатора. После этого может идти инициализация значения. Например price: int = 5 Параметры функции аннотируются так же как переменные, а возвращаемое значение указывается после стрелки -> и до завершающего двоеточия. Например def indent_right(s: str, width: int) -> str:.

к оглавлению ⬆️

25. Строка это последовательность или нет

Да.

к оглавлению ⬆️

26. Что такое Pep

Руководство по написанию кода на Python.

к оглавлению ⬆️

27. Что такое фунция range

Функция range() создает объект, который внутри себя содержит итератор, выдающий элементы из диапазона, определяемого аргументами функции range(старт, стоп, шаг).

к оглавлению ⬆️

28. Что делает enumerate

Если начальное значение счётчика enumerate() не передаётся — оно, по умолчанию, устанавливается в 0. Функция создаёт объект, генерирующий кортежи, состоящие из индекса элемента и самого этого элемента.

к оглавлению ⬆️

29. Какие методы списков

  • list.append(x) Добавляет элемент в конец списка
  • list.extend(L) Расширяет список list, добавляя в конец все элементы списка L
  • list.insert(i, x) Вставляет на i-ый элемент значение x
  • list.remove(x) Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
  • list.pop([i]) Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
  • list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
  • list.count(x) Возвращает количество элементов со значением x
  • list.sort([key=функция]) Сортирует список на основе функции
  • list.reverse() Разворачивает список
  • list.copy() Поверхностная копия списка
  • list.clear() Очищает список

к оглавлению ⬆️

30. Что в python не является объектом

В python всё является объектом.

к оглавлению ⬆️

31. Название переменных

Имя переменной может состоять только из цифр, букв и знаков подчеркивания. Имя переменной может начинаться только с буквы или с нижнего подчеркивания. Никаких чисел в начале имени переменной быть не должно. Имя переменной не может содержать ключевые слова (зарезервированные) языка Python. Принято разделять слова нижним подчеркиванием.

к оглавлению ⬆️

32. Что такое литералы

Литерал в Python – это простейший способ создания объектов.

к оглавлению ⬆️

33. Можно ли число сделать строкой

Чтобы конвертировать число в строку, используйте встроенную функцию str().

к оглавлению ⬆️

34. Что делает метод split()

Разбивает строку на части, используя специальный разделитель, и возвращает эти части в виде списка

str.split([разделитель [, maxsplit]]).

к оглавлению ⬆️

35. Что делает метод join()

Метод str.join() возвращает строку, которая является конкатенацией (объединением) всех элементов строк итерируемого объекта iterable. В итоговой строке элементы объединяются между собой при помощи строки-разделителя str.

к оглавлению ⬆️

36. Как импортировать модуль

Используя ключевое слово “import”, например import random Использование псевдонимов — as. Некоторые модули имеют длинное и неудобное название. Для удобства и сокращения количества кода программист может заменить его на своё. Для импорта конкретных объектов используют конструкцию from ... import ....

к оглавлению ⬆️

37. Как импортировать все содержимое модуля

from module_name import *
import module_name

к оглавлению ⬆️

38. Сколько пар ключ значение может быть в словаре

Ограничено объемом памяти.

к оглавлению ⬆️

39. Какой тип данных может быть значением в словаре

Ключом может являться в принципе любой неизменяемый тип данных.

к оглавлению ⬆️

40. Как узнать id элемента

Функция id() возвращает уникальный идентификатор для указанного объекта.

к оглавлению ⬆️

41. Как узнать версию python

В консоли прописать python --version

к оглавлению ⬆️

42. Отличия второго python от 3

Ограничено объемом памяти.

к оглавлению ⬆️

43. Как прервать выполнение цикла

Оператор break досрочно прерывает цикл.

к оглавлению ⬆️

44. Что означает continue

Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while).

к оглавлению ⬆️

45. Что будет если сравнить 5 и 5.0

True

к оглавлению ⬆️

46. Что быстрее python или c++

C++

к оглавлению ⬆️

47. Что такое байт код

Python - интерпретируемый язык программирования. Он не конвертирует свой код в машинный, который понимает железо (в отличие от С и С++). Вместо этого, Python-интерпретатор переводит код программы в байт-код, который запускается на виртуальной машине Python (PVM).

к оглавлению ⬆️

48. Как избежать конфликтов при импорте файлов


к оглавлению ⬆️

49. Что означает %s %d

%s Строка %d Десятичное число.

к оглавлению ⬆️

50. Что такое класс

Класс — тип, описывающий устройство объектов.

к оглавлению ⬆️

51. Что такое наследование

Возможность одному классу выступать в качестве наследника для другого, перенимая тем самым его свойства и методы.

к оглавлению ⬆️

52. Что такое инкапсуляция

Ограничение доступа к составляющим объект компонентам (методам и переменным). Инкапсуляция делает некоторые из компонент доступными только внутри класса.

к оглавлению ⬆️

53. Что такое полиморфизм

Разное поведение одного и того же метода в разных классах.

к оглавлению ⬆️

54. Сколько может быть родителей и наследников у класса

Неограниченное количество.

к оглавлению ⬆️

55. Что такое перегрузка операторов

Один из способов реализации полиморфизма, когда мы можем задать свою реализацию какого-либо метода в своём классе.

к оглавлению ⬆️

56. Магические методы

Это специальные методы в python, обрамленные двумя нижними подчеркиваниями

  • Инициализация объекта: __init_
  • Строковые представления: __repr__ , __str__
  • Итерация: __iter__ , __next__ и другие

к оглавлению ⬆️

57. Модификаторы доступа

Есть три типа модификаторов доступов в Python ООП:

  • публичный public
  • приватный __private
  • защищенный _protected

к оглавлению ⬆️

58. Генераторы

Это функция, которая будучи вызванной в функции next() возвращает следующий объект согласно алгоритму ее работы. Вместо ключевого слова return в генераторе используется yield.

к оглавлению ⬆️

59. Как пишутся комментарии в python

С помощью символа #. Так же есть такое понятие как docstring задать его можно с помощью тройных кавычек.

к оглавлению ⬆️

60. Как можно обратить (reverse) порядок элементов в списке

С помощью среза [::-1] или встроенной функции reversed().

к оглавлению ⬆️

61. Если мы не поставим двоеточие в конце строки для цикла "do-while", он все равно сработает?

В python такой цикл не реализован. Это вопрос из тех, которые с подвохом, когда упоминают элементы других языков.

к оглавлению ⬆️

62. Как убрать из списка дубликат элемента

Для этого можно конвертировать список во множество set().

к оглавлению ⬆️

63. Расскажите про арифметические операторы //, %, и **

  • Оператор // выполняет целочисленное деление и возвращает целую часть числа, полученного в результате операции:

7 // 2 = 3

  • Оператор ** возводит в степень: 2**10 = 1024
  • Оператор % возвращает результат деления по модулю, то есть остаток после деления: 13%7 = 6.

к оглавлению ⬆️

64. Как посчитать длину строки (string)

Для этого вызываем функцию len().

к оглавлению ⬆️

65. Расскажите про генераторы списков (list comprehension)

Генераторы позволяют создавать списки с помощью одной строки кода

>>> [i for i in range(1, 11, 2)]
[1, 3, 5, 7, 9] 

к оглавлению ⬆️

66. Что такое HTTP

HyperText Transfer Protocol — «протокол передачи гипертекста»

к оглавлению ⬆️

67. Что такое json, xml

JSON - текстовый формат обмена данными, основанный на JavaScript. XML - в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных.

к оглавлению ⬆️

68. Чем отличается HTML и XML

Разница: HTML - это язык разметки, который используется для разработки веб-страниц. Его основная цель - отображение данных с акцентом на их внешний вид. XML - это язык разметки, основной целью которого является транспортировка и хранение данных.

к оглавлению ⬆️

69. Что такое CRUD

Терамин обозначающий четыре базовые функции: создание (create), чтение (read), редактирование (update) и удаление (delete).

к оглавлению ⬆️

70. Какой паттерн программирования реализует Django

Фреймворк Django реализует архитектурный паттерн Model-View-Template.

В DRF Request-Process-Response.

к оглавлению ⬆️

71. На каком этапе в приложении Django происходит запрос к базе данных

QuerySet может быть создан, отфильтрован, ограничен и использован фактически без выполнения запросов к базе данных. База данных не будет затронута, пока вы не спровоцируете выполнение QuerySet.

к оглавлению ⬆️

72. Какой результат будет Post.objects.all() и какого типа вернет

Объект класса QuerySet.

к оглавлению ⬆️

73. Что такое SQL

SQL или Structured Query Language (язык структурированных запросов) — язык программирования, предназначенный для управления данными в СУБД.

к оглавлению ⬆️

74. Каким запросом я могу достать все данные из таблицы

SELECT * FROM nametable

к оглавлению ⬆️

75. Что такое многие-ко-многим

Связь многие ко многим описывает ситуацию, когда объект первой модели может одновременно ассоциироваться с несколькими объектами второй модели. И наоборот, один объект второй модели может также одновременно быть ассоциирован с несколькими объектами первой модели. Например, один студент может посещать несколько курсов, а один курс могут посещать несколько студентов.

к оглавлению ⬆️

76. Как реализуется М2М в SQL

Связь многие ко многим подразумевает, что записи в одной таблице могут иметь множество ссылок на другую таблицу и наоборот. Когда есть такой тип связи нужно создавать дополнительную таблицу, которая сведет связь многие ко многим до связи один ко многим.

к оглавлению ⬆️

77. Что такое JOIN и какой он может быть

  • INNER JOIN (CROSS JOIN) - внутреннее (перекрёстное) объединение.
  • LEFT JOIN - левостороннее внешнее объединение.
  • RIGHT JOIN - правостороннее внешнее объединение.

к оглавлению ⬆️

78. Что такое View

Views отвечают за обработку и передачу данных и могут реализовывать одну или несколько функций. В Django используются два вида представлений:

  • Представления-функции (view functions),
  • Представления-классы (class based views).

к оглавлению ⬆️

79. Что такое миксины

Mixin представляет собой набор свойств и методов , которые могут быть использованы в различных классах, которые не приходят из базового класса.

к оглавлению ⬆️

80. Звёздный синтаксис

    • и ** для передачи аргументов в функцию;
    • и ** для сбора переданных в функцию аргументов;
  • ** для принятия только именованных аргументов;
    • при распаковке кортежей;
    • для распаковки итерируемых объектов в список/кортеж;
  • ** для распаковки словарей в другие словари.

к оглавлению ⬆️

81. Два способа создания класса

Класс type() с тремя аргументами вернет объект нового типа. Это по сути динамическая форма инструкции class, ее еще называют метакласс. type(class_name, super_classes, attributes_dict)

к оглавлению ⬆️

82. Чем файл .pyc отличается от .py

.pyc содержат скомпилированный байт-код исходных файлов Python

к оглавлению ⬆️

83. Что делает python объектно-ориентированым

Он следует парадигме объектно-ориентированного программирования, которая построена вокруг классов (classes) и их экземпляров (instances). Это позволяет реализовать следующие функции:

  • сокрытие внутренней структуры данных
  • абстракция
  • наследование
  • полиморфизм (способность выбирать правильный метод в зависимости от типа данных)
  • ограничение доступа к данным.

к оглавлению ⬆️

84. Как производится отладка программы на Python

Использовать IDE с поддержкой дебага либо использовать модуль pdb import pdb; pdb.set_trace()

к оглавлению ⬆️

85. Что такое GIL

Глобальная блокировка интерпретатора. Это механизм, которая не позволяет нескольким потокам выполнить один и тот же байткод.

к оглавлению ⬆️

86. Статусы ответов HTTP

Коды сгруппированы в 5 классов:

  1. Информационные 100 - 199
  2. Успешные 200 - 299
  3. Перенаправления 300 - 399
  4. Клиентские ошибки 400 - 499
  5. Серверные ошибки 500 – 599

Подробнее https://developer.mozilla.org/ru/docs/Web/HTTP/Status

к оглавлению ⬆️

About

Вопросы из собеседования на python junior