Библиотека собеса по Data Science | вопросы с собеседований
4.32K subscribers
421 photos
10 videos
1 file
401 links
Вопросы с собеседований по Data Science и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7dfb7235

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Какие магические методы в Python вы знаете?

Магическими методами в Python называют встроенные методы с двойными подчёркиваниями (например, `__init__`, `__str__`). Они позволяют определять поведение классов для различных операций.

Вот несколько магических методов для примера:
▫️`__init__` — для инициализации нового объекта;
▫️`__del__` — деструктор, который вызывается при удалении объекта;
▫️`__str__` — определяет поведение функции `str()`, вызванной для экземпляра вашего класса;
▫️`__len__` — возвращает длину объекта;
▫️`__eq__` — определяет поведение оператора равенства `==`;
▫️`__iter__` — возвращает итератор для объекта;
▫️`__getitem__` — получение значения по ключу или индексу;
▫️`__call__` — позволяет объекту класса вести себя как функция.

#программирование
#python
Что такое args, kwargs. В каких случаях они требуются?

В Python оператор * используется не только для умножения, но и для того, чтобы «распаковывать» объекты, внутри которых хранятся некие элементы. Именно эта его особенность применяется в случае с args и kwargs. Можно использовать другие имена, но это считается дурным тоном. args — это сокращение от arguments (аргументы), а kwargs — сокращение от keyword arguments (именованные аргументы).

Соответственно, мы используем *args, когда не уверены, сколько аргументов будет передано функции, или если хотим передать список или кортеж аргументов функции. А **kwargs мы используем, когда не знаем, сколько именованных аргументов будет передано функции. В последнем случае, в виду того, что речь идёт об именованных аргументах, применяется словарь, где ключ — имя параметра, значение — значение параметра.

#python
#программирование
Что такое генераторы и итераторы в Python?

В Python генераторы и итераторы — это объекты, позволяющие работать с потенциально большими последовательностями данных без необходимости загружать всё в память одновременно. То есть и генераторы, и итераторы позволяют перебирать элементы коллекций.

🔹Итераторы реализуют методы __iter__() и __next__(). Метод __iter__() возвращает сам итератор, а __next__() — следующий элемент коллекции. Если элементы заканчиваются, __next__() должен вызвать исключение StopIteration.

🔹Генераторы представляют собой специальный способ реализации итераторов. Их можно реализовать двумя способами: как функцию с ключевым словом yield или как генераторное выражение. Главное отличие генератора от итератора заключается в том, что значения генерируются по требованию. Каждый раз, когда генератор достигает yield, он возвращает значение и «замирает», сохраняя своё состояние до следующего вызова. Это позволяет использовать меньше памяти при итерации по длинным последовательностям. Канонический пример — генератор, порождающий последовательность чисел Фибоначчи.

#программирование
#python
Напишите функцию для вычисления евклидова расстояния

Вот две точки для примера:

plot1 = [1,3]
plot2 = [2,5]


Решение:
def euclidean_dist(point1, point2):
return ((point1[0] - point2[0])**2 + (point1[1] - point2[1])**2)**0.5

point1, point2 = [1, 3], [2, 5]
print(euclidean_dist(point1, point2)) # -> 2.23606797749979


#python
#программирование
Какова разница между == и is в Python?

🔘== проверяет равенство значений двух объектов. Он возвращает True, если объекты имеют одинаковые значения, даже если они занимают разные места в памяти.

🔘is проверяет, указывают ли две переменные на один и тот же объект в памяти.

Рассмотрим пример:
lst = [10, 20, 20]
print(lst == lst[:]) # True
print(lst is lst[:]) # False


В первом случае lst == lst[:] возвращает True, потому что срез lst[:] создаёт новый список с теми же значениями, что и у оригинального списка lst.

Во втором случае lst is lst[:] возвращает False, так как lst[:] создает новый объект в памяти, который имеет те же значения, но является другим объектом.

#python
#программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие библиотеки Python, позволяющие провести статистический анализ данных, вы знаете?

Можно назвать основные.

▪️statistics
Это встроенный модуль, который позволяет оценить некоторые статистические характеристики.

▪️NumPy
Данная библиотека предназначена для работы с многомерными массивами и предоставляет широкий набор функций для выполнения математических и статистических операций, таких как вычисление среднего, стандартного отклонения, дисперсии и т.д.

▪️SciPy
Расширяет возможности NumPy и включает в себя модули для выполнения более сложных статистических операций, таких как расчет доверительных интервалов, регрессии, а также проведение тестов на значимость.

▪️Pandas
Эта библиотека предназначена для обработки и анализа данных. Она позволяет легко работать с табличными данными и предоставляет методы для их фильтрации, агрегации и выполнения статистических операций, таких как группировка и вычисление медианы.

▪️Matplotlib
Хотя эта библиотека в первую очередь предназначена для визуализации данных, она также полезна при проведении статистического анализа, поскольку позволяет строить графики распределений и гистограммы для анализа данных.

#python
Напишите логистическую регрессию

import numpy as np

class LogisticRegression:

def __init__(self, learning_rate=0.01, n_iters=1000):
self.learning_rate = learning_rate
self.n_iters = n_iters
self.weights = None
self.bias = None

def fit(self, X, y):
# initialize weights and bias to zeros
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0

# gradient descent optimization
for i in range(self.n_iters):
# calculate predicted probabilities and cost
z = np.dot(X, self.weights) + self.bias
y_pred = self._sigmoid(z)
cost = (-1 / n_samples) * np.sum(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred))

# calculate gradients
dw = (1 / n_samples) * np.dot(X.T, (y_pred - y))
db = (1 / n_samples) * np.sum(y_pred - y)

# update weights and bias
self.weights -= self.learning_rate * dw
self.bias -= self.learning_rate * db

def predict(self, X):
# calculate predicted probabilities
z = np.dot(X, self.weights) + self.bias
y_pred = self._sigmoid(z)
# convert probabilities to binary predictions
return np.round(y_pred).astype(int)

def _sigmoid(self, z):
return 1 / (1 + np.exp(-z))


#python
#машинное_обучение
Какие существуют области видимости функций в Python?

В Python переменные имеют две основные области видимости: локальную и глобальную.

▪️Локальная
Переменные, объявленные внутри функции, существуют только в её пределах и недоступны за её пределами. Аргументы функции также относятся к локальной области и исчезают после завершения функции.

▪️Глобальная
Переменные, объявленные вне функций, доступны в любой части программы. Однако, если внутри функции пытаться присвоить значение глобальной переменной, Python создаст новую локальную переменную с тем же именем.

#python
В чём разница между модулем, пакетом и библиотекой в Python?

▪️Модуль
Это файл с расширением .py, содержащий код Python (функции, классы, переменные). Он используется для структурирования и повторного использования кода. Модуль можно импортировать.

▪️Пакет
Это директория, содержащая набор модулей и файл __init__.py, который указывает, что эта директория является пакетом. Пакеты позволяют группировать модули по логике или функциональности.

▪️Библиотека
Это набор модулей и/или пакетов, предназначенных для решения определённого класса задач. Обычно библиотека распространяется как единое целое, например, через PyPI.

#python
#программирование
Совет на 2025-й — будьте осторожнее с выбором работы.

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

Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦‍♂️

Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:

— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер

Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.

Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs