Machine learning Interview
24.5K subscribers
1.05K photos
74 videos
12 files
712 links
Разбираем вопросы с собеседований по Machine Learning, Data Science, Deep Learning и Нейронным сетям, Python.

Вопросы - @notxxx1


@itchannels_telegram -🔥лучшие it каналы

РКН: clck.ru/3FmwRz
Download Telegram
📌 Тестовое задание по python

Мы уже создавали матрицу спирали, теперь создадим полноценный проект.
Необходимо реализовать Python-библиотеку, которая осуществляет получение квадратной матрицы (NxN) с удалённого сервера и возвращает её пользователю в виде List[int]. Этот список должен содержать результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла (см. test case ниже).

Пример исходной матрицы:

+-----+-----+-----+-----+
| 10 | 20 | 30 | 40 |
+-----+-----+-----+-----+
| 50 | 60 | 70 | 80 |
+-----+-----+-----+-----+
| 90 | 100 | 110 | 120 |
+-----+-----+-----+-----+
| 130 | 140 | 150 | 160 |
+-----+-----+-----+-----+



Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается.

Требования к выполнению и оформлению
Библиотека содержит функцию со следующим интерфейсом:

async def get_matrix(url: str) -> List[int]:
...
Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S).

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

Взаимодействие с сервером должно быть реализовано асинхронно - посредством aiohttp, httpx или другого компонента на asyncio.

Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused, ...).

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

Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket). Можно также выслать решение в виде архива (zip, tar). Загружать библиотеку в PyPi или другие репозитории не требуется.

Проверка решения
Для самостоятельной проверки можно использовать следующий test case:

SOURCE_URL = 'https://raw.githubusercontent.com/avito-tech/python-trainee-assignment/main/matrix.txt'
TRAVERSAL = [
10, 50, 90, 130,
140, 150, 160, 120,
80, 40, 30, 20,
60, 100, 110, 70,
]

def test_get_matrix():
assert asyncio.run(get_matrix(SOURCE_URL)) == TRAVERSAL

Загружайте свои решения и отправляйте ссылки в комментарии👇

@machinelearning_interview
Задача с кодом. Монетная кооперация

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

Если бросить монетку в аппарат, человек, стоящий за стеной, получит 3 монетки. И наоборот.

Если оба человека будут честно тратить свои монетки, чтобы второй получил прибыль (т.е. делиться, share), оба они будут получать по 2 монетки прибыли по очереди.

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

Задание
Допустим, у каждого человека есть по 3 монетки. Создайте функцию, которая будет высчитывать прибыль обоих людей. На вход функция будет принимать два списка строк. Списки будут представлять поведение этих людей (слова share и/или steal)

Примеры
balances(["share"], ["share"]) ➞ [5, 5]
# Оба человека тратят по монетке и получают по 3.

get_coin_balances(["steal"], ["share"]) ➞ [6, 2]
# Первый человек получает 3 монетки, второй тратит одну.

get_coin_balances(["steal"], ["steal"]) ➞ [3, 3]
# Никто ничего не тратит и не получает, остаются при своих.

get_coin_balances(["share", "share", "share"], ["steal", "share", "steal"]) ➞ [3, 11]

Примечания
- В «минус» никто не уйдет, так что числа всегда будут положительными.
- Слова будут передаваться в нижнем регистре.

#задача #coding
Please open Telegram to view this post
VIEW IN TELEGRAM
🎲 Расскажите что такое индуктивная вероятность? Дайте определение минимальной длине описания / сообщения

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

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

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

Бритва Оккама говорит, что «простейшая теория, согласующаяся с данными, скорее всего, верна». «Простейшая теория» интерпретируется как представление теории, написанной на этом внутреннем языке. Теория с кратчайшей кодировкой на этом внутреннем языке, скорее всего, верна.

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

На первый взгляд теорема Байеса кажется отличной от принципа минимальной длины сообщения / описания. При ближайшем рассмотрении оказывается то же самое. Теорема Байеса касается условных вероятностей и утверждает вероятность того, что событие B произойдет, если сначала произойдет событие A:

P (A ∧ 😎 = P (B) ⋅ P (A | 😎 = P (A) ⋅ P (B | A) {\ displaystyle P (A \ land 😎 = P (B) \ cdot P (A | 😎 = P (A) \ cdot P (B | A)}
становится с точки зрения сообщения длина L,

L (A ∧ 😎 = L (B) + L (A | 😎 = L (A) + L (B | A). {\ displaystyle L (A \ land 😎 = L (B) + L (A | 😎 = L (A) + L (B | A).}
Это означает, что если вся информация дается с описанием event, то длина информации может быть использована для определения исходной вероятности события. Таким образом, если дана информация, описывающая возникновение A, вместе с информацией, описывающей B для данного A, то была предоставлена ​​вся информация, описывающая A и B.

@machinelearning_interview
Ищу ML специалиста для решения задачи компьютерного зрения

Мы компания metadreamteam.io - амбициозная команда XR разработчиков и 3Д артистов, работающая на американском рынке, которая делает проекты для всего мира! От Екомерс до real estate. От внедрения лучших решений на рынке до создания своих разработок с нуля.

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

Работа удаленная. Фриланс. Оплата от $25 в час
(160 - 400 тыс руб за проект)

Если ты хочешь работать с лучшими в индустрии, делать амбициозные проекты и зарабатывать в валюте - тогда заполняй эту форму, чтобы присоединиться к нам! https://forms.gle/ovrkQDMasSBWsR538
Задача

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

Примечание: ноль – это чётное число (делится на 2 без остатка)

Решение: сначала найдём общее количество исходов. По условию, абонент помнит, что одна из цифр – ноль, а другая цифра – нечётная. Здесь рациональнее не мудрить с комбинаторикой и воспользоваться методом прямого перечисления исходов. То есть, при оформлении решения просто записываем все возможные комбинации:
01, 03, 05, 07, 09
10, 30, 50, 70, 90


и подсчитываем их – всего: 10 исходов.

Благоприятствующий исход один: верный номер.

По классическому определению:
p
=1/10 = 0.1 – вероятность того, что абонент наберёт правильный номер

Ответ: 0,1

@machinelearning_interview
🎲 Задача. Найти вероятность того, что при бросании двух игральных костей в сумме выпадет:

а) пять очков;
б) не более четырёх очков;
в) от 3-х до 9 очков включительно.

Решение задачи .

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

Иными словами, каждая грань
1-го кубика может составить упорядоченную пару с каждой гранью 2-го кубика. Условимся записывать такую пару в виде (a, b) , где a – цифра, выпавшая на 1-м кубике, b – цифра, выпавшая на 2-м кубике. Например:

(3, 5) – на первом кубике выпало 3 очка, на втором – 5 очков, сумма очков: 3 + 5 = 8;
(6, 1) – на первом кубике выпало 6 очков, на втором – 1 очко, сумма очков: 6 + 1 = 7;
(2, 2) – на обеих костях выпало 2 очка, сумма: 2 + 2 = 4.

Очевидно, что наименьшую сумму даёт пара (1, 1) , а наибольшую – две «шестёрки».

а) Рассмотрим событие: A
– при бросании двух игральных костей выпадет 5 очков. Запишем и подсчитаем количество исходов, которые благоприятствуют данному событию:
(1, 4); (4, 1); (2, 3); (3, 2).

Итого: 4 благоприятствующих исхода. По классическому определению:
Р(А) = 4/36 = 1/9– искомая вероятность.

б) Рассмотрим событие: В – выпадет не более 4-х очков. То есть, либо 2, либо 3, либо 4 очка. Снова перечисляем и подсчитываем благоприятствующие комбинации, слева будем записывать суммарное количество очков, а после двоеточия – подходящие пары:
2 очка: (1; 1);

3 очка: (1; 2); (2; 1);

4 очка: (2; 2); (1; 3); (3; 1).

Итого: 6 благоприятствующих комбинаций.
Таким образом:
Р(В) = 6/36 = 1/6 – вероятность того, что выпадет не более 4-х очков.

в) Рассмотрим событие: С
– выпадет от 3-х до 9 очков включительно.

Здесь можно пойти прямой дорогой, но… что-то не хочется. Да, некоторые пары уже перечислены в предыдущих пунктах, но работы все равно предстоит многовато.

Как лучше поступить? В подобных случаях рациональным оказывается окольный путь. Рассмотрим противоположное событие: С1 – выпадет 2 или 10 или 11 или 12 очков.

В чём смысл?
Противоположному событию благоприятствует значительно меньшее количество пар:
2 очка: (1; 1);

10 очков: (4; 6); (6; 4); (5; 5);

11 очков: (5; 6); (6; 5);

12 очков: (6; 6).

Итого: 7 благоприятствующих исходов.

По классическому определению:
Р(С1) = 7/36 – вероятность того, что выпадет меньше трёх или больше 9-ти очков.

Далее пользуемся тем, что сумма вероятностей противоположных событий равна единице:
Р(С) + Р(С1) = 1;

Р(С) = 1 - Р(С1) = 1 - 7/36 = 29/36 – вероятность того, что выпадет от 3-х до 9 очков включительно.

Особо щепетильные люди могут перечислить все 29 пар, выполнив тем самым проверку.

Ответ: а) 1/9; б) 1/6; в) 29/36.


@machinelearning_interview
Решения упражнений онлайн-курса "Машинное обучение и анализ данных"

Упражнения по машинному обучению и анализу данных (ИТМО, ПИиКТ-СиППО,)

🖥 GIthub

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Решение задач Hackaton TiNT (ITMO) machine learning February 2019 Хакатон ТИнТ (ИТМО) по машинному обучению Февраль 2019

В основном, все задания из олимпиады "Я -проффесионал" от Яндекса по анправлению Большие Данные

🖥 GIthub

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Опишите процесс создание системы связывания сущностей ?

Связывание именованных сущностей (NEL) — это процесс обнаружения и связывания упоминаний сущностей в заданном тексте с соответствующими сущностями в целевой базе знаний. Связывание сущностей состоит из двух частей:

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

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

В предложении / тексте говорится: «Майкл Джордан — профессор машинного обучения в Калифорнийском университете в Беркли». Первый NER обнаруживает и классифицирует названные сущности Майкла Джордана и Калифорнийского университета в Беркли как человека и организацию.

Затем имеет место разрешение неоднозначности. Предположим, что в данной базе знаний есть две сущности «Майкл Джордан», профессор Калифорнийского университета в Беркли и спортсмен. Майкл Джордан в тексте связан с профессором Калифорнийского университета в Беркли, сущностью в базе знаний. Точно так же Калифорнийский университет в Беркли в тексте связан с юридическим лицом Калифорнийского университета в базе знаний.

Приложения

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

Семантический поиск
Анализ содержания
Вопросно-ответные системы / чат-боты / виртуальные помощники

Все вышеупомянутые приложения требуют высокоуровневого представления текста, в котором понятия, относящиеся к приложению, отделены от текста и других не имеющих смысла данных.

Постановка задачи
Интервьюер попросил вас разработать систему связывания сущностей, которая:

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

«Имея текст и базу знаний, найдите все объекты, упомянутые в тексте (Распознать). А затем свяжите их с соответствующей правильной записью в базе знаний (Устранение неоднозначности)».

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

Как бы вы построили систему распознавания сущностей?
Как бы вы построили систему устранения неоднозначности?
Учитывая фрагмент текста, как бы вы извлекли всех людей, страны и предприятия, упомянутые в нем?
Как бы вы измерили производительность средства устранения неоднозначности / распознавателя объектов / компоновщика объектов?
Учитывая несколько средств устранения неоднозначности / распознавателей / лайнеров, как бы вы определить, какой из них лучший?

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Тестовое задание по 3D ML

Всего представлено три задания. Описание для каждой задачи можно найти в соответствующей директории. Они оформлены в Jupyter Notebook:

Task1
Task2
Task3
Task4 (зависит от решения Task3)

При выполнении заданий необходимо описать ход своих мыслей и основные идеи, которые были использованы. Можно оформить в Jupyter Notebook или Google Colab. Нужно отправить исходный код решения задач. Крайне желательно со ссылкой на GitHub, Bitbucket, GitLab или другое хранилище репозиториев Git.

Основные критерии оценки выполнения заданий:

Код написан в едином стиле.
Соблюдены основные соглашения, принятые в сообществе. Например, PEP 8 для Python, Google C++ style и т. п. Стиль может быть разным, но весь код должен быть оформлен в едином стиле.
Насколько он кроссплатформенный.
Как организована структура проекта.
В части Docker. Насколько оптимально написана сборка с точки зрения размера образа и сколько инструкций будут выполняться в случае изменения основного кода приложения (если всё собирается заново, то это не очень хорошо). Основные моменты смотрите в документации
Желательно, чтобы код был написан на Python 3. Какие-то части могут быть написаны на других языках программирования: C, C++, CUDA C/C++.

Запуск проекта должен осуществляться достаточно просто. Если проект на Python 3, то он должен быть с файлом, в котором перечислены зависимости: requirements.txt, файл для Poetry или конфигурационный файл окружения для Anaconda.

Проекты на C/C++ должны снабжаться CMake файлом для сборки.

Мы можем запустить ваши примеры в окружении Linux Ubuntu 18.04 или 20.04, Windows 10, а также в Docker, поэтому лучше явно указывать на какой ОС предполагается запуск, если от этого зависят какие-то части в решении.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Курс «Машинное обучение» на МКН СПбГУ
Аннотация


Объемный годовой курс, в котором подробно рассматриваются модели машинного обучения.

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

🖥 Github

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Как не завалить испытательный срок

Получить оффер джуну становится всё сложнее: несколько собесов, тестовое задание, интервью с техдиром или руководителем. И на каждом этапе можно получить отказ. И если всё-таки удалось получить оффер, то начинается испытательный срок, который можно завалить по самым разным причинам.

Чтобы этого избежать, бизнес-аналитик и продакт-менеджер с 10-летним стажем дал несколько рекомендаций по успешному прохождению испытательного срока:

https://devby.io/blogs/posts/good-junior

#советы
Python_вопросы_и_ответы_на_интервью.pdf
335.4 KB
Список вопросов и ответов для подготовки перед собеседованием на Python разработчика

#python #cheatsheet #job #datascience

@machinelearning_interview
Вопросы с технического собеседования на позицию инженер по машинному обучению и компьютерному зрению.

🖥 Github

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🗣Подборка статей для подготовки к собеседованиям по машинному обучению.

1. Вопросы для собеседования по ML 1.1

2. Вопросы с собеседовании по машинному обучению uproger.

3. @machinelearning_interview - телеграм канал с разбором вопросов с собеседований мл.

4. 20 основных вопросов для собеседования по машинному обучению

5. Разберитесь в 40 популярных вопросах для собеседования по машинному обучению

6. Ресурсы для собеседования : ML/Data Science/AI Research Engineer

7. Вопросы и ответы на интервью по ML

8. A Guide To Machine Learning Interview Questions And Answers

9. 6 лучших алгоритмов машинного обучения

10. Подготовка к собеседованию по машинному обучению - алгоритмы ML

11. Машинное обучение IP - EDUREKA - Вопросы и ответы

12. 100 распространенных вопросов для интервью по ML

13. Вопросы для собеседования по машинному обучению - Криш Наик

14. Data Science Interviewer Pro By Emma Ding

15. Вопросы для собеседования по науке о данных Краткий обзор от Simplilearn

16. Наиболее часто задаваемые вопросы на собеседовании по AI/ML

17. Вопросы для собеседования по машинному обучению.

18. @python_job_interview - вопросы с собеседований python, ds.

Сохраняем себе, чтобы не потерять

@data_analysis_ml
⭐️ Пособие для технических интервью.

Здесь представлены бесплатные и курируемые материалы по подготовке к техническим собеседованиям для занятых инженеро. Более 500 000 человек воспользовались этим пособием!

🖥 Github

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Где искать работу Дата Саентисту?

Собрали для вас список площадок для поиска работы или фрланс-проекта в области Data Science.

1. Toptal
Toptal - один из крупнейших фриланс сайтов для специалистов по анализу данных. В отличие от многих других бирж фриланса в Toptal соискатели проходят тестирование в различных областях, включая знание английского языка и технические навыки, в области SQL и Python для data science.

2. Open Data Science Jobs
Open Data Science Jobs - одна из крупнейших площадок вакансий, посвященных только науке о данных. Такие компании, как Bose, использовали эту доску объявлений для поиска специалистов по науке о данных для оптимизации своей бизнес-аналитики.

3. Kaggle
Kaggle - одно из крупнейших сообществ датасаентистов. Kaggle предоставляет наборы данных, проводит соревнования и вообще способствует процветанию сообщества специалистов по анализу данных.

Доска вакансий Kaggle - один из лучших вариантов для начала поиска проекта для рабрты. Ее услугами пользуются крупнейшие компании (Amazon, Capital One и AIG и тд).

4. Scalable Path

Если у вас есть готовая команда датасаентистов и вы хотите найти интерсный проект , Scalable Path - отличный вариант.

5. Gigster
Еще одина крупная фриланс площадка с проектами ds.

6. iCrunchData - это доска объявлений c вакансиями в области науки о данных.

7. X-Team
X-Team - рынок фриланса, где можно работать, как одному, так и в команде.

8. Gun.io
Gun.io очень похож на Toptal, быстро и эффективно подбирая для компаний квалифицированных инженеров по науке о данных. С тысячами зарегистрированных членов Gun.io является восходящей звездой в индустрии фриаланса.

9. R-users
Простой поиск по сайту R-users позволяет найти десятки вакансий в области науки о данных, в которых используется язык программирования R.

10. AngelList
AngelList - это место, где встречаются ит- предприниматели и инвесторы.

11. Engineering Jobs
Если вы ищете ds проект Engineering Jobs может стать отличным местом для поиска интересной работы.

12. Dice
Dice - доскоа объявлений о карьере в сфере технологий и ИТ. Эта доска известна тем, что привлекает архитекторов программного обеспечения, инженеров, QA-тестеров и инженеров по анализу данных.

13. SimplyHired
SimplyHired - это еще одна крупная доска объявлений о работе, похожая на Indeed или Monster.

14. Upwork
Одна из крупнейших фриланс площадок, где постоянно публикуются ds проекты.

15. Папка с каналами для поиска работы в телеграме.

Телеграм каналы и чаты, где публикуются вакансии ds, python и не только. Очень полезная папка (папки поддерживаются только в последних версиях тг), где можно найти вакансию на любой ЯП.

@machinelearning_interview