Тинькофф собеседование, как вести себя на собеседовании в Тинькофф |

Тинькофф собеседование, как вести себя на собеседовании в Тинькофф | Аналитика

7 вопросов и ответов на собеседовании с бизнес аналитиком

1. Как бизнес-аналитик, вы должны работать со всеми типами людей на разных должностях в компании. Как бы вы справились с трудным заинтересованным лицом?

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

  • Проблемные навыки
  • Навыки общения
  • Умение смягчать сложные ситуации

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

2. У клиента есть интернет-магазин, посвященный Рождеству, в котором продаются пять товаров. Какие потенциальные проблемы вы предвидите с их потоками доходов?
Бизнес-аналитик должен уметь оценивать ситуацию и диагностировать проблему и решение для клиентов. Этот вопрос дает представление о том, как кандидат решает типичные бизнес-проблемы, которые могут возникнуть у клиента.

  • Демонстрирует навыки бизнес-аналитика
  • Навыки критического мышления
  • Способности к оценке
Дополнительный анализ:  Анализ сводной отчетности проводится

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

3. Вы знакомы с SQL-запросами? Каковы части оператора SQL?
Бизнес-аналитику не обязательно иметь продвинутые технические навыки, но полезно, если у него есть навыки в SQL и технологии реляционных баз данных. Этот вопрос показывает их знакомство и понимание SQL.

  • Технические навыки
  • Понимание документов SQL
  • Продвинутые аналитические навыки

Пример: «Оператор SQL состоит из трех частей. Это язык определения данных или DDL, язык обработки данных или DML и язык управления данными или DCL».

4. По вашему опыту работы бизнес-аналитиком, что является наиболее важным аспектом аналитической отчетности?
Кандидат должен понимать важность аналитической отчетности, ее ограничения и то, как она связана с выполняемой им работой. Этот вопрос заставляет их объяснить, почему и как они считают аналитическую отчетность важной.

  • Умение критически мыслить
  • Понимание бизнес-анализа
  • Показывает навыки анализа

Пример: «Способность решать проблемы или принимать решения на основе свидетельств, а не предположений является наиболее важным аспектом аналитической отчетности. Сами по себе данные не решат проблемы, но они дают вам инструменты для принятия обоснованных решений, которые вы может объяснить и оправдать, даже если само решение не сработает так, как вы ожидали».

5. Можете ли вы описать время, когда вам приходилось подвести клиента к другому образу действий, нежели тот, на который он был настроен?
Работа бизнес-аналитиком заключается не в том, чтобы говорить клиенту, чего он хочет, а в том, чтобы сказать клиенту, то, что лучше для его бизнеса. Этот вопрос показывает, как кандидат управляет ожиданиями клиента о том, что он, возможно, не хочет слышать.

  • Способность решать проблемы
  • Умение справляться с трудными ситуациями
  • Возможность бизнес-анализа

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

6. Назовите три типа диаграмм, которые используют бизнес-аналитики, и объясните, почему они важны?
Бизнес-аналитики используют множество диаграмм и других документов. Вы должны убедиться, что кандидат знаком с этими документами и понимает, как их применять в делах клиентов.

  • Визуальное моделирование
  • Понимание основных диаграмм бизнес-аналитики
  • Понять, как реализовать эти диаграммы

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

7. Какие инструменты, по вашему мнению, наиболее важны для бизнес-аналитиков, чтобы они хорошо выполняли свою работу?
Бизнес-аналитики обычно используют множество инструментов. Этот вопрос позволяет узнать, знаком ли кандидат с этими инструментами и использует ли он приложения, общие для вашей компании.

  • Знакомство со стандартными приложениями бизнес-аналитики
  • Использование инструментов подходящих для вашего бизнеса
  • Базовые технические навыки

Пример: «Обычно я использую инструменты Word, Excel, MS Visio, PowerPoint и Rational. Я также умею писать SQL-запросы»

№ 1. найти идентификатор с максимальным значением

Контекст:

Допустим, у нас есть таблица

salaries

с данными об отделах и зарплате сотрудников в следующем формате:

  depname  | empno | salary |     
----------- ------- -------- 
 develop   |    11 |   5200 | 
 develop   |     7 |   4200 | 
 develop   |     9 |   4500 | 
 develop   |     8 |   6000 | 
 develop   |    10 |   5200 | 
 personnel |     5 |   3500 | 
 personnel |     2 |   3900 | 
 sales     |     3 |   4800 | 
 sales     |     1 |   5000 | 
 sales     |     4 |   4800 |

Задача

: написать запрос, чтобы получить

empno

с самой высокой зарплатой. Убедитесь, что ваше решение обрабатывает случаи одинаковых зарплатами!

Решение:

WITH max_salary AS (
    SELECT 
        MAX(salary) max_salary
    FROM 
        salaries
    )
SELECT 
    s.empno
FROM 
    salaries s
JOIN 
    max_salary ms ON s.salary = ms.max_salary

Альтернативное решение с использованием

RANK()

WITH sal_rank AS 
  (SELECT 
    empno, 
    RANK() OVER(ORDER BY salary DESC) rnk
  FROM 
    salaries)
SELECT 
  empno
FROM
  sal_rank
WHERE 
  rnk = 1;

№ 2. маркировка древовидной структуры

Контекст:

предположим, у вас есть таблица

tree

с двумя столбцами: в первом указаны узлы, а во втором — родительские узлы.

node   parent
1       2
2       5
3       5
4       3
5       NULL 

Задача:

написать SQL таким образом, чтобы мы обозначили каждый узел как внутренний (inner), корневой (root) или конечный узел/лист (leaf), так что для вышеперечисленных значений получится следующее:

node    label  
1       Leaf
2       Inner
3       Inner
4       Leaf
5       Root

(Примечание: более подробно о терминологии древовидной структуры данных можно почитать

. Однако для решения этой проблемы она не нужна!)

Решение:Благодарность: это более обобщённое решение предложил Фабиан Хофман 2 мая 2020 года. Спасибо, Фабиан!

WITH join_table AS
(
    SELECT 
        cur.node, 
        cur.parent, 
        COUNT(next.node) AS num_children
    FROM 
        tree cur
    LEFT JOIN 
        tree next ON (next.parent = cur.node)
    GROUP BY 
        cur.node, 
        cur.parent
)

SELECT
    node,
    CASE
        WHEN parent IS NULL THEN "Root"
        WHEN num_children = 0 THEN "Leaf"
        ELSE "Inner"
    END AS label
FROM 
    join_table 

Альтернативное решение, без явных соединений:

Благодарность: Уильям Чарджин 2 мая 2020 года обратил внимание на необходимость условия WHERE parent IS NOT NULL, чтобы это решение возвращало Leaf вместо NULL. Спасибо, Уильям!

SELECT 
    node,
    CASE 
        WHEN parent IS NULL THEN 'Root'
        WHEN node NOT IN 
            (SELECT parent FROM tree WHERE parent IS NOT NULL) THEN 'Leaf'
        WHEN node IN (SELECT parent FROM tree) AND parent IS NOT NULL THEN 'Inner'
    END AS label 
 from 
    tree

Витя. направление — аналитика

Я занимался улучшением ценообразования страховых полисов.

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

В начале самым сложным было освоиться с SQL и библиотекой для работы с данными Pandas, так как до этого я мало их использовал. Целую неделю я писал скрипты для получения и складирования данных о рынке.

Параллельно работал тест эластичности, где мы меняли наши цены и смотрели на конверсию — вероятность покупки полиса. Используя данные этого теста, мы смогли построить модель, предсказывающую конверсию по нашей цене и полям полиса, а новый параметр увеличил качество работы модели.

ROC-кривая модели. Чем больше площадь под графиком, тем лучше модель

Получать данные о рынке при каждом обращении пользователя слишком долго, поэтому мы попытались предсказывать новый параметр — и поначалу нам удавалось хорошо это делать. Но с какого-то момента модель на обновленных данных стала обучаться хуже и ошибаться сильнее.

Оказалось, что причина тому — резкая «просадка» курса рубля к основным валютам, поэтому по одному набору параметров она должна была выдавать различные ответы, чего модель, конечно же, делать не могла. Логичным решением стало добавление курса валюты в модель.

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

В будущем мы хотим создать полноценный RL-агент, который сможет адаптироваться под изменяющиеся условия окружающей среды и максимизировать прибыль. Для знакомства с SQL рекомендую решать задачки по SQL и параллельно смотреть необходимую теорию. Что касается библиотеки Pandas — есть замечательный пример использования Pandas в House Prices.

Зачем нужна аналитика?


Цель любого бизнеса — это извлечение прибыли. Прибыль — это выручка минус издержки. Прибыль должна быть максимизирована в долгосрочной перспективе. Как же здесь помогает аналитика?

Есть три больших направления, в которых аналитика добавляет ценности:

1. Формирование бизнес-процессов.

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

2. Принятие взвешенных решений на основе данных.

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

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

3. Новые идеи для бизнеса, для развития и экспериментов.

Испытания

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

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

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

  • находчивость;
  • терпеливость;
  • дружелюбие;
  • правдивость.

Затем кандидатов попросили доказать оппоненту свою правоту. Участников отбирали не по тому, на каком качестве они остановили выбор, а по тому, насколько грамотно они обосновали свою точку зрения. Помимо ролевых игр на этапе испытания кандидатам предложат задачи на логику и внимательность, математические примеры.

Коля. направление — ml

В рамках Tinkoff Internship я попал в

Еще на втором этапе отбора я познакомился с Настей, моим будущим куратором, и Вадимом — нашим менеджером по продукту. Настя дала несколько алгоритмических задачек, а Вадим рассказал о работе над голосовым помощником, роботами и аналитикой колл-центров.

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

Во время программы я занимался оптимизацией инференса. Дело в том, инференс нейронных сетей довольно часто сводится к операциям с плотными матрицами. При этом для авторегрессионных моделей, например для WaveNet, его выгоднее выполнять на CPU, чтобы можно было поддерживать больше одновременных потоков инференса.

Однако производительность «наивной» реализации матричного умножения с автоматической оптимизацией средствами компилятора редко достигает 10% от максимально возможной для отдельно взятого CPU. Для большей производительности необходимо использовать более тонкую оптимизацию.

Существует много различных подходов к оптимизации матричных умножений для инференса нейросетей на CPU. У Насти были серьезные наработки по данному вопросу, мне же предстояло собрать их всех в единую библиотеку GEMM на C . Такие библиотеки используются в популярных фреймворках: в TensorFlow это Eigen, в PyTorch — FBGEMM.

Организация собеседования в тинькофф

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

  • Специалист отдела входящих звонков;
  • Специалист отдела телемаркетинга;
  • Верификатор.

Массовые собеседования, в которых могут принимать участие 30-40 человек одновременно (разбивают общее количество на несколько небольших групп), проводят HR-специалисты. Они рассказывают претендентам о банке Тинькофф, проводят тестирование, игры. Тех, кто не подошел, отсеивают сразу, мягкий отказ не практикуют.

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

Нюанс! Для претендентов на должность надомного оператора колл-центра обучение и сдача теста проходят дистанционно.

Отбор

Отбор на программу Tinkoff Internship проходил в два этапа.

Первая часть — онлайн-экзамены. В зависимости от направления предлагается несколько алгоритмических задач, тест на знание SQL или олимпиадные задачи по математике, а также тестовое приложение для тех ребят, кто подается на мобильную разработку. Вступительные испытания не совсем стандартны и требуют некоторой подготовки.

Всех тех, кто успешно справился с онлайн-этапом, приглашают на очные встречи с кураторами в офис.

Встречи проходили в разных форматах: давали задачки на логику, язык программирования, спрашивали о предпочтениях в технологиях и обо всем том, что тебя интересует в мире ИТ.

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

В отборе участвовали 1299 человек, из которых 412 были приглашены на финальный этап, 98 получили приглашения на программу. Итоговый конкурс — более 13 человек на место.

Полезные ссылки от юрия тростина:

Виктор Ченг — это икона в сфере консалтинга… У него есть классные книги и лекции на ютуб, а также аудиозаписи кейс-интервью. Вы можете их найти и послушать.

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


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

Любимый канал Юрия на ютуб. Там есть много быстрых курсов, в том числе и про Computer Science. С помощью этого курса вы сможете изучить основы Computer Science и понять откуда она зародилась.

Хорошая книга о том, как работают сети Интернет. Достаточно простая, рекомендую к прочтению.


Этот источник позволяет по-новому взглянуть на аналитику, на важность отдельных метрик. В этом гайде есть туториалы, как можно все эти знания использовать в Amplitude.

Выступление Юрия Тростина в Минске, где он рассказывает, как они делают data-driven стартап Worki.

Решение

Найдём вероятность пересечения классическим подходом — поделим число маршрутов с пересечением на общее число возможных маршрутов. Пусть

$n$

— длина ребра квадратной сетки. Тогда общее число возможных маршрутов:


Вывод формулы описан

. А вот как узнать число маршрутов с пересечением реки для каждого

$n$

? Озадачившись этим вопросом, я решил взять несколько длин сетки поменьше, нарисовать поля и вручную подсчитать, сколько маршрутов пересекают реку, надеясь проследить зависимость (Очень рекомендую вам также сейчас взять листочек и ручку и поэкспериментировать с рисованием маленьких сеток и путей).

Пусть имеется сетка размером 3 на 3 клетки. Побочная диагональ сетки занята рекой, путник стоит в левом нижнем углу.

Как только я сделал рисунок, понял, что намного проще будет отследить маршруты, реку не пересекающие, а именно маршруты ниже реки. Затем можно будет умножить их число на 2, учтя таким образом и зеркальные маршруты выше реки. Так как мы знаем вдобавок и общее число маршрутов, найдём и количество пересекающих реку. Но вернёмся к главной задаче — нам нужна зависимость между $n$$n$

Новые пути я отметил красным. Итак, понятно, что если путник свернёт на левое и затем верхнее ребро клетки (1, 0), ему далее будут доступны лишь 2 из трёх путей через клетки с горизонтальной координатой 2, ведь двигаться можно лишь вверх и вправо — третий же путь лежит ниже.

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


Крайний правый столбец вновь даёт нам

$n$

маршрутов. Верхнее ребро клетки (2, 0) добавит нам

$n-1$

маршрут. Верхнее ребро клетки (2, 1) добавит

$n-2$

маршрута. Верхнее ребро клетки (1, 0) добавит столько маршрутов, сколько добавили клетки (2, 0) и (2, 1) вместе. При желании можно нарисовать сетку побольше и продолжить считать маршруты тем же алгоритмом. Наша задача — подсчитать маршруты для сетки 100×100. Для этого можно написать программку, которая примет на вход

$n$

и построит матрицу

$ntimes n$

, начиная со столбца

$n$

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

Код
import numpy as np
import math

def routes_total(n): # Общее число путей
    return math.factorial(2*n) / (math.factorial(n)**2)

def fill_matrix(n): # Число путей, не пересекающих реку с одной стороны реки
    net = np.zeros((n, n)) 
    net[0, 0] = n # Крайний столбец даёт n путей
    for i in range(n-2):
        net[1, i] = n - i - 1 

    for i in range(2, n):
        for j in range(n - i - 1): 
            net[i, j] = 0
            for g in range(j, n - i   1):
                net[i, j]  = net[i - 1, g]
    
    # Сумму полученных чисел умножаем на 2, чтобы учесть другую сторону реки
    return (2 * sum(sum(net))) 

# Хотим долю пересекающих реку путей - вычитаем результат из 1
print(1  - fill_matrix(100) / routes_total(100))

Собеседование сотрудников, работающих удаленно

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


Требования к сотруднику желающему работать удаленно:

  • паспорт РФ и наличие СНИЛСа;
  • личный компьютер;
  • подключение к интернету на высокой скорости;
  • гарнитура;
  • обособленное тихое помещение на период работы;
  • работать 30 часов в неделю;
  • четкая дикция и грамотная речь;
  • выполнение плановых показателей.

Для начала соискатель должен пройти регистрацию на отдельном сайте. Сразу после этого, соискателю на электронную почту приходит доступ в (ЛК), где вся деятельность и будет осуществляться.

Порядок действий:

  • Для начала нужно ознакомиться с функционалом личного кабинета. В кабинете прописаны данные наставника, который будет вас курировать, там вы сможете отыскать и материалы, необходимые для обучения.
  • Выходите на связь с наставником, он в свою очередь проводит короткое собеседование, которое определяет вашу общую адекватность, а также прояснит дальнейший план. Естественно, вы не обойдетесь без обучающего курса.
  • Обучение. Вы изучите весь комплекс аспектов, требуемый для работы в вашей зоне компетенции.
  • После обучающего курса вы проходите онлайн-тестирование.
  • Если все прошло успешно, претендент проходит опрос-тест со своим наставником посредствам Skype. Здесь оценке подвергается не только сами знания, сколько умение вести разговор, тишина в процессе беседы и качество соединения.
  • Потом новоиспеченный сотрудник начинает звонить реальным клиентам Тинькофф. Если его работа у руководства вопросов не вызывает – с ним заключают соглашение. Сотрудник будет работать исключительно самостоятельно, но в условиях выборочного контроля.

Список литературы


Всем, кто хочет заниматься Data Science, советуем посмотреть/прочитать:

• Курс «Программирование на Python» на Stepik• Курс «Введение в машинное обучение» на Coursera• Курс «Машинное обучение и анализ данных» на Coursera• Курс «Машинное обучение» Константина Воронцова • Курсы по deep learning на Coursera• Курс «Нейронные сети» на Stepik• Книга Deep Learning Book• Книга «Глубокое обучение: погружение в мир нейронных сетей» – первая книга о глубоком обучении на русском языке • Книга по NLP Speech and Language Processing• Книга по информационному поиску и NLP «Introduction to Information Retrieval»• Статьи на opendatascience• Курс «Алгоритмы и структуры данных» Максима Бабенко

Типичные ошибки на собеседованиях

Кандидат не понимает, как работают алгоритмы, которые он использовал

Интервьюеры всегда спрашивают об алгоритмах, которые использовали кандидаты: какие параметры в них есть, как их настроить. Если ответа нет, или кандидат отвечает, что настроил алгоритм «по наитию» – это плохо. Если вы берете алгоритм, стоит потратить время, чтобы понять, как его настроить.

• Кандидат не понимает, как применять свои знания в «боевых условиях»Бывает так: кандидат хорошо знает теорию, но не представляет, как справляться с проблемами на проектах. Важно не только уметь находить инсайты в данных, делать фича-инжинеринг, строить модели, но и понимать, как поместить все это в продакшен или сделать решение, которое будет работать быстрее.

• Кандидат не может рассуждать самостоятельноЕсли человек слишком часто отвечает на вопрос: «Я погуглю» – это нехороший знак. Конечно, дата-сайентисты гуглят, но уметь рассуждать самостоятельно тоже важно: иногда встречаются проблемы, для которых нет готового решения, и нужно придумывать что-то свое.

• Кандидат выдумывает, как работает системаИногда люди не могут ответить на вопрос, как работает та или иная система, и начинают придумывать, надеясь попасть пальцем в небо. Так делать не рекомендуется: интервьюер это заметит. Лучше честно сказать:

Условие задачи


Государство Линейного Распределения представляет собой множество городов, некоторые из которых соединены дорогами.

Однажды королю Государства стало известно, что в его границы собирается вторгнуться Народ Точек Разрыва. Так как Государство не было готово к обороне, король принял нелёгкое решение — разделить Государство на много маленьких, каждое из которых будет самостоятельно защищать свои границы.

Было решено, что два города можно и нужно оставить в одном государстве, если из одного города можно будет добраться во второй, даже если Народ Точек Разрыва захватит одну дорогу между двумя любыми городами Государства Линейного Распределения. Во всех остальных случаях — города должны оказаться в разных государствах.

На каждой дороге, которая будет пересекать границу каких-либо двух новых государств, необходимо поставить бастион. Это нужно на случай, если одно из этих государств будет захвачено Народом Точек Разрыва. Тогда второе сможет продолжать оборонять свои границы. Иными словами, бастион будет поставлен на дороге, которая соединяет города из разных государств.

Король попросил вас дать ему список дорог, на которых необходимо поставить бастионы.

Формат ввода и вывода в программе
Формат ввода

Первая строка входного файла содержит два натуральных числа

$n$

и

$m$

— количества городов и дорог в Государстве Линейного Распределения соответственно.

$(1 leq n leq 20000, 1 leq m leq 200000)$

. Следующие m строк содержат описание дорог по одной строке. Дорога номер i описывается двумя натуральными числами

$b_i, e_i$

— номерами городов, которые эта дорога соединяет

$(1 leq b_i, e_i leq n)$

Формат вывода

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

Такие условия были даны изначально, в коде решения, который я приведу ниже, ввод производится с клавиатуры, а вывод — в консоль.

Часть 2. первое интервью

Интересный момент, что получилось провести интервью только через неделю, тк то у меня не получалось, то интервьюера. Мы созвонились в зуме, он представился, сказал, что возглавляет отдел аналитики Яндекс.Маркета, начал общение сразу на “ты”, позднее мне рекрутер сказал, что в Яндексе так принято.

Интервьюер, назовём его Сергей, рассказал как будет устроено интервью: 10 минут я должен рассказать о себе, потом ТЗ (задача на питоне) и задачи на теорвер.Я вкратце рассказал о себе, своем проекте про алгоритмы кластеризации, которым я занимаюсь в институте.

Он позадавал пару стандартных вопросов из разряда: “Почему Яндекс?”, “Какие качества мне стоит развивать?”, “Что было моим успехом?” .Далее была ТЗ: вывести список уникальных слов, считываемых из файла. Я код написал, в целом, ему важна была идея и знания синтаксиса. Всё подводные камни я разгадал у этой задачи, но не сразу. Вот сами камни:

  1. Если файл пустой

  2. Английский и русский язык (что будет?)

  3. Отделение знаков препинания

  4. Первые слова в предложении

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

  1. Бросаем монетку 10 раз. Какова вероятность, что выпадет 10 орлов? [(1/2)^10]

  2. Бросаем монетку 10 раз. Какова вероятность, что выпадет 9 орлов? [10*(1/2)^10]

  3. В ящике есть 4 вида носков. Носков бесконечно много. Сколько нужно изьятий, чтобы получить пару? [5]

Далее, задача на математику: “У Аркадия много жён. У него есть коллекция кактусов, которые он решил раздать всем жёнам. Первой жёне отдал 1000 кактусов и 10% от остатка. Второй жене 2000 кактусов и 10% от остатка. И так далее… Каждая жена получила поровну.

Сколько жён у Аркадия?Ход решения я тоже рассказал. Чтобы не ждать, пока я посчитаю, он мне сказал, сколько всего было кактусов и я дал ответ. [81000 всего кактусов, 9000 каждой жене]. Последней была задачка на проверку аналитических способностей:20 детям в детском садике задали вопрос: живут ли их родители вместе?

На что 2 ребёнка ответили, что не живут. На следующий день в местной газете выходит статья с заголовком: “10% семей в нашем городе в разводе”. Почему данное утверждение неверно? Всего есть 6 ключевых пунктов, до 2х последних я, к сожалению, не додумался:

  1. Дети могут быть из одной семьи

  2. Разный возраст детей, и, соответственно, разные группы, то-то более осознанный, кто-то ещё не понимает вопроса.

  3. Месторасположение садика, может выборка была только в благополучном/неблагополучном районе.

  4. У ребёнка может быть один родитель или у ребёнка может быть мачеха/отчим, отсюда неверные результаты.

  5. Дети врут.

  6. Есть семьи, где дети не ходят в садик.

После этой задачи Сергей рассказал мне как я в целом отвечал и рассказал, чем занимается отдел аналитики.У них есть 2 типа задач:

  1. Визуализация данных, представление менеджерам отчётов, в частности, работа в Tableau, то есть создание дашбордов.

  2. Прогонка данных из одного сервиса в другой

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

После интервью создалось приятное впечатление о интервьюере и о возможных задачах и в целом от общения.

Этап 4. обучающий процесс и испытательный срок

Все вновь прибывшие сотрудники обязательно проходят курс обучения исходя из специализации. Впоследствии они проходят тестирование и после его успешной сдачи зачисляются в штат. Испытательный срок стандартный (по законодательству РФ) и составляет три месяца.

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

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

Если вы проживаете в Московском регионе, и у вас есть стремление работать в Тинькофф, то настоятельно рекомендуем записаться на собеседование посредством формы на сайте.

Посмотреть все актуальные вакансии Tinkoff

Часть 5. заключение

Пройдусь по каждому пункту.

1) Задачи на Яндекс Контесте – 9/10

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

2) Общение с рекрутером – 10/10

Рекрутер довольно развернуто и оперативно отвечал на все вопросы по почте, после 1го интервью сразу перешел в телеграм для удобства

3) Первое интервью – 10/10

Первое интервью мне очень понравилось. Задачи, подсказки от Сергея, лёгкое и приятное общение.

4) Второе интервью – 5/10

Было слишком много стандартных вопросов, словесная нагрузка в начале интервью от Светланы. Считаю, что можно было кратко и менее нагружено представиться и рассказать, чем занимается отдел. Непростые вопросы на аналитику, сейчас поясню. Должен ли человек, который подаёт на позицию стажёра “Аналитик данных” знать продуктовую аналитику? Наверное, да.

5) Выводы

К сожалению, я получил только фидбек, только написанный в части 4. Проанализировав 2 интервью, я сделал вывод о том, что нужно подтянуть sql. Насчёт продуктовой аналитики я не знаю, в каждой компании свои процессы и заранее вникать в особенности ее работы, наверное, тяжело и затратно по времени. Я согласен, что если ты работаешь уже внутри, то ты обязан знать все подробности, но до этого – вряд ли.

Попробую ли я ещё раз? Думаю, да. Через полгода, может раньше. Несмотря на отказ. Мне нравятся сервисы, которые делает компания и я активно ими пользуюсь. Поэтому было бы интересно поучаствовать в их улучшении.

Буду рад, если этот пост поможет кому-то подготовиться и попасть в Яндекс.

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

№ 4. нарастающий итог

Благодарность:

эта задача адаптирована из статьи в блоге SiSense

Контекст: допустим, у нас есть таблица transactions в таком виде:

| date       | cash_flow |
|------------|-----------|
| 2021-01-01 | -1000     |
| 2021-01-02 | -100      |
| 2021-01-03 | 50        |
| ...        | ...       |

Где

cash_flow

— это выручка минус затраты за каждый день.

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

| date       | cumulative_cf |
|------------|---------------|
| 2021-01-01 | -1000         |
| 2021-01-02 | -1100         |
| 2021-01-03 | -1050         |
| ...        | ...           |

Решение:

SELECT 
    a.date date, 
    SUM(b.cash_flow) as cumulative_cf 
FROM
    transactions a
JOIN b 
    transactions b ON a.date >= b.date 
GROUP BY 
    a.date 
ORDER BY 
    date ASC

Альтернативное решение с использованием оконной функции (более эффективное!):

SELECT 
    date, 
    SUM(cash_flow) OVER (ORDER BY date ASC) as cumulative_cf 
FROM
    transactions 
ORDER BY 
    date ASC

Оцените статью
Аналитик-эксперт
Добавить комментарий