- Видео 85
- Просмотров 141 867
Pavel Bukhtik
Добавлен 6 апр 2017
💫 Помогаю попасть на работу мечты в IT
🚀 Сопроводил до оффера 100+ человек
Салют! Меня зовут Павел.
Уже 6 лет я обеспечиваю компании аналитикой, помогаю им расти с помощью а/б тестов, организовываю работу с данными и выращиваю профессионалов. А еще занимаюсь развитием аналитической культуры в компаниях. Последние 3 года - в качестве Head of Product Analytics & Data Engineering.
На этом канале я рассказываю, как проходить собеседования, получить оффер выше среднего по рынку и вырасти в карьере от джуна до лида. Также делюсь своим опытом, кейсами и проектами.
Также я менторю специалистов и руководителей продуктовых компаний. Меня можно найти на платформе GetMentor.
🚀 Сопроводил до оффера 100+ человек
Салют! Меня зовут Павел.
Уже 6 лет я обеспечиваю компании аналитикой, помогаю им расти с помощью а/б тестов, организовываю работу с данными и выращиваю профессионалов. А еще занимаюсь развитием аналитической культуры в компаниях. Последние 3 года - в качестве Head of Product Analytics & Data Engineering.
На этом канале я рассказываю, как проходить собеседования, получить оффер выше среднего по рынку и вырасти в карьере от джуна до лида. Также делюсь своим опытом, кейсами и проектами.
Также я менторю специалистов и руководителей продуктовых компаний. Меня можно найти на платформе GetMentor.
8 минусов работы продуктовым аналитиком. Или почему аналитика не для тебя
Я много работаю с людьми, которые хотят стать продуктовыми аналитиками.
И я часто сталкиваюсь с идеализированностью роли такого аналитика - «можно каждый день драйвить продукт инсайтами и влиять на развитие бизнеса».
А кто уже попробовал роль на боевых задачах и столкнулся с реальностью и нюансами, с которыми приходиться бороться каждый день - стремятся найти ту самую идеальную компанию и позицию без минусов.
Вместе с Алексеем Гавриловым, автором Телеграм-канала Only Analyst, мы решили записать видео о нюансах, которые поджидают любого продуктового аналитика на работе. И самое главное - что из этого следует, как с ними бороться и как к ним относиться.
Полезные материалы по продуктовой аналит...
И я часто сталкиваюсь с идеализированностью роли такого аналитика - «можно каждый день драйвить продукт инсайтами и влиять на развитие бизнеса».
А кто уже попробовал роль на боевых задачах и столкнулся с реальностью и нюансами, с которыми приходиться бороться каждый день - стремятся найти ту самую идеальную компанию и позицию без минусов.
Вместе с Алексеем Гавриловым, автором Телеграм-канала Only Analyst, мы решили записать видео о нюансах, которые поджидают любого продуктового аналитика на работе. И самое главное - что из этого следует, как с ними бороться и как к ним относиться.
Полезные материалы по продуктовой аналит...
Просмотров: 503
Видео
Собеседование на продуктового аналитика (mock-интервью)
Просмотров 22 тыс.Год назад
Собеседование на продуктового аналитика (mock-интервью)
return Array.from(new Set(nums)).length !== nums.length
Отличный выпуск, спасибо за беседу. Если говорить про боли, то, конечно, идеальных мест не бывает и действительно на российском рынке много компаний, в которых есть запрос на работу с данными и поддержку в принятии решений на данных, но при этом в них нет выстроенных процессов как в айти корпорациях. Получается, как только приходит продуктовый аналитик в компанию, на него нападают со всех сторон: продактам нужна разметка, аб-тесты, конверсия за вчера упала на 1% почему и что делать; топам и менеджерам нужен квартальный отчет по продукту и дашборды и т.д. и т.п. Все это усугубляется бесконечным адхоками, коммуникацией в разных мессенджерах с разными командами. На мой взгляд, как вы и упоминали, роль аналитика не столько в решении аналитических задач, а в создании культуры работы с данными и организации этой работы.
А если список четной длинны, тогда серелины нет. Этот способ не учитывает данный момент.
По условию, если четная длина то нужно вывести второй в середине
А каким из способов ты бы решил эту задачу?)
Спасибо за видео подкаст.
Сам уже разработчик с опытом 3 года, однако иногда захожу посидеть на литкоде, расстраиваюсь и думаю, что я вообще бездарный разработчик😂
Ещё проще: брать максимальную сумму от двух последних отрезков из единиц, всего один цикл O(N). Для [0,1,1,1,0,1,1,0,1] даёт 3 + 2 = 5 if num: right += 1 else: result = max(result, left + right) left, right = right, 0 и проверка если все едининцы: > return min(result, len(nums) - 1)
Тем более мы знаем, что Яндекс - это та ещё помойка для прогеров
Класс! Не верю, но я догадался. Я подумал надо в мап запихнуть по ключу и если количество совпадет - то все уникальные. Но если бы я не начал думать в эту сторону "извращенности" то начал бы с сортировки, цикл в цикле - это прям сразу понятно что так делать нельзя.
А мне понравилось это решение.
Есть компании, которые ближе к идеальным. Где аналитическая культура сразу выстроена как надо, сразу сделали нормальное двх, сразу нанимали крутых аналитиков, все давно уже устоялось. Там есть другая проблема: все низко висящие фрукты собраны. Даже средне висящие фрукты уже собраны. Гораздо сложнее в этом бизнесе придумать способ повлиять на метрики бизнеса, задачи становятся нетривиальнее, их приносят реже, больше надо придумывать самому, что ещё важного и полезного тут можно сделать, доказывать окружающим, что это вот вообще полезное и может принести результат. Это тоже может быть утомительным, сложным и фрустрирующим
Можно ещё, конечно по памяти будет дороже в худшем случае х2 почти, если в самом конце будет дубликат, но по скорости быстрее сортировки. Это заюзать мапу. Ключ - число, значение - количество. Использовать putIfAbsent , если фолс , то выйти из алгоритма и вернуть true. В таком случае если у нас где-то вначале дубликат мы практически выиграем и в скорости и по памяти кратно раз
Если не создавать мапу сразу под длину массива, то при худших сценариях вся экономия уйдет на перевыделение памяти и копирование в новую мапу.
Класс!!!
Медленный пройдет n/2 шагов и быстрый n/2 шагов. В сумме получается n шагов. Просто обойти список и поделить его на 2 получается менее заморочный n И еще большой вопрос как реализовано перепрыгивание быстрого указателя через элементы односвязного неиндексированного списка? В неиндексированных нельзя перепрыгивать через элемент. Если только это граф имеющий дополнительные связи. С двумя указателями по односвязному списку 1,5n получается. Медленный n/2 , быстрый все равно n пройдет. Где выигрыш?
Окей, вы дошли до конца списка. Как потом найти ссылку на середину? Список лежит в памяти в произвольных местах. Алгоритмически решения одинаковы, но с двумя предпочтительнее. На больших списках, кэширование будет лучше работать, плюс если узлы рядом, может предсказание ветвлений сработать
@@ilnar129 быстрый указатель не может перепрыгивать через узлы. Поэтому он идет по каждому элементу списка. В итоге Быстрый пройдет все элементы, медленный - половину. 1,5n При наивном один указатель проходит все элементы. Делит их количество на 2 и получает сколько шагов надо пройти от начала списка до середины. Снова идет с начала списка до середины. 1,5n В итоге в любом случае получается 1,5n
Оба указателя сделают одно и тоже количество шагов. Выигрыша нет.
В одном случае 1.5n в другом n
@@armansimonyan5772 медленный указатель сделает n/2 шагов и быстрый сделает n/2 В сумме они сделают n шагов. Плюс непонятно как быстрый указатель будет прыгать через элемент неиндексированного списка.
Алгоритмические сложности алгоритмов: On^2 On*log(n) "Буквально в одну строчку"
Яндекс это рак
Сам не понял что рассказал. Если пройтись по списку определеив длину (что и делается быстрым указателем) то отсчитав с нуля половину будет то же самое ровно за то же количество шагов.
Да, везде будет 1.5n. Но подход с двумя указателями на больших списках может дать преимущество. Для одного нужно держать в кешах весь список, для двух половину. Плюс возможно прогнозирование ветвлений, если узлы списка лежат рядом. В общем подход с двумя указателями лучше
Алголитма?? А нельзя медленный указатель просто поделить на 2??
список лежит в памяти в произвольных местах. Не получится просто поделить на два
Так а почему поделиьь незя на 2 то?
Для этой задачи есть более красивое решение: надо через XOR ^ пройтись по всему списку и присвоить результат в одну переменную, тем самым, если в результате будет 0, значит все элементы представлены 2 раза
а что за сайт с задачками?
@@gabarjoba6560 Leetcode.)
Если от вас ожидают при решении этой задачи на собеседовании одну строчку кода, дам один совет, бегите оттуда.
И зачем цикл в цикле? Можно простое условие if оставить. На каждой итерации left будет по одному шагу догонять right def longest_seq(arr): max_length = 0 start = 0 zero_count = 0 for end in range(len(arr)): if arr[end] == 0: zero_count += 1 if zero_count > 1: if arr[start] == 0: zero_count -= 1 start += 1 max_length = max(max_length, end - start + 1) return max_length - 1
Какая же жуть эти алгоритмы.
А я использовал XOR. Прикольный метод.
Сборник Можно тоже ссылку ? 😊❤
все не понятно только зачем там if если само сравнение возвращает либо true либо false
😢зачем от обджекта наследуешься, это же было в питон2
Leetcode так по-дефолту дает поле с кодом, не думал особенно об этом.)
Return Len(nums) == len(set(nums))
Так операция создания множеств как раз и использует алгоритм поиска дубликатов. Это алгоритм отсеивает дубликаты за линейное время при помощи словаря (dictionary) или другой хэш-структуры.
Ну тоже такое на алгоритмическом собесе, от тебя алгоритмы хотят а не использование встроенных функций
Интересная задача 👍
Там и одного достаточно, зачем два то?
То есть 999 можно записать как IM, а не CMXCIX?
сортировка и преобразование в множество... первое отвратительно, второе божественно? :-D
А что такое минимальное время? Я фронтендер просто
Минимальное время, это минимум по дате. То есть имеем условно 01.02.1999 и 02.02.1999, и вот минимум из этих дат будет - 01.02.1999, то есть минимальное время, что и есть условно время первого захода в рамках этой задачи
@@stas9369 а все, понял, спасибо. От сортировки это всё-таки сильно не отличается, но записывается в разы проще.
int[] nums = { 1, 2, 3,1}; Console.WriteLine((string.Join(", ", nums.Distinct()) != string.Join(", ", nums))); я сделал вот так,в голову не пришло с длиной массива сравнивать
Бывают же решения еще быстрее, можешь объяснить как люди сделали это за 1 и 2 миллисекунды
Там есть решение на 3 строчки, только сегодня решал
😂 интересно почему сложности для «правильного» решения не посчитаны?
У тебя повылазило? Твое решение не самое оптимальное
@@caseykaller6953 А как нужно?)
а потом пользователи жалуются, что комп медленный
А если просто сравнить s==s[::-1]
Тоже так думаю
Просто нужно минимизировать суммарное время ожидания скорой всеми пациентами в районе за некоторый период времени. Итеративно добавлять дополнительные ресурсы туда, где это время наихудшее. Дальше уже детали.
Спасибо вам большое за такой крутой формат видео! Это очень полезно и удобно! Пожалуйста, продолжайте. И ещё раз спасибо и успехов вам😊
брат с кайфом, продолжай, формат отличный выбрал!
Это алгоритм Бойера-Мура и такое объяснять стоит поподробнее, а то выглядит как магия
Ну а теперь повтори с массивом двойной точности, только сначала на бумажке задание запиши, потому как твой комп точно сдохнет.
Кайф