Thumbnail for Собеседование на аналитика данных. Разбор ОТВЕТОВ на вопросы (Python, SQL, ТЕРВЕР, статистика) by Noukash

Собеседование на аналитика данных. Разбор ОТВЕТОВ на вопросы (Python, SQL, ТЕРВЕР, статистика)

Noukash

20m 50s2,928 words~15 min read
Auto-Generated

[0:00]Поздравляю тебя, ты преувелел самую сложную часть, ты уже добрался до собеседования на аналитика. И вот, можно сказать, в этом видео у нас пройдёт необычное собеседование, потому что я буду задавать вопросы по каждой из компетенций: SQL, Python, статистика и твервер. И я сразу же буду давать тебе готовые ответы, чтобы когда ты пошёл на своё настоящее, реальное собеседование, у тебя сильно увеличились шансы. Многие из этих вопросов, которые я буду разбирать в этом видео, мне уже на протяжении карьеры моей, а я ведущий продуктовый аналитик, задавали, и я на них уже успешно отвечал, теперь ответишь и ты. Привет, меня зовут Андрей, я помогаю айтишникам жить лучше и зарабатывать больше. Первая секция - вопросы по SQL. Какие я спрашиваю? Самый базовый, самый простой вопрос. В чём разница между where и having? Тут очень легко запомнить, если ты много работал с SQL. Where - это происходит до агрегации, соответственно, where фильтрует каждый отдельный ряд. Having происходит после агрегации. Следующее тебя обязательно спросит: в чём разница между union и union all? Вроде и тот, и другой присоединяет строки и синтаксис похожий. Union, запомни, он дубликаты удаляет. Union all присоединяет просто сразу же всё. Потом тебя спросят: о'кей, ладно, а вот как с дубликатами ты будешь разбираться? Представь себе, что у тебя есть ряд, и э в некоторой колонке есть дублицированные значения, то есть две строки, в которых одно и то же значение. Допустим, айдишник. Как ты будешь решать эту задачу? А я лично люблю решать такие задачи на собеседовании через оконную функцию, через Row Number. Мы делим, соответственно, наше окно по айдишнику и, соответственно, оно проходит по каждому айдишнику. Читает: первый айдишник, первый айдишник, первый айдишник. О, первый, второй айдишник, да? Первый айдишник, первый айдишник, и так далее, и так далее. И мы можем таким образом очень спокойно отфильтровать потом наши значения и вывести только дубликаты и удалить их, и с ними что-то сделать, как-то их поменять и так далее. Такой же подход используется в задачах, допустим, когда тебе дают таблицу, и в ней в таблице есть сотрудники, и для них есть зарплата. Да, вот два буквально столбца. И тебе говорят: ну, найди сначала максимальную зарплату. Ты пишешь там Select, Max, Salary, и так далее. Тебе говорят: о, отлично, а теперь найди вторую самую максимальную зарплату. Топорный способ есть, это когда ты просто добавляешь условия, где там зарплата не является максимальной, то есть делаешь такой небольшой подзапрос. Но на самом деле здесь всё так же решается оконной функцией. То есть ты сортируешь свои зарплаты, и ты выделяешь самую высокую зарплату, и ты можешь вернуть хоть и первую, хоть вторую, хоть третью, хоть четвёртую, хоть пятую. Потому что с помощью оконной функции ты их проранжировал. Следующее, тебя спросят: вот смотри, вот тебе есть запрос, а что с ним не так? Почему он не выполняется? Это то, на чём любят ловить новичков. Ты говори сразу же, глядя в глаза: нельзя в вер фильтровать по Алиасом. Потому что назначение вот этого Алиаса, Year of Birth, год рождения, оно происходит после того, как происходит фильтрация. Он тебя спросит: о'кей, дружище, поменяй этот запрос. Ты говоришь: вообще без проблем. В можно поместить вот эту вот функцию Year User Birthdate и по ней уже, соответственно, отфильтровать. А после небольшой рекламной паузы я перейду к секциям по Питону, статистике и тверверу. Не проматывай.

[3:39]Я постоянно говорю на канале, что важно с помощью портфолио выделиться на фоне других кандидатов, особенно, если у вас ещё немного опыта. Ведь самое важное в начале карьеры - это подтвердить то, что у вас уже есть релевантный профессиональный опыт. С этой сложностью сталкивается любой в IT: дизайнер, программист, разработчик, интернет-маркетолог и аналитик данных. И для тех, кто хочет набраться опыта и набрать реальных проектов в своё портфолио, онлайн-сервис цифровых профессий Яндекс Практикум создали мастерскую. Это агентство, где вы можете получить практический опыт на реальных проектах от бизнес-заказчиков и некоммерческих организаций. Мастерская открыта в десяти программах курсов Практикума и является частью трудоустройства выпускников. Под руководством опытных наставников вы будете выполнять некоммерческие и коммерческие проекты и решать реальные задачи от реальных заказчиков. Студенты создают сайты, веб-приложения, ботов, тестируют сервисы, анализируют пользовательский опыт и помогают принимать бизнесу важные решения. Как только вы освоите IT-профессию в Яндекс Практикуме, вы можете подать заявку на проект в мастерскую, как на вакансию. Проекты достаются части дошедших студентов. Познакомиться с выполненными выпускниками проектами вы можете на сайте мастерской и решить для себя, насколько ваше портфолио было бы лучше, будь в нём похожие проекты. А чтобы узнать, какой проект отправится в ваше портфолио, сыграйте в игру, чтобы узнать, где взять реальные проекты и как получить преимущество при устройстве на работу.

[5:29]Итак, возвращаемся после рекламы, глаза в кучу, смотрим. Следующая категория - это Питон. Часто вопрос, который встречается на моё понимание - это в чём разница между списком и кортежем? Или list и tuple? Ну, в первую очередь, вы должны понимать, что кортеж является неизменяемым, список является изменяемым. И, соответственно, от этого они занимают очень разное количество места в памяти. Это второе. Третье - то, что мы можем делать со списком, мы не можем делать с кортежем, и наоборот. У них есть разные абсолютно use-кейсы. И последнее, четвёртое - это синтаксис. Визитная карточка кортежа - это круглые скобки, и визитная карточка списка - это квадратные скобки. Следующее, вас могут попросить создать dataframe из CSV, из списка, из массива. Если вы не знаете, как это делать, то вот есть базовая документация. Но это обязательно нужно знать. Вам дадут и скажут: сделай из этого dataframe, и потом мы будем с ним производить некоторые манипуляции. Следующее, могут тебя спросить, что такое декоратор? Я лично не особо использую их как-то в работе, но периодически бывают спрашивают. Очень легко. Ты говори: декоратор - это некоторая функция, которая принимает себе аргументом на вход другую функцию, добавляет некией функционал и возвращает. Это нужно, когда нужно, допустим, провести массовое изменение, допустим, у тебя есть 100 различных функций, да, ну, вот, как у аналитика. И тебе нужно к ним добавить какой-то новый функционал, как-то их обновить. Вот, для этого могут быть полезны декораторы. Пример, как это может выглядеть. Следующее, вот что я уже использую, и про что закономерно спрашивают. Да, вот про декоратор мог бы не отвечать, а вот про это ответить обязательно. Это функция Map. Зачем она нужна, спросит, и как её применять? Map нужна, когда у тебя есть некоторый список или dataframe, ну, в общем, какой-то ряд некоторый, и тебе нужно применить определённую функцию к каждому отдельному элементу. И Map, соответственно, может пройтись по каждому отдельному элементу и применить эту функцию. Допустим, у тебя есть некоторый массив или числовой ряд, и ты хочешь с каждым элементом произвести некоторую манипуляцию, ну, допустим, умножить на два. То есть, может быть такое, вот я вот, как аналитик, мог бы такой use-кейс видеть. Выгрузил информацию по покупкам, и у меня есть выручка по каждой покупке в мобильном приложении, и ко мне приходит начальник и говорит: прикинь, что. Типа, оказывается, в сырых данных не учтён налог. Можешь, пожалуйста, а взять и вот эту вот выручку к ней прибавить налог? И я мог бы, в принципе, это использовать для того, чтобы пройтись, соответственно, по этому числовому ряду и применить какую-то дополнительную функцию, дополнительное вычисление к ней. Есть и другая функция, которая часто применяется - это reduce. А, reduce вот объяснение звучит так. Вот я, когда готовился к этому видео, думаю, нужно дать нормальное объяснение. Объяснение из него ни фига не понятно: кумулятивно применяет функцию к элементам итерируемой последовательности, сводя её к единственному значению. Самый простой пример, который есть, то есть представим, что у тебя есть просто функция там X + Y, ты хочешь этот reduce применить к своему списку, в списке есть 1, 2, 3, 4, 5. Она заходит в этот твой список. И она начинает считать: 1 + 2 сначала рассчитает, потом прибавляет следующий элемент + 3, потом ко всему этому прибавляет + 4, потом ко всему этому прибавляет + 5. И вот такое визуальное отображение этой функции мне очень помогает понять, что, в принципе, она делает. Так что я бы просто вот так вот бы и запомнил и несколько раз бы применил на тех данных, которые у вас есть. Переходим к следующей категории - статистика. Что могут спросить в статистике? Могут спросить базовое определение. Что такое, например, доверительный интервал? Тебя спросят: вот доверительный интервал, а девяносто пятипроцентный, что он значит? Я всегда отвечаю на этот таким образом: мы хотим найти некоторое истинное значение какого-то показателя. Там средняя, там, какая-то вероятность, ну, в общем, неважно, что. У нас есть множество сэмплов, бесконечное количество. И мы взяли для каждого из этих сэмплов, построили доверительный интервал с уровнем значимости 95%. У нас бесконечное количество этих доверительных интервалов, соответственно, есть, и для 95% этих доверительных интервалов, построенных с 95% уровнем значимости, они будут содержать как раз-таки то самое значение. То есть 5% интервалов с 95% уровнем значимости, они будут в молоко, то есть они не будут содержать то значение, которое мы пытаемся рассчитать. А 95% интервалов они его содержать будут. Надеюсь, не запутал, но вот отдельно можно почитать про это определение. Точно вас будут спрашивать, если аналитика, а, доверительный интервал, а, P-value, нормальное распределение, вот всякая такая база. Следующее, что лично я сам видел, спрашивают, это а, спрашивала компания Авито, они проводили такую штуку Weekend Offer для аналитиков. Суть в чём: у тебя есть несколько часов, чтобы ответить на набор задачек, и потом, если ты хорошо ответил, они зовут тебя на собеседование, и заодно собеседование дают тебе или не дают офер. Это было 2 года назад, на меня не обижаются. Часть вопросов я использовал видео про Chat GPT для аналитика, вот здесь вопрос, ну, как, посложнее. У них стоял со звёздочкой. Он вам говорит: представим себе, что некоторый менеджер пришёл к вам с задачей. Он говорит: смотри, Андрюх, у нас есть мобильное приложение, и в нём у каждого пользователя есть покупки, и, соответственно, есть средний чек. И мы вытащили 1.000 этих средних чеков. Можешь, пожалуйста, построить 95% доверительный интервал, где у нас будет медианный средний чек. И вот такая формулировка, ну, кстати, кому интересно, вот сам вот datacet со средними чеками я разбирать не буду, но он будет обязательно в Telegram-канале, чтобы вы могли себя проверить и потом сделать по тому ответу, который вам дам. Вот, что меня запутало в первый раз, когда я увидел это задание, это медианный средний чек. Но по факту, то есть тут не так важно медиану, а чего мы ищем. То есть у нас есть набор, да, числовой набор данных, и мы хотим найти, где находится у нас 95% доверительный интервал для медианы в рамках этого набора. Это мог бы быть не средний чек, это могла бы там высота или вес, это мог бы быть какой угодно, на самом деле, параметр. И для этого используется отдельная формула, вот она на экране, ссылка будет в описании. А, если вам интересно, не буду уж спойлерить. Возьмите этот датасет в моём Telegram-канале и попробуйте провести по этой формуле и рассчитать, какой же будет медианный средний чек. На самом деле просто подставляешь в неё другой. Задача была со звёздочкой, а, но если вы правильно умеете гуглить. На самом деле вот 90% этого, извиняюсь, немного отвлёкся, но это важно. 99% работы аналитиком - это умение правильно задавать вопросы. Соответственно, видишь такую задачу, такой: а, там, как найти доверительный интервал для медиан? Всё, первая ссылка в Гугле, а и ты, можно сказать, уже ковать. Итак, двигаемся дальше. Твервер. Представим себе, что вы работаете в компании, которая занимается кибербезопасностью. И вам сказали: 10% всех имейлов, которые к нам приходят, - это спам. Пользователь получил 100 имейлов. Какая вероятность, что хотя бы пять из 100 - это спам? Здесь всё очень просто. На самом деле нам нужно найти вероятность, по факту, какая вероятность, что ровно ноль имейлов у нас будет спам. То есть если вероятность того, что 10% имейлов спам, соответственно, 90% в сотой степени - это у нас и будет, если вот все имейлы, они пришли не спамовские. Потом у нас будет вероятность, что ровно один имейл спам, что у нас два имейла спам, три и четыре. И, соответственно, мы найдём вот эту вот вероятность, потом мы из единицы вычтем вероятность того, что 0, 1, 2, 3, 4 имейла спам. И у нас останется только вероятность, что пять или больше имейлов - это спам. Как же её найти? На самом деле для таких задач используется формула биномиального или биноминального. Не знаю, короче, распределение. Суть в чём: у нас есть вероятность, что каждый отдельный имейл спам. У нас есть вероятность, что каждый отдельный имейл не спам, но нам нужно найти, нам нужно сначала найти количество способов, каким способом мы можем выбрать четыре имейла из сотни имейлов. Четыре имейла из сотни есть множество разных способов. Это может быть первый имейл, может быть сотый имейл. Может быть первый, второй, третий, четвёртый, первый, второй, третий, пятый имейл, и так далее, и так далее. И тогда мы уже получим полную вероятность того, что как имейлы не мешает там первый, сотый, девяносто девятый.

[14:50]Вот, это суммарное количество всех кейсов, когда ровно один, ровно два, ровно три, ровно четыре имейла у нас будут спамом.

[15:37]А формула для этого на экране, можно подставить и получить прийти к ответу. Главное - понимать логику. Логика заключается в том, что для таких случаев, когда у нас есть базовая данная вероятность, нам нужно посчитать количество случаев того, что эта вероятность реализуется, нельзя её считать прямо в лоб, просто это нужно запомнить и прорешать задачу. Следующая задача, и эту задачу мне задавали один раз на собеседовании, и я её решил. Представьте себе пустынную дорогу, и за полчаса вероятность, что проедет хотя бы одна машина 95%. Какова вероятность, что проедет хотя бы одна машина за 10 минут? И тут это, задача, она такая очень контр-интуитивная и сразу непонятно, как м-м, за неё взяться. Но тут, если вы знаете базово хотя бы теорию вероятности, то у вас проблем не будет. Первая сложность заключается в том, что с одной стороны у нас есть полчаса, с другой стороны у нас есть 10 минут. То есть мы для простоты уточняем, что это три, как бы, равномерных отрезка, в них одинаково в каждом из отдельных отрезков одинаковая вероятность того, что проедет машина или не проедет машина. И мы смотрим, на самом деле вероятность того, что машина проедет за полчаса, хотя бы одна - 95%. А вероятность того, что не проедет - 5%. Но из чего она складывается? Она складывается из того, что должно произойти сразу три последовательных события. Машина не проехала в первые 10 минут, машина не проехала вторые 20 минут, ну, и машина не проехала в третью уже там 30 минут, получается. То есть, вероятность, что машина не проехала в 10 минут реализовалась один раз, умножить на вероятность того, что она реализовалась ещё раз, и умножить на то, что она реализовалась третий раз. Соответственно, вот эти вот 5%, которые мы в конце получаем, это вот эта вот вероятность того, что машина не проедет в 10 минут в кубе. Соответственно, если мы возьмём из 5% кубический корень, то мы получим вероятность того, что машина не проедет в 10 минут. Но нам-то нужно найти совершенно другое, нам нужно найти какая вероятность того, что хотя бы одна машина проедет в 10 минут. Но мы помним, мы, соответственно, у нас есть два варианта, машина либо проедет, либо не проедет, и мы из единицы просто вычитаем кубический корень из 5%. И приходим к нашему ответу, что является примерно 63,6%. Не запарите эту задачу, она крайне проста. Следующее, представьте себе, что у вас есть три друга в Тбилиси. Ну, вот я могу быть одним другом, вы нашли ещё двух, и у вас три друга в Тбилиси, и вы звоните, мне, допустим, позвонили и говорите: Андрюх, могу я в Тбилиси приехать или нет? Я говорю: нет, в Тбилиси дождь. И все три ваших друга в Тбилиси вам говорят: сейчас дождь, ливень, не приезжай. И для каждого из друзей есть вероятность 2/3 то, что они скажут вам правду, и 1/3 то, что они соврут, ну, просто, чтобы вас разыграть. И все три, напоминаю, сказали: идёт дождь. И какова вероятность, что действительно идёт дождь при условии, что все три сказали, что дождь идёт. И здесь она тоже контринтуитивная. Можно сказать, ну, вероятность тут 2/3 то, что сказали правду, да? 1/3 что соврали, соответственно, вероятность того, что идёт дождь - это 2/3 x 2/3 x 2/3. И получается какое-то не очень большое число, то есть крайне мало вероятно, что идёт дождь. Но на самом деле в таких случаях используется теорема Баейса. То есть у нас есть изначальное условие, какое-то оно произошло, и нам нужно сначала, чтобы рассчитать вероятность того, что все действительно вам сказали правду, рассчитать, сколько, в принципе, различных случаев может быть. Сейчас мы не будем запариваться того, как какая вероятность там дождя в Тбилиси, там сколько она, 50%, не 50%. Главное, нужно понимать, что, в принципе, здесь могло произойти? А произойти здесь могло только два случая. Или все друзья вам сказали правду и действительно идёт дождь, или все друзья вам соврали и дождя никакого не идёт. Никакого третьего, четвёртого, пятого варианта нету. То есть не может быть такого, что кто-то вам сказал правду, а кто-то вам соврал. Соответственно, есть только два этих случая, это база всех событий, которые мы могли произойти. Соответственно, это 2/3 в кубе плюс 1/3 в кубе. А реализовалась из них одна из вероятностей. Вы считаете вероятность для того, что все сказали правду. Соответственно, мы 2/3 в кубе делим на 2/3 в кубе плюс 1/3 в кубе. И на самом деле, оказывается, что вероятность дождя, она не маленькая, и она не 2/3, она в данном случае 88%. Обязательно подпишитесь на Telegram-канал, там я зашарил одну из задач по Питону с датасетом. Подпишитесь на этот канал, здесь будет больше информации про карьеру IT-аналитику, и удачи вам с вашим собеседованием. Чёрт возьми. Теперь вы готовы чуть больше. Я вас поздравляю. Спасибо ещё раз, и пока.

Need another transcript?

Paste any YouTube URL to get a clean transcript in seconds.

Get a Transcript