Мат стат
1. Что такое нормальное распределение и каковы его основные свойства?
2. Что такое доверительный интервал, и как он используется в анализе данных?
3. Объясни разницу между корреляцией и причинно-следственной связью. Можешь привести пример?
Базы данных
4. Что такое репликация? Что такое партиционирование? Что такое шардирование?
5. Чем различаются команды DELETE, TRUNCATE и DROP в SQL?
6. Что такое нормализация и зачем она нужна?
7. Объясните разницу между HAVING и WHERE в SQL.
Python
8. Что выведет следующий код:
import pandas as pd
df = pd.DataFrame({
'col1': [1, 2, 2, 3],
'col2': ['A', 'B', 'A', 'B']
})
result = df.groupby('col2')['col1'].sum()
print(result)9. Что выведет следующий код:
def make_counter():
count = [0]
def increment():
count[0] += 1
return count[0]
return increment
counter = make_counter()
print(counter())
print(counter())10. Что выведет следующий код:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
df['C'] = df.apply(lambda row: row['A'] * row['B'], axis=1)
print(df)11. Что выведет следующий код:
try:
x = int("hello")
except ValueError:
print("Caught ValueError")
finally:
print("Finally block executed")12. Что выведет следующий код:
def modify_list(lst):
lst.append(4)
lst = [1, 2, 3]
return lst
my_list = [0]
result = modify_list(my_list)
print(my_list)
print(result)SQL
Условие
Таблица Activity:
| player_id | device_id | event_date | games_played |
|---|---|---|---|
| 1 | 2 | 2016-03-01 | 5 |
| 1 | 2 | 2016-03-02 | 6 |
| 2 | 3 | 2017-06-25 | 1 |
| 3 | 1 | 2016-03-02 | 0 |
| 3 | 4 | 2018-07-03 | 5 |
13. Задача: Нужно найти долю игроков, которые вошли в игру на следующий день после первого входа. Результат необходимо округлить до двух знаков после запятой. Важно подсчитать, сколько игроков вошли в игру хотя бы два дня подряд, начиная с их первого дня, и разделить это количество на общее количество игроков.
WITH next_day_players AS (
SELECT DISTINCT player_id AS next_day_player
FROM activity a1 JOIN activity a2 ON a1.event_date=a2.event_date - INTERVAL '1 day' AND a1.player_id=a2.player_id
)
SELECT COUNT(next_day_player)
FROM activityWITH next_day_players AS (
SELECT player_id, event_date, LEAD(event_date) OVER(PARTITION BY player_id) as next_playdate, ROW_NUMBER() OVER(PARTITION BY player_id ORDER BY event_date) as rnk
FROM activity
)
SELECT COUNT(DISTINCT player_id) FILTER(WHERE next_playdate - INTERVAL '1 day' = event_date) / COUNT(DISTINCT player_id)
FROM next_day_players
WHERE rnk=1Python
Условие
Вам предоставлен набор данных о продажах продуктов в различных магазинах за последние 5 лет. Данные содержат информацию о дате покупки, категории товара, количестве проданных единиц и общей сумме продаж.
14. Задача: Проверьте датасет на аномальные значения, если они есть то предложите пример решения проблемы.
15. Задача: Проведите исследовательский анализ данных (EDA): оцените изменение продаж по месяцам, выявите категории с наибольшими и наименьшими объемами продаж, постройте график сезонных колебаний продаж, определите наличие статистически значимых различий в среднем объеме продаж между городами.
16. Задача: Постройте дашборд с основными метриками (выручка, количество заказов, средний чек).
17. Задача: Сформулируйте рекомендации по увеличению продаж на основе проведенного анализа.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('/content/sales_data.csv', sep=';')
df.head()Дополнительно
Тестирование состоит из 4 частей: вопросы по мат. стат. и БД (1 задание), Python (5 заданий), SQL (1 задание) и аналитическая задача. Максимальное количество баллов: 20, продолжительность 90 минут. Позиция предполагает работу в команде продуктовой аналитики ИТ Маркетплейса или в команде HR-аналитики.