Вопросы на собеседовании бизнес аналитика тинькофф

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

Материал создан командой Симулятора «SQL для анализа данных».

Описание базы данных

Итак, нам дана такая структура таблиц:

В какой СУБД мы будем работать — не сказано. По косвенным признакам мы предполагаем, что это PostgreSQL.

Хотя, по сути, это не особо важно — отличаться будут только некоторые функции. Все базовые операторы будут одинаковыми.

Кстати, интересный вопрос: представьте, что вы можете попросить интервьюера дать вам пример любого запроса.

Какой запрос вы попросите написать, чтобы понять, с какой СУБД вы имеете дело?

Ответ на этот вопрос предлагаем обсудить в комментариях, а мы переходим к задачам! 🙃

Задача 1

Условие

Необходимо получить список сотрудников в формате: «Иванова — Наталья – Юрьевна». ФИО должно быть прописано в одном столбике, разделение —.

Вывести: новое поле, назовем его fio, birth_dt.

Решение

Эта задача достаточно простая — здесь даже нет необходимости джойнить другие таблицы, достаточно поработать с таблицей Employees.

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

select
first_nm || ‘—’ || middle_nm || ‘—’ || last_nm as fio,
birth_dt
from employees

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

select
concat_ws(‘—’, first_nm, middle_nm, last_nm) as fio,
birth_dt
from employees

Выглядит посимпатичней. Заодно и перед интервьюером блеснули знаниями 😅

Задача 2

Условие

Вывести %% дозвона для каждого дня. Период с 01.10.2020 по текущий день.

%% дозвона – это доля принятых звонков (dozv_flg=1) от всех поступивших звонков (dozv_flg = 1 or dozv_flg = 0).

Вывести: date, sla (%% дозвона)

Решение

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

А на самом деле, все просто — достаточно просто знать, что условный оператор CASE можно использовать внутри агрегатных функций — например, COUNT.

Итак, чтобы посчитать SLA, нам нужно:

  • посчитать кол-во звонков с dozv_flg = 1
  • посчитать общее количество звонков
  • разделить одно на другое

Давайте сделаем это в одном запросе, без подзапросов и CTE.

select
start_dttm::date as «date»,
count(case when dozv_flg=1 then 1 end) /
count(case when dozv_flg in (1, 0) then 1 end) as sla
from calls
where start_dttm::date between ‘2020-10-01’ and now()::date
group by start_dttm::date

Вот, собственно, и все. Но проговорим несколько важных моментов:

Почему мы написали не count(*), а count(case when dozv_flg in (1, 0) then 1 end)?

Любопытный читатель

Мы просто перестраховались — вдруг там еще какие-то значения могут быть. Например, 2. Лишним не будет, в любом случае.

Зачем мы делаем преобразование с помощью ::date?

Другой любопытный читатель

А потому что оператор between потеряет все записи за сегодня, если не преобразовать эти поля в дату (это особенность сравнения даты-времени в PostgreSQL). Опять же — мы просто перестраховались.

Задача 3

Условие

Дана таблица clinets:

  • id клиента
  • calendar_at — дата входа в мобильное приложение

Нужно написать запрос для расчета MAU.

Решение

Если что, MAU — monthly active users: количество уникальных клиентов, проявляющих активность в приложении в течение месяца.

Многие по ошибке выводят MAU в виде таблицы со столбцами Месяц — Кол-во активных клиентов. Это неправильно — MAU всегда должно быть одним числом.

Соответственно, решение задачи сводится к следующим пунктам:

  • посчитать количество уникальных клиентов за каждый месяц
  • усреднить данные по всем месяцам

Для решения задачи мы будем использовать CTE и оператор DISTINCT внутри COUNT:

with a as (
select
to_char(calendar_dt, ‘MM’) as mon,
count(distinct id) as cnt
from clients
group by mon
)
select avg(cnt) as mau
from a

Сразу отметим — MAU можно считать и по-другому. Например:

  • сразу брать цифры на примере одного месяца
  • находить медиану
  • как-то еще

Мы просто показали один из вариантов 😇

Эпилог

На сегодня остановимся на этих 3 задачах. У нас в запасе еще много интересного — так что если вам зашло, мы скоро вернемся с новым разбором!

В целом, задачи не очень сложные. Но мы постарались «подсветить» некоторые тонкие моменты, без которых решение этих задач может стать проблемой.

Команда Симулятора по SQL

Хотите глубже разобраться в том, как писать крутые SQL-запросы, делать эдхоки и считать продуктовые метрики? Пройдите обучение в Симуляторе по SQL от ребят из Simulative — там много крутых штук 👍

  • Симулятор «SQL для анализа данных» — поможет глубоко изучить SQL на бизнесовых кейсах. Вас ждет работа с реальными данными с интересной сюжетной линией.
  • Хотите оценить свои навыки? Попробуйте решить задачи с собеседования в Альфа-Банк.
  • Еще больше интересных материалов — в нашем телеграм канале.

as

Город изо льда

Как выглядит строительство в Арктике

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

IT-собеседование в Тинькофф

Рассказываем, как подготовиться к собеседованию на IT-вакансию: https://www.tinkoff.ru/career/it/

Этапы собеседования

  1. Предварительное собеседование.
  2. Техническое собеседование.
  3. Знакомство с командой.
  4. Приглашение на работу.

Этап 1: предварительное собеседование

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

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

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

Этап 2: техническое собеседование

Техническое собеседование состоит из нескольких отдельных тем — секций. Созвон по каждой секции длится 1-1.5 часа и проходит в Zoom с отдельным интервьюером. Вы можете пройти все секции сразу или в течение нескольких дней — скажите рекрутеру, как удобнее.

Как проходить секции:

  1. Подготовьте рабочее место: проверьте компьютер и интернет, подготовьте веб-камеру, возьмите пару листков бумаги и ручку. Рекомендуем выспаться и захватить бутылку воды.
  2. Не используйте для созвона телефон: Вы будете много кодить в онлайн-IDE, рисовать схемы и общаться с интервьюером.
  3. Задавайте вопросы и предлагайте разные решения, даже если они кажутся неправильными: интервьюер проверяет не только знания, но и как Вы подходите к решению задач.
    Обычно нужно пройти 2—4 секции — это зависит от направления и Вашего опыта. Точное количество Вам скажет рекрутер.

Направления и секции в Тинькофф

Backend-разработка

  • Секция по платформе или языку
  • Секция программирования
  • Системный дизайн

Frontend-разработка

  • Секция по Web платформе и фреймворкам
  • Секция программирования
  • Архитектурная секция (для кандидатов уровня middle+ и выше)

SRE

  • Проверка общих инженерных компетенций
  • Выявление и устранение проблем
  • Базовое программирование

Для позиций с фокусом на разработку возможно проведение дополнительных секций:

  • Системный дизайн
  • Секция программирования

Машинное обучение

  • Секция программирования
  • Секция по ML
  • Дизайн ML-систем

Quality Assurance (QA Fullstack)

  • Профильная секция тестирования (backend, mobile, web)
  • Теория и практика QA
  • Программирование для QA

Тестирование производительности

В секции программирования, по направлению тестирования производительности, используются задачи по кодированию уровня easy (leetcode), нацеленные на умение использовать простые структуры данных, а не на эффективную реализацию алгоритмов.

  • Программирование для QA
  • Секция по дизайну проектов тестирования производительности

Этап 3: знакомство с командой

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

После созвона с Вами свяжется рекрутер: скажите ему, в какой команде Вы хотели бы работать.

Этап 4: приглашение на работу

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

Дополнение:

  1. Рекрутер отвечает между этапами в течение трех дней, на финальное решение уходит чуть больше времени. Рекрутер на связи: Вы можете связаться с ним, если нужно что-то уточнить.
  2. В беседе с интервьюерами задавайте вопросы и предлагайте разные решения. Интервьюер проверяет не только знания, но и как Вы подходите к решению задач.
  3. Бывает так, что на каком-то этапе интервью мы отказываем кандидату. Отказ не влияет на отношение к кандидату: он может попробовать подать заявку через полгода, а если откроется подходящая вакансия, мы предложим варианты.
  4. Если есть пожелания или что-то не понравилось, напишите нам: interview_issues@tinkoff.ru.

«Тинькофф Банк» широко известен на территории России и Беларуси как один из самых технологичных банков, специализирующихся на онлайн-обслуживании. Основанный в 2006 году предпринимателем Олегом Тиньковым, на сегодняшний день банк занимает 3 место по уровню востребованности среди населения и даже числится в перечне значимых кредитных организаций Центрального Банка РФ несмотря на то, что организация была основана частным лицом. 

Растущая клиентская база оправдывает потребность банка в увеличении количества сотрудников и расширении штаба. И хотя у «Тинькофф» нет розничных отделений для обслуживания клиентов, банк предлагает множество вакансий в сфере IT, бизнес-процессов, а также консультирования и курьерской службы.

Преимуществом трудоустройства в «Тинькофф Банк» является возможность работать в любом городе страны в удаленном формате, так как большинство процессов банка проходят онлайн. Для специалистов, занимающихся разработкой web-продуктов для банка, менеджеров внутренних процессов, бухгалтеров и менеджеров B2B есть возможность работать в современных центрах разработки, которые открыты в 19 городах России и в Беларуси.

На сегодняшний день в Тинькофф Банке трудоустроено около 26 тысяч постоянных сотрудников, и по прогнозам сайтов-агрегаторов актуальных вакансий, их количество продолжит расти, так как банк находится в регулярном поиске работников. Выше мы уже отметили, что у банка нет филиалов и центров обслуживания на местах – соответственно, нет привычных для банков вакансий консультантов и кассиров. Откуда же такая потребность в новых кадрах? Все дело в том, что представители банка неоднократно объясняли, что все операции проходят в онлайн-формате, посредством мобильного приложения Тинькофф Банка, которое по сути заменяет центры обслуживания. Таким образом, каждый соискатель должен обладать навыками владения интернет-технологиями и коммуникации посредством мессенджеров/звонков, стрессоустойчивостью и высоким уровнем обучаемости – новые технологии внедряются каждый день, и за ними нужно успевать.

Однако как именно устроен процесс трудоустройства в Тинькофф Банк и каким образом проверяют профпригодность сотрудника? Для этого HR-департамент банка разработал отдельные программы для каждого типа вакансий. Мы не будем подробно останавливаться на IT-вакансиях, так как это – совершенно другой уровень сложности, подразумевающий несколько этапов собеседований, включая общее и многочасовое техническое. Однако для соискателей, заинтересованных в сфере бизнес-процессов, предусмотрено несколько этапов, один из которых – обязательное тестирование.

Трудоустройство в «Тинькофф»: как оно проходит?

До начала пандемии COVID-19, процесс трудоустройства выглядел следующим образом. После отклика на вакансию потенциальных кандидатов – необязательно все из них претендуют на одну и ту же должность – приглашают на синхронное собеседование в одно время и в одном офисе (обычно около 20 человек за раз). В присутствии руководителей отделов и психологов, кандидатам сначала предлагается решить тесты: это могут быть как логические вопросы в духе теста Айзенка на уровень интеллекта, либо вербальные и числовые задачи, затрагивающие вопросы из области психологии, геометрии и даже алгебры. Подготовиться к такому тестированию было сложно по нескольким причинам:

  • Готовые варианты тестов почти невозможно найти в интернете, и они постоянно совершенствуются и меняются;

  • Нельзя предугадать, какой именно вариант попадется именно вам: с преобладанием вопросов на логику и определение уровня интеллекта, либо математические задачи;

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

  • На тест дается мало времени. 

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

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

Тесты «Тинькофф»

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

Это важно! Обратите внимание на то, что на поисковый запрос «тесты в Тинькофф» вам могут предложить тесты для инвесторов банка. Эти тесты никаким образом не связаны с трудоустройством в банк: они предназначены для частных лиц – клиентов банка, — которые планируют вкладывать в ценные бумаги при посредничестве банка.

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

Теперь кратко перейдем к характеристике каждого вопросника по отдельности.

Числовые тесты

Пример числового теста при приеме на работу

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

Вербальные тесты

Пример вербального теста при приеме на работу

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

Логические тесты

Пример логического теста при приеме на работу

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

Заключение

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

Привет! Я Мария Фоменко, заместитель руководителя управления хранилищ данных и отчетности в Тинькофф. Расскажу о направлении DWH и о том, как попасть к нам в команду, что спрашивают на скрининге HR и на секциях системного анализа DWH.

Статья будет полезна тем, кто планирует расти в профессии, интересуется работой в большой компании или хочет работать именно в Тинькофф. Если узнали себя в любом из пунктов, добро пожаловать под кат ????

Data Warehouse в Тинькофф

Наша команда занимается данными в компании. Наша миссия — распространять data-driven подход в компании, создавать единую платформу и пространство работы с данными. 

Команда DWH делится на два блока:

Технический или core-блок создает платформу данных как продукт. Ключевая задача специалистов этого блока — создавать и развивать инфраструктуру нашей платформы.

Мы пишем собственные инструменты загрузки и преобразования данных и внедряем лучшие из существующих на рынке. Развиваем методологии работы с данными и их визуализации. Делимся best practice с компанией, предоставляем self-service для 3000+ пользователей платформы.

Команда состоит из разработчиков, SRE-инженеров, продакт-менеджеров и архитекторов. Мы любим open source, многое пишем с нуля на Java, Python, Scala и Golang

Бизнес-блок с помощью платформы данных, разработанной core-специалистами, предоставляет data as a product для всех бизнес-направлений Тинькофф.

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

Команда состоит из системных аналитиков DWH, разработчиков ETL, data-инженеров, QA-инженеров, бизнес-аналитиков BI

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

Системные аналитики DWH входят в бизнес-блок и занимаются исследованием источников, проработкой требований заказчика, проектированием модели данных, составлением ТЗ для разработчиков, развитием data governance и разработкой data quality правил.

Этапы отбора

В Тинькофф отбор проходит в три этапа: HR-скрининг, техническое интервью из двух частей и финальное интервью. Вот как они выглядят в таблице:

Этап

Секция

Время

1. HR-скрининг

Телефонное интервью

20—30 минут

2. Техническое интервью

Секция SQL + логика

90 минут

Секция системный анализ DWH

90 минут

3. Финальное интервью

Знакомство с командой

60 минут 

Первый этап — интервью с рекрутером по телефону. Он спрашивает об опыте, мотивации, желаемом уровне дохода, ожиданиях, технических интересах. Уточняет опыт работы с СУБД, какие задачи с данными приходилось решать, какие с ними были сложности. Интересуется планами на ближайшее время: с чем хочется поработать, что нравится в работе. 

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

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

Техническое интервью — секция SQL + логика

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

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

На уровне Junior собеседование всегда начинается с задач уровня Junior, а вот на уровнях Middle или Senior — с уровня Middle и продолжается по ситуации: вверх или вниз. 

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

Цель этой секции — проверить на реальном кейсе навыки общения с бизнес-заказчиками: может ли системный аналитик переложить бизнес-процесс на сущности хранилища.

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

Тайминг: сколько времени идет каждый этап

Первичный телефонный разговор длится 20–30 минут. Если все пройдет хорошо, то рекрутер согласует дату и время для технического интервью. 

Техническое интервью разбито по двум разным дням и занимают около 90 минут каждое. На секцию системного анализа DWH проходят те, кто успешно справился с секцией по логике и SQL. После секций рекрутер собирает информацию по результатам технического интервью и направляет их заинтересованным командам. У них есть день, чтобы дать обратную связь, но на практике они отвечают в течение пары часов. Заинтересованные команды практически сразу присылают отклики. Тогда рекрутер возвращается к системному аналитику и зовет его на следующий этап — итоговое интервью. Это уже не собеседование, а знакомство с командами. После созвона рекрутер попросит назвать, какой проект понравился больше всего, а через день возвращается с финальным решением. Если аналитику подходят задачи и нравится команда, он получает оффер. Обычно процесс его согласования длится 1–2 дня.

Как быстрее получить оффер

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

В декабре Тинькофф проводит первый One Day Offer для системных аналитиков DWH. Если любите данные и вам интересен такой формат, присоединяйтесь. 

На чтение 27 мин. Просмотров 126 Опубликовано 25.06.2021

Содержание

  1. 7 вопросов и ответов на собеседовании с бизнес аналитиком
  2. № 1. найти идентификатор с максимальным значением
  3. № 2. маркировка древовидной структуры
  4. Витя. направление — аналитика
  5. Зачем нужна аналитика?
  6. Испытания
  7. Коля. направление — ml
  8. Организация собеседования в тинькофф
  9. Отбор
  10. Полезные ссылки от юрия тростина:
  11. Решение
  12. Собеседование сотрудников, работающих удаленно
  13. Список литературы
  14. Типичные ошибки на собеседованиях
  15. Условие задачи
  16. Часть 2. первое интервью
  17. Этап 4. обучающий процесс и испытательный срок
  18. Часть 5. заключение
  19. № 4. нарастающий итог

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

Понравилась статья? Поделить с друзьями:
  • Газпромбанк ленинградский проспект 24 время работы
  • Воронежская областная коллегия адвокатов реквизиты
  • Газпромбанк метро проспект вернадского часы работы
  • Воронежская строительная компания официальный сайт
  • Время работы альфа банка в гомеле в мандарин плаза