Python вопросы с собеседований
24.7K subscribers
508 photos
15 videos
17 files
403 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
Forwarded from Python/ django
🖥 Полезная статья по алгоритмам и структурам данных 🔥

В статье описаны такие структуры данных как:
— Массив (Array)
— Динамический массив (Dynamic array)
— Связный список (Linked list)
— Стек (Stack)
— Очередь (Queue)
— Множество (Set)
— Карта (Map)
— Двоичное дерево поиска (Binary search tree)
— Префиксное дерево (Trie)
— Граф (Graph)

Параллельно рассказывается про самые популярные алгоритмы и ещё много всего)

📎 Ссылка на статью
📎 Ещё статья в тему на русском

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Крутейшая подборка для Дата Саентиста. Лучшие бесплатные курсы, книга, разбор вопросов с собеседований, roadmap, полезные материалы по Python, Go, Linux и многое другое.

100 вопросов для подготовки к собесу Data Science
Видео

100 вопросов для подготовки к собесу Python
Вопросы Middle
Видео

Вливаемся в Data Science: подробный roadmap что и где изучать

Machine Learning инженер: что/где/как изучать, чтобы въехать

Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы

40 Полезных инструментов Дата Саентиста

Go — 100 вопросов/заданий с собеседований
Видео

Где изучать Linux в 2024. Бесплатные курсы, книги и ресурсы
Видео

Бесплатные курсы для изучения искусственного интеллекта в 2024 году

NumPy: оттачивайте навыки Data Science на практике
Numpy полный бесплатный курс

Где изучать Python в 2024. Бесплатные курсы, книги и ресурсы
Видео

Где искать работу Дата Саентисту в 2024 году

Ресурсы для поиска работы Python разработчикам

Бесплатные курсы по большим языковым моделям для дата-сайентистов

@python_job_interview
Подсчет узлов бинарного дерева

Сложность: Средняя

Условие задачи: Дан корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.

Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.

Необходимо разработать алгоритм с временной сложностью менее O(n).

Пример:

Ввод:
root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении

Подробнее про двоичное дерево
Решение

Пишите свое решение в комментариях👇

@python_job_interview
🚀 Перестановки, зависящие от регистра символа

Сложность: Средняя

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

Пример:

Ввод: s = "a1b2"
Вывод: ["a1b2","a1B2","A1b2","A1B2"]

Ввод: s = "3z4"
Вывод: ["3z4","3Z4"]

🔗 Решение

Пишите свое решение в комментариях👇

@python_job_interview
🖥 Перенос указателя вправо

Сложность: Средняя

Условие задачи: Дано бинарное дерево, нужно перенести каждый указатель на следующий узел на соответствующий правый правый элемент на текущем уровне либо же передать указатель на NULL в случае отсутствия узла.

Пример:

Ввод:
root = [1,2,3,4,5,null,7]
Вывод: [1,#,2,3,#,4,5,7,#]


📌 Решение

Пишите свое решение в комментариях👇

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Приёмы эффективного кода на Python

Держите полезную статью, в которой описаны приёмы написания более производительного кода

Вот некоторые обсуждаемые вещи:
• создание списков при помощи list comprehensions
• об использовании глобальных переменных
• генераторы, yield и вот это всё
• функция enumerate

📎 Статья

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Факт дня — словари dict() в Python

▶️Держите полезную теорию по словарям в Python.
Затронута большая часть того, что пригодится в реальной работе, а именно:
— Создание словаря
— Длина словаря
— Доступ к элементам словаря
— Добавление элементов в словарь
— Изменение элементов в словаре
— Проверка ключей в словаре
— Удаление пары ключ-значение из словаря
— Преобразование словаря в список элементов
— Очистка словаря
— Удаление словаря
— Копирование словаря
— Получение ключей словаря в виде списка
— Получение значений словаря в виде списка

▶️А вот пару заданий на закрепление, если сможете сделать их без проблем — значит, умеете работать со словарями на базовом уровне:
— Создайте пустой словарь с именем dog.
— Добавьте в словарь dog ключи "name", "color", "breed", "legs" и "age".
— Создайте словарь student и добавьте ключи "first_name", "last_name", "gender", "age", "marital status", "skills", "country", "city" и "address".
— Получите длину словаря student.
— Получите значение ключа "skills" и проверьте его тип данных, он должен быть списком.
— Измените значения ключа "skills", добавив одну или две навыка.
— Получите ключи словаря в виде списка.
— Получите значения словаря в виде списка.
— Преобразуйте словарь в список кортежей с помощью метода items().
— Удалите один из элементов из словаря.
— Удалите один из словарей полностью.

📎 Теория по словарям

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 List Comprehensions в Python: создание эффективного и читаемого кода

Держите полезное видео по list comprehensions в Python — это супер-популярная штука, и часто встречается в энтерпрайзном коде.
Также в видео затрагиваются такие темы как:
— генераторы
— тернарный оператор
— множество set()
— вложенные циклы
и много других, особенно актуальных для начинающих вещей

📎 Кликабельный план видео
📎 YouTube

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое DRY, как я могу применить его через ООП или FP?

DRY - это принцип разработки, который означает "Don't Repeat Yourself" (не повторяйся). В контексте программирования, DRY означает, что любой фрагмент кода должен иметь только один источник истины, и он должен быть легко доступен и изменяем. Это уменьшает количество дублирующегося кода и упрощает процесс сопровождения и изменения кода.

Через ООП или ФП, можно применять принцип DRY следующим образом:

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

ФП: используйте функции высшего порядка, замыкания и лямбда-выражения. Выносите общие функции в модули или библиотеки, и переиспользуйте их при необходимости.

Вот пример того, как ООП можно использовать для применения принципов DRY:


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def introduce(self):
print(f"My name is {self.name} and I am {self.age} years old.")

class Student(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major

def introduce(self):
super().introduce()
print(f"I am majoring in {self.major}.")

class Teacher(Person):
def __init__(self, name, age, department):
super().__init__(name, age)
self.department = department

def introduce(self):
super().introduce()
print(f"I teach in the {self.department} department.")


Класс Person содержит общие атрибуты и поведение для всех людей в системе. Классы Student и Teacher наследуют от Person и добавляют свои определенные атрибуты и поведение. Таким образом, мы избегаем дублирования кода таких атрибутов, как имя и возраст, или таких методов, как внедрение.

Используя ООП и наследование, мы можем эффективно применять принципы DRY и сделать код более удобным в сопровождении и расширяемым. Точно так же вы можете использовать функции и композицию более высокого порядка в FP для достижения тех же целей.

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое множественное наследование и когда его следует использовать?
Множественное наследование - это когда класс наследуется от нескольких базовых классов. Это означает, что класс-потомок получает свойства и методы от всех своих базовых классов.

Пример использования множественного наследования в Python:


class A:
def method_a(self):
print("Method A")

class B:
def method_b(self):
print("Method B")

class C(A, B):
def method_c(self):
print("Method C")

obj_c = C()
obj_c.method_a() # Output: Method A
obj_c.method_b() # Output: Method B
obj_c.method_c() # Output: Method C


В этом примере классы A и B являются базовыми классами для класса C. Класс C получает свойства и методы от классов A и B, и может использовать их в своих собственных методах.

Множественное наследование может быть полезно, когда вам нужно использовать свойства и методы из разных классов, чтобы создать новый класс с уникальным поведением. Однако, когда используется множественное наследование, может возникать проблема "алмазного наследования", когда два базовых класса оба имеют одноименный метод, что может привести к неоднозначности и ошибкам в коде.

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

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

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM