Proglib.academy | IT-курсы
3.74K subscribers
2.09K photos
71 videos
14 files
1.95K links
Онлайн-курсы для программистов от создателей «Библиотеки программиста».

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
✏️ Вопрос с реального собеседования по Data Science

Что вы знаете про биномиальное распределение? Зачем оно нужно в Data Science?

Биномиальное распределение в основном моделирует количество успешных исходов в фиксированном числе испытаний. В целом, позволяет характеризовать испытания с помощью двух параметров n и p, представляющих количество испытаний и вероятность успеха в одном испытании соответственно.

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

#собес_academy
👍32
✏️ Вопрос с реального собеседования по Data Science

Что такое Random Forest?

Алгоритм случайного леса (Random Forest) — универсальный алгоритм машинного обучения, суть которого состоит в использовании ансамбля решающих деревьев. Само по себе решающее дерево предоставляет крайне невысокое качество классификации, но из-за большого их количества результат значительно улучшается. Также это один из немногих алгоритмов, который можно использовать в абсолютном большинстве задач.

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

#собес_academy
👍41
✏️ Вопрос с реального собеседования по Python

Что такое модуль в Python? Как узнать имя модуля? Что такое модульное программирование?

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

Как узнать имя модуля:

Каждый модуль в Python имеет глобальную переменную __name__. Если модуль запущен как скрипт, то значение этой переменной будет __main__.

Что такое модульное программирование:

Модульное программирование — это подход к созданию программ из небольших независимых блоков (модулей). Это упрощает тестирование, поиск ошибок, а также улучшает переносимость программ.

#собес_academy
👍4🔥1
✏️ Вопрос с реального собеседования по Python

В чем разница между списком и кортежем?

1️⃣ Список можно изменить после создания

2️⃣ Кортеж нельзя изменить после создания

3️⃣ Список упорядочен. Он представляет собой упорядоченные последовательности объектов, как правило, одного и того же типа. Например, все имена пользователей упорядочены по дате создания: [«Max», «Steph», «Daphna»]

4️⃣ У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти: (2, «Steph», «2024–09–24») # id, name, created_at.

#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
✏️ Вопрос с реального собеседования по Python

Как выполняется интерполяция строк?

Без импорта класса Template есть три способа интерполяции строк:

father = 'Boris'

# 1. f strings
print(f'Hello {father}')

# 2. % operator
print('Hey %s %s' % (father, father))

# 3. format
print(
"My father name is {}".format((father))
)

#собес_academy
👍1
✏️ Вопрос с реального собеседования по Python

В чем разница между «is» и «==»?

is проверяет идентичность, а == проверяет равенство.

Создайте несколько списков и назначьте им имена. Обратите внимание, что ниже b указывает на тот же объект, что и a:

a = [1,2,3]
b = a
c = [1,2,3]

Проверьте равенство и обратите внимание, что все объекты равны:
print(a == b)
print(a == c)
#=> True
#=> True

Но являются ли все они идентичными? Нет:
print(a is b)
print(a is c)
#=> True
#=> False

Можем проверить это, распечатав их идентификаторы объектов:
print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624

#собес_academy
👍5
✏️ Вопрос с реального собеседования по Python

Что такое функция range() и как её использовать

Функция range() создаёт последовательности целых чисел. Её можно применять в трёх вариантах:

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

1️⃣ range(stop): генерирует числа от 0 до значения stop (не включая его).

[x for x in range(10)]
# Результат: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


2️⃣ range(start, stop): генерирует числа от значения start до stop (также не включая stop).

[x for x in range(3, 10)]
# Результат: [3, 4, 5, 6, 7, 8, 9]


3️⃣ range(start, stop, step): создаёт последовательность от start до stop, с шагом, равным значению step.

[x for x in range(2, 10, 2)]
# Результат: [2, 4, 6, 8]


#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
✏️ Вопрос с реального собеседования по Python

Определите класс book с двумя атрибутами: название и автор. Затем создайте экземпляр и верните автора

Вот как это сделать:

class Book:
def __init__(self, название, автор):
self.название = название
self.автор = автор

# Создаем экземпляр класса
книга = Book('Мастер и Маргарита', 'Михаил Булгаков')

# Выводим автора
книга.автор
# => 'Михаил Булгаков


#собес_academy
👍8
✏️ Вопрос с реального собеседования по Python

В чём разница между методами экземпляра, класса и статическими методами?

Методы экземпляра используют параметр self и относятся к конкретному экземпляру класса.

Статические методы с декоратором @staticmethod не связаны с экземпляром класса и не могут изменять его атрибуты.

Методы класса принимают параметр cls и позволяют изменять сам класс.

class TeaShop:
specialty = 'green tea'

def __init__(self, tea_price):
self.tea_price = tea_price

# instance method
def make_tea(self):
print(f'Making {self.specialty} for ${self.tea_price}')

# static method
@staticmethod
def check_weather(): // Статический метод просто сообщает, что солнечно, не взаимодействуя с экземпляром или классом
print('Its sunny')

# class method
@classmethod
def change_specialty(cls, specialty): // Метод класса меняет фирменный напиток
cls.specialty = specialty
print(f'Specialty changed to {specialty}')

tea_shop = TeaShop(5) // Метод экземпляра (make_tea) создаёт чай с текущими атрибутами экземпляра
tea_shop.make_tea()
# => Making green tea for $5


#собес_academy
👍3
✏️ Вопрос с реального собеседования по Python

В чём разница между func и func()?

func — это объект функции, а func() — это вызов функции.

func: Это объект самой функции, который можно сохранить в переменную, передать в качестве аргумента другой функции. Например, если присвоить func новой переменной, например, new_func = func, то new_func() будет эквивалентен вызову func(). Без круглых скобок функция не выполняется, она просто существует как объект.

func(): Это фактический вызов функции. Круглые скобки указывают Python на выполнение кода внутри функции и возврат её результата. Если бы функция принимала аргументы, они передавались бы в скобках — например, func(arg1, arg2).

Пример для наглядности:
def func():
print('I am a function')

# Присваиваем функцию переменной
new_func = func
new_func() # Вывод: I am a function

# Передаем функцию как аргумент другой функции
def call_func(f):
f() # Вызов переданной функции

call_func(func) # Вывод: I am a function

#собес_academy
👍5
✏️ Вопрос с реального собеседования по Python

Объясните, как работает функция map

map возвращает итератор, который применяет функцию к каждому элементу списка. Если нужно, его можно преобразовать в список:
def add_three(y):
return y + 3

li = [1, 2, 3]
list(map(add_three, li))
#=> [4, 5, 6]

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

#собес_academy
👍2
✏️ Вопрос с реального собеседования по Python

Объясните, как работает функция reduce

Функция reduce может сначала показаться сложной, но как только вы попробуете её несколько раз, всё встанет на свои места.

🌻 Что делает reduce?

Она принимает функцию и последовательность. Затем последовательно применяет эту функцию к элементам, начиная с первых двух, и продолжает использовать результат предыдущей операции на следующем шаге. На выходе остаётся одно итоговое значение.

from functools import reduce

# Определяем функцию сложения
def сложить_числа(первое, второе):
return первое + второе

# Исходный список
числа = [1, 2, 3, 5]

# Применяем reduce
итог = reduce(сложить_числа, числа)
print(итог) # => 11

#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
1
✏️ Вопрос с реального собеседования по Python

Как работает функция filter

Функция filter выполняет задачу, полностью соответствующую своему названию: она отбирает элементы из последовательности, которые соответствуют заданному условию.

Каждый элемент последовательности передается в указанную функцию. Если функция возвращает True, элемент остается в результате, если False — он исключается.

def is_even(number):
return number % 2 == 0

array = [1, 2, 3, 4, 5, 6, 7, 8]

filtered = [item for item in filter(is_even, array)]
print(filtered)
# Output: [2, 4, 6, 8]

В результате остаются только те элементы, которые делятся на 2 без остатка, а остальные удаляются из последовательности.

#собес_academy
👍1
✏️ Вопрос с реального собеседования по Python

Переменные в Python передаются по ссылке или по значению?

В Python переменные передаются по ссылке, но есть нюанс: одни объекты хранятся как данные, другие — как указатели.

Например, строки неизменяемы: если изменить их внутри функции, создаётся новый объект, а старый остаётся неизменным. Делая x = 'text' и y = x, вы создаёте две ссылки на один объект. Но если изменить x, это уже будет новая сущность, а y останется прежним.

#собес_academy
🔥1
✏️ Вопрос с реального собеседования по Python

Как развернуть список?

Метод reverse() переворачивает список, но не возвращает его. Он изменяет сам объект.

Пример:

li = ['a', 'b', 'c']
print(li) # ['a', 'b', 'c']
li.reverse()
print(li) # ['c', 'b', 'a']

Если нужно получить новый перевёрнутый список, используйте срез:
new_list = li[::-1]

#собес_academy
👍1
✏️ Вопрос с реального собеседования по Python

Как работает умножение строк в Python?

Допустим, у нас есть строка 'cat', и мы хотим умножить её на 3. Давайте посмотрим:

'cat' * 3
# => 'catcatcat'


Что произошло?

Python просто повторил содержимое строки трижды и вернул новый результат. Это удобно, когда нужно быстро создать повторяющийся шаблон или, например, добавить разделитель

#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍1
✏️ Вопрос с реального собеседования по Python

Как работает умножение списка в Python?

Когда в Python вы умножаете список на число, вы фактически дублируете его содержимое нужное количество раз. Давайте посмотрим, как это работает на примере:

my_list = [1, 2, 3]
result = my_list * 2
print(result)
# [1, 2, 3, 1, 2, 3]


Что произошло?

Список [1, 2, 3] скопировался дважды, и в результате получился новый список длиной 6 элементов.

#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁2
✏️ Вопрос с реального собеседования по Python

Что такое self в Python

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

📌 Пример:
class Shirt:
def __init__(self, color):
self.color = color # Свойство привязывается к экземпляру

s = Shirt('yellow') # Создаём рубашку жёлтого цвета
print(s.color) # => 'yellow'


Что произошло

С
помощью self мы задаём и используем свойства экземпляра, такие как color. В данном случае, self.color — это свойство, доступное конкретной рубашке.

#собес_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁1💯1
✏️ Вопрос с реального собеседования по Python

Как объединить списки

Для объединения списков достаточно сложить их с помощью оператора +.

list1 = [10, 20]
list2 = [30, 40, 50]

result = list1 + list2
print(result)
# Вывод: [10, 20, 30, 40, 50]


Но помните: этот способ работает только со списками. Если вы попробуете объединить массивы (например, из NumPy), ничего не выйдет. Для массивов нужно использовать методы библиотеки, такие как np.concatenate()

#собес_academy
👍3