Задачки от Тинькова
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Как-то кто-то создавал тему о том, чтобы вкатиться в АЙТИ от тинькофф.говно. Сегодня стартавали экзамены по направлению фронтенд.
Вот такие задачи там предлагаются на решение
№1
№2
№3
Спойлер
№5
Зачем нужна эта тема? Чтобы вы в очередной раз поняли, кто есть такой тинкоф
АПД. Так как тема превратилась в пискомерство, то все кто считает эти задачки легкимипростыми\дефолтными и т.п. должны предоставить их решения иначе они такие же как тс. Времени у вас 5 часов
Sing
Пользователь
Регистрация:
15.09.2013
Сообщения: 12811
Рейтинг: 3790
Регистрация:
15.09.2013
Сообщения: 12811
Рейтинг: 3790
Wi|d Wo|f
Пользователь
Регистрация:
01.06.2016
Сообщения: 10188
Рейтинг: 3637
Регистрация:
01.06.2016
Сообщения: 10188
Рейтинг: 3637
Не прогер, но интересно что означает для прогера эта фраза в твоем сообщении
IndiGo(real) сказал(а):↑
Чтобы вы в очередной раз поняли, кто есть такой тинкоф
Нажмите, чтобы раскрыть…
Так как задачи выглядят вполне выполнимыми и не такими сложными даже для того кто только паскаль в школе учил (офк возможно из-за незнания инструментария не сделал бы их, но с математической точки зрения алгоритм их решения понятен). Возможно ты имеешь ввиду что задачи не совсем связаны с реальной работой, но как по мне подобные задачи показывают самое главное — умение думать и находить решения.
xzka
Пользователь
Регистрация:
04.05.2016
Сообщения: 5141
Рейтинг: 1460
Нарушения: 10
Регистрация:
04.05.2016
Сообщения: 5141
Рейтинг: 1460
Нарушения: 10
IndiGo(real) сказал(а):↑
Как-то кто-то создавал тему о том, чтобы вкатиться в АЙТИ от тинькофф.говно. Сегодня стартавали экзамены по направлению фронтенд.
Вот такие задачи там предлагаются на решение
№1
№2
№3
Спойлер
№5
Зачем нужна эта тема? Чтобы вы в очередной раз поняли, кто есть такой тинкоф
Нажмите, чтобы раскрыть…
И что тебе не нравится? Хотел чтобы сразу лендинги давали делать?
Дефолт задачи джсера
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
xzka сказал(а):↑
И что тебе не нравится? Хотел чтобы сразу лендинги давали делать?
Дефолт задачи джсера
Нажмите, чтобы раскрыть…
да мне вообще пофиг. Но как-то к фронтенду это не очень близко. Или у тебя в каждой странице такой код?
Wi|d Wo|f
Пользователь
Регистрация:
01.06.2016
Сообщения: 10188
Рейтинг: 3637
Регистрация:
01.06.2016
Сообщения: 10188
Рейтинг: 3637
IndiGo(real) сказал(а):↑
ну раз ты так считаешь, то велcum. До 2 сентебря время ксть
Нажмите, чтобы раскрыть…
Не совсем понял ответ к чему.
Типо я угадал про то что ты недоволен тем что задачка не подходит под реальный проэкт? Опять же самое главное умение логически мыслить, ты любую задачу решишь если умеешь находить ответы на нестандартные запросы. Создать сайт или чет такое может любой тупой даун просто посмотрев гайдики в интернете и готовые примеры, а эти задачи самому придется решать, в этом и суть.
По поводу велкам — не собираюсь пока в прогеры вкатываться, не особо интересна профессия с точки зрения ремесла.
xzka
Пользователь
Регистрация:
04.05.2016
Сообщения: 5141
Рейтинг: 1460
Нарушения: 10
Регистрация:
04.05.2016
Сообщения: 5141
Рейтинг: 1460
Нарушения: 10
IndiGo(real) сказал(а):↑
ну раз ты так считаешь, то велcum. До 2 сентебря время ксть
да мне вообще пофиг. Но как-то к фронтенду это не очень близко. Или у тебя в каждой странице такой код?
Нажмите, чтобы раскрыть…
А зачем нужен прог, который не может алгоритм составить? Я бы на все языки стартовые задачи такие делал.
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
xzka сказал(а):↑
А зачем нужен прог, который не может алгоритм составить? Я бы на все языки стартовые задачи такие делал.
Нажмите, чтобы раскрыть…
Ну делай, мне-то что.
waixa
Пользователь
Регистрация:
02.10.2017
Сообщения: 7350
Рейтинг: 4294
Регистрация:
02.10.2017
Сообщения: 7350
Рейтинг: 4294
IndiGo(real) сказал(а):↑
Как-то кто-то создавал тему о том, чтобы вкатиться в АЙТИ от тинькофф.говно. Сегодня стартавали экзамены по направлению фронтенд.
Вот такие задачи там предлагаются на решение
№1
№2
№3
Спойлер
№5
Зачем нужна эта тема? Чтобы вы в очередной раз поняли, кто есть такой тинкоф
Нажмите, чтобы раскрыть…
у меня после перехода по его ссылкам таргет реклама только от тинькова стала появляться
DdSerg
Пользователь
Регистрация:
11.06.2021
Сообщения: 133
Рейтинг: 345
Регистрация:
11.06.2021
Сообщения: 133
Рейтинг: 345
Потому что Олег решил «если у Яндекса везде задачки и алгоритмы, то у нас тоже везде будут задачки и алгоритмы».
ZipZap(D2)
Пользователь
Регистрация:
10.05.2015
Сообщения: 4436
Рейтинг: 2148
Регистрация:
10.05.2015
Сообщения: 4436
Рейтинг: 2148
xzka сказал(а):↑
А зачем нужен прог, который не может алгоритм составить? Я бы на все языки стартовые задачи такие делал.
Нажмите, чтобы раскрыть…
я далёк от фронта, но не кажется что эти задачи больше по беку?
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
ZipZap(D2) сказал(а):↑
я далёк от фронта, но не кажется что эти задачи больше по беку?
Нажмите, чтобы раскрыть…
хрен его знает по чему эти задачи, но местные типы считают, что это прям так и должно быть
Mobsman
Пользователь
Регистрация:
06.09.2016
Сообщения: 18974
Рейтинг: 17653
Нарушения: 25
Регистрация:
06.09.2016
Сообщения: 18974
Рейтинг: 17653
Нарушения: 25
IndiGo(real) сказал(а):↑
хрен его знает по чему эти задачи, но местные типы считают, что это прям так и должно быть
Нажмите, чтобы раскрыть…
может это задачи про яваскрипт в общем не отождествленный с фронтои
Tozen
Пользователь
Регистрация:
23.08.2013
Сообщения: 4419
Рейтинг: 4524
Регистрация:
23.08.2013
Сообщения: 4419
Рейтинг: 4524
Ну типа они вряд ли нужны и тп, но с другой стороны они не сложные, тупо лабки в универе, мб прост чтоб ваше дегродов отсеить
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Mobsman сказал(а):↑
может это задачи про яваскрипт в общем не отождествленный с фронтои
Нажмите, чтобы раскрыть…
ааа, я вам не показал, но там еще выбор на чем ответ писать. Ну и там тупо все языки перечислены от с+17 до жса. Свобода выбора так сказать
Mobsman
Пользователь
Регистрация:
06.09.2016
Сообщения: 18974
Рейтинг: 17653
Нарушения: 25
Регистрация:
06.09.2016
Сообщения: 18974
Рейтинг: 17653
Нарушения: 25
IndiGo(real) сказал(а):↑
ааа, я вам не показал, но там еще выбор на чем ответ писать. Ну и там тупо все языки перечислены от с+17 до жса. Свобода выбора так сказать
Нажмите, чтобы раскрыть…
ну значит там лишнее слово это фронт
ZipZap(D2)
Пользователь
Регистрация:
10.05.2015
Сообщения: 4436
Рейтинг: 2148
Регистрация:
10.05.2015
Сообщения: 4436
Рейтинг: 2148
Wi|d Wo|f сказал(а):↑
оздать сайт или чет такое может любой тупой даун просто посмотрев гайдики в интернете и готовые примеры
Нажмите, чтобы раскрыть…
ну, ты не прав. Если бы нормальные сайты делали тупые дауны, то не было бы столько вакансий по фронту. Создать нормальный сайт, с читаемым кодом и нормальной ранжировкой в поисковой системе не каждый макакич сделает
Tozen
Пользователь
Регистрация:
23.08.2013
Сообщения: 4419
Рейтинг: 4524
Регистрация:
23.08.2013
Сообщения: 4419
Рейтинг: 4524
IndiGo(real) сказал(а):↑
ааа, я вам не показал, но там еще выбор на чем ответ писать. Ну и там тупо все языки перечислены от с+17 до жса. Свобода выбора так сказать
Нажмите, чтобы раскрыть…
Кст, если кто ходил на любые олимпиадки по прогичу или чет схожее, то вот эти задания прям один в один с самого легкого лвл, прям подача условий, стиль и прочее
Neoro
Пользователь
Регистрация:
20.11.2013
Сообщения: 672
Рейтинг: 376
Регистрация:
20.11.2013
Сообщения: 672
Рейтинг: 376
IndiGo(real) сказал(а):↑
Как-то кто-то создавал тему о том, чтобы вкатиться в АЙТИ от тинькофф.говно. Сегодня стартавали экзамены по направлению фронтенд.
Вот такие задачи там предлагаются на решение
№1
№2
№3
Спойлер
№5
Зачем нужна эта тема? Чтобы вы в очередной раз поняли, кто есть такой тинкоф
Нажмите, чтобы раскрыть…
а чем проблема то?
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Neoro сказал(а):↑
Нажмите, чтобы раскрыть…
никаких проблем. Просто знакомлю форумчан с творчество тинкофва. И даю шанс проверить себя
Wi|d Wo|f
Пользователь
Регистрация:
01.06.2016
Сообщения: 10188
Рейтинг: 3637
Регистрация:
01.06.2016
Сообщения: 10188
Рейтинг: 3637
ZipZap(D2) сказал(а):↑
ну, ты не прав. Если бы нормальные сайты делали тупые дауны, то не было бы столько вакансий по фронту. Создать нормальный сайт, с читаемым кодом и нормальной ранжировкой в поисковой системе не каждый макакич сделает
Нажмите, чтобы раскрыть…
Ну я не обесцениваю чужой труд, но в мире и так наверное 95% челов +- тупые. И на прогеров не идут оставшиеся 5%, туда идут все 100%. А погромисты востребованы потому что это что то новое (относительно) и это всем сейчас надо. Даже в какую то обычную парихмакерскую больше половины клиентов придут через интернет, и им тоже нужен сайт.
Youko 12
Участник команды сайта
Регистрация:
30.03.2018
Сообщения: 2549
Рейтинг: 3900
Регистрация:
30.03.2018
Сообщения: 2549
Рейтинг: 3900
IndiGo(real) сказал(а):↑
Как-то кто-то создавал тему о том, чтобы вкатиться в АЙТИ от тинькофф.говно. Сегодня стартавали экзамены по направлению фронтенд.
Вот такие задачи там предлагаются на решение
№1
№2
№3
Спойлер
№5
Зачем нужна эта тема? Чтобы вы в очередной раз поняли, кто есть такой тинкоф
Нажмите, чтобы раскрыть…
Хотел пройти по бырику сейчас, так как давно не программил (года 3 ).
Не пускает пишет курсов нет
Регистрация:
10.04.2016
Сообщения: 234
Рейтинг: 433
ZipZap(D2) сказал(а):↑
Нажмите, чтобы раскрыть…
Ну вот чтобы найти тех, кто пилит эти самые нормальные сайты и устраивают такие отборы
ZipZap(D2)
Пользователь
Регистрация:
10.05.2015
Сообщения: 4436
Рейтинг: 2148
Регистрация:
10.05.2015
Сообщения: 4436
Рейтинг: 2148
theforcebewithyou сказал(а):↑
Ну вот чтобы найти тех, кто пилит эти самые нормальные сайты и устраивают такие отборы
Нажмите, чтобы раскрыть…
эти задачки к фронту не относятся вообще
единственный вариант почему такие задачи, чел уже ответил
Wi|d Wo|f сказал(а):↑
Возможно ты имеешь ввиду что задачи не совсем связаны с реальной работой, но как по мне подобные задачи показывают самое главное — умение думать и находить решения.
Нажмите, чтобы раскрыть…
IndiGo(real)
Пользователь
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
Регистрация:
04.06.2013
Сообщения: 5798
Рейтинг: 4712
ILGHQ сказал(а):↑
Хотел пройти по бырику сейчас, так как давно не программил (года 3 ).
Не пускает пишет курсов нет
Нажмите, чтобы раскрыть…
ILGHQ сказал(а):↑
Хотел пройти по бырику сейчас, так как давно не программил (года 3 ).
Не пускает пишет курсов нет
Нажмите, чтобы раскрыть…
https://fintech.tinkoff.ru/
Везде написано «набор открыт»
Тема закрыта
-
Заголовок
Ответов Просмотров
Последнее сообщение
-
DzA
12 Mar 2023 в 21:44Сообщений: 1
12 Mar 2023 в 21:44 -
Сообщений: 1
12 Mar 2023 в 21:42 -
Сообщений: 2
12 Mar 2023 в 21:22 -
Сообщений: 26
12 Mar 2023 в 21:19Сообщений:26
Просмотров:40
-
Сообщений: 16
12 Mar 2023 в 21:10Сообщений:16
Просмотров:30
musador13 / tinkoff-contest
Goto Github
PK
View Code? Open in Web Editor
NEW
1.0
0.0
363 KB
Задачи Тинькофф
License: GNU General Public License v3.0
Java 100.00%
contest-solution
java
tinkoff
tinkoff-fintech
tinkoff-contest’s Introduction
tinkoff-contest’s People
Contributors
Stargazers
Watchers
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
Введение
Недавно нам прилетело большое тестовое задание от Тиньков-Банка на должность аналитика данных. Там очень много задач, но сегодня мы разберем несколько — остановимся на мелочах и обратим внимание на тонкие моменты.
Материал создан командой Симулятора «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 от ребят из Simulative — там много крутых штук 👍
Еще больше интересных материалов — в нашем телеграм канале.
Материал создан командой Симулятора «SQL для анализа данных».
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как вам уровень задачек?
Проголосовали 178 пользователей.
Воздержались 34 пользователя.
Профиль в личном кабинете
Проверьте, что у вас зарегистрирован и полностью заполнен профиль в личном кабинете. Без заполненного профиля мы не сможем выгрузить ваши результаты в правильный город. Также в личном кабинете вы можете просмотреть ваши актуальные направления и узнать статус по ним.
Ссылка для регистрации
Дедлайны и длительность экзаменов
Все экзамены идут непрерывно после открытия — взять паузу не получится.
- Экзамен по математике длится 5 часов
- Экзамен по программированию — 3 часа
- Тест по SQL — без внутреннего дедлайна до конца отборов
- Анкета, бизнес-кейсы и творческие задания доступны в любое время до общего дедлайна
Если вы откроете экзамен в 23:30 в день дедлайна, то на решение у вас останется 29 минут, после чего экзамены завершатся. Мы оставляем за собой право не рассматривать вашу кандидатуру без заполненной анкеты.
Направления и экзамены
Аналитик: анкета + экзамен по математике, а также тест по SQL (не является обязательным на этих направлениях, но может стать преимуществом) и бизнес-кейсы (обязательны для решения, если вы выбираете бизнес-аналитику (технолог) или системную аналитику)
Python-разработчик, Java-разработчик, Разработчик C#, Frontend-разработчик. Scala-разработчик, DevOps, SRE, Инженер по качеству: анкета + контест по программированию.
Android-разработчик/iOS-разработчик: тестирование iOS/Android.
Маркетинг: тестирование на знание в области интернет-маркетинга
Управление образовательными проектами, Младший менеджер по нативной рекламе и Младший менеджер по работе с блогерами: анкета + решение кейсов для выбранного направления. Экзамены по программированию и математике решать не требуется.
Анкета имеет большое значение на всех направлениях, советуем заполнять ее максимально развернуто. После завершения экзаменов анкета не принимается.
Решение контестов
В качестве ответа к задаче по программированию нужно прислать файл с кодом программы. Чтение и запись данных происходит через стандартный поток (Пример)
Проверка на первом тесте
При выполнении контеста по программированию на момент выполнения проверка идет на первом посте. Тестирование на всех тестах идет после завершения экзамена.
Дисквалификация
Во время соревнования запрещено общаться с другими участниками, обмениваться идеями решений. Нельзя регистрировать фальшивые аккаунты и указывать ложную информацию. Также запрещается осуществлять взлом системы соревнований в любой форме. Организаторы оставляют за собой право дисквалификации недобросовестных участников.
Использование сторонних библиотек
Для решения задач нельзя использовать сторонние библиотеки (например, numpy для Python). Для решений на Java и Scala используйте класс, именованный Main.
Вопросы по условиям задач
Вопросы по условиям вступительных испытаний следует адресовать боту в Telegram @clar_tbot:
- Выберите образовательную программу в отборе на которую вы принимаете участие (Финтех, Старт, Поколение и т.д.)
- Выберите экзамен, который вы сейчас решаете (контест по программированию, экзамен по математике или другое)
- Задайте вопрос. Ответ придёт так же от бота, которому вы адресовали вопрос.
Если у вас нет возможности воспользоваться ботом, то можно выбрать один из следующих способов связи:
— почта best-talents@tinkoff.rubest-talents@tinkoff.ru
— в сообщения группы
Список доступных языков и их версии
C++17 (GNU C++ 7.5.0)
Perl 5.26.1 (Perl 5.26.1)
Java 8 (Java JDK 1.8.0_265)
Mono C# 4.6.2.0 (Mono C# 4.6.2.0)
Python3 3.5 (Python3 3.6.9)
GNU go 8.4.0 (GNU go 8.4.0)
Scala 2.11.12 (Scala 2.11.12)
Kotlin (Kotlin 1.4.10-release-411)
NodeJS 8.10.0 (NodeJS 8.10.0)
Значения ошибок Статус Расшифровка Пояснение
OK — OK
AC — Accepted for Testing — Принято на проверку
CE — Compilation Error — Ошибка компиляции
RT — Run-Time Error — Ошибка при работе программы
TL — Time-Limit Exceeded — Ошибка превышения лимита времени
PE — Presentation Error — Ошибка неправильного формата результата
WA — Wrong Answer — Неправильный ответ
CF — Check Failed — Внутренняя ошибка проверки
PT — Partial Solution — Частичное решение
IG — Ignored — Решение проигнорировано
DQ — Disqualified — Решение дисквалифицировано
PD — Pending — Ожидает проверки
ML — Memory Limit Exceeded — Ошибка превышения лимита памяти
SE — Security Violation — Ошибка нарушения ограничений безопасности
SV — Style Violation — Ошибка нарушения стиля оформления исходного кода
WT — Wall Time Limit Exceeded — Ошибка превышения лимита реального времени
PR — Pending Review — Ожидает подтверждения
RJ — Rejected — Отклонено
SK — Skipped — Пропущено
SY — Synchronization error — Ошибка синхронизации
SM — Summoned for defence — Вызван на защиту
У собеседований на ИТ-специальности своя специфика. Требуется не только пройти отбор эйчар-специалиста, но и продемонстрировать навыки руководителю и членам команды.
Разработчики и аналитики Тинькофф, которые проводят интервью с кандидатами, рассказали, какие компетенции помогают получить оффер и какие ошибки этому препятствуют.
Это истории из Сообщества. Собраны в один материал, бережно отредактированы и оформлены по стандартам редакции.
Структура отбора ИТ-специалистов в Тинькофф
Процесс состоит из нескольких этапов и зависит от специальности. Рассмотрим на примере подбора на направление мобильной разработки:
- Предварительное знакомство с эйчар-специалистом — короткая беседа с кандидатом о его опыте и мотивации, ожиданиях от работы и зарплаты.
- Скрининг — первый технический этап, на котором соискателю задают теоретические вопросы по специальности, чтобы оценить уровень его подготовки и навыков.
- Программирование — второй технический этап, на котором кандидат решает практические задачи.
- Собеседования в команду — фит-интервью. Тимлид рассказывает, над какими проектами и задачами работают коллеги, а после разговора команда и кандидат решают, комфортно ли им будет работать вместе.
«Мы не допускаем тех, кто может устроить разлад в команде»
Андрей Теплицкий
проводит собеседования для iOS-разработчиков
Профиль автора
Профессиональный опыт. Я прошел собеседование в декабре 2019 и в январе 2020 года вышел на работу в SME Тинькофф Бизнеса. Год спустя меня пригласили участвовать во внутренних мероприятиях — например, читать лекции на курсе Тинькофф Образования по iOS-разработке. Постепенно я начал проводить собеседования в компанию.
Я отвечаю за техническое собеседование, которое построено на принципах live coding — программирования в реальном времени. На этом этапе кандидат решает задачи, а мы параллельно проверяем его софт-скиллы.
Важен не только правильный ответ, но и то, как кандидат к нему пришел: долго ли думал, какие варианты рассматривал, почему выбрал именно этот путь решения. Мы набираем не новичков, а опытных iOS-разработчиков уровня мидл-плюс, поэтому и требования соответствующие.
Это не просто собеседование, а настоящее искусство.
Советы кандидатам. Профильное образование — необязательный атрибут разработчика, но для меня имеет значение. Без хорошей технической базы претендентам будет сложно, а диплом, на мой взгляд, индикатор того, что человек уделил несколько лет жизни этому направлению. Но у нас в команде есть и люди с высшим гуманитарным образованием, и вообще без диплома, так что пути в разработку могут быть самыми разными.
Есть такое понятие, как матрица компетенций — срез знаний, которыми нужно овладеть, чтобы получить уровень джуниора, мидла или сениора. Чтобы понять, чего от вас хотят на интервью, читайте требования к вакансии. У Тинькофф в открытом доступе есть список материалов для подготовки к собеседованию — намек на то, о чем могут спросить на интервью.
Нужно понимать, что после одного собеседования устроиться на хорошую работу, скорее всего, не получится. По моему личному опыту, среднее количество собеседований, которые нужно пройти, чтобы получить место, — десять. Кроме того, если вы в одной компании были сениором, это не гарантирует, что в другой займете ту же должность. Так что советую быть готовым к более низкой оценке на собеседовании, чтобы не страдать от разочарования.
Если вас постигла одна или даже несколько неудач, не надо переставать пробовать. После 3—5 собеседований в разных компаниях вы познакомитесь с типовыми задачами для отбора и будете решать их более уверенно, так как все они проверяют общие аспекты computer science.
Идеальный сценарий на собеседовании — когда претендент на волне с сотрудником, улавливает ход его мыслей и предвосхищает вопросы. Мне запомнился кандидат, который решил сложную задачу так же, как я, хотя у нее было больше 70 возможных вариантов решения.
Мы всегда спрашиваем кандидатов, что лично они сделали полезного для команды на предыдущих местах работы. Многие начинают рассказывать о коллективных достижениях, а не о своих — если на этот вопрос сложно ответить, то о собственном вкладе лучше подумать заранее.
Ошибки на собеседованиях. Одна из ошибок кандидатов — токсичное, неприветливое поведение. Если так себя вести, не помогут никакие хард-скиллы. Фактор психологической совместимости очень важен, мы оцениваем, сможем ли работать вместе, и не допускаем тех, кто может устроить разлад в команде.
Иногда претенденты стараются приукрасить свой опыт и придумывают несуществующие работы. Но стоит понимать, что любой опытный сотрудник выявит ложь за несколько вопросов.
А еще из-за того, что собеседования проводятся дистанционно, некоторые пытаются «списать». Например, подглядывают в соседний монитор или ищут ответы в интернете. Часто мы даем задание — понять, что делает тот или иной код. Однажды молодой человек пытался быстро скопировать его и найти в интернете — мы это заметили. Словом, все эти уловки не остаются безнаказанными.
Мы работаем с большим количеством надежных агентств по подбору персонала, и это нормальная практика. Но бывают и недобросовестные, которые обещают кандидатам трудоустройство нечестными способами. Они пытаются узнать вопросы, которые мы даем на отборе, и обучить клиента правильным ответам. Нередко такие фирмы пытаются выдавать джунов с двухнедельным опытом работы за сениоров с многолетней практикой.
Ко мне приходил такой кандидат, и по шаблонным формулировкам и заученным фразам я сразу понял, что его готовили в агентстве. Тогда я на ходу изменил значения в условиях задачи, и он начал возмущаться, что ожидал иного испытания. Претендент добился, чтобы его знания проверил другой сотрудник, — результат оказался таким же. Поэтому я советовал бы быть осторожнее и не доверять агентствам, которые предлагают вам обмануть работодателя.
Важно не только занять должность, но и работать на ней, эффективно выполнять задачи и быть полезным команде. Если новичок без необходимых знаний придет в проект с горящими сроками, он может всех подвести, и тогда бизнес понесет убытки.
«Горящие глаза и желание писать код — это, конечно, хорошо, но нужны и другие компетенции»
Профессиональный опыт. После школы я поступил в Финансовый университет на кафедру информационной безопасности. Мои ожидания не совпали с реальностью, но все же в вузе были интересные пары по программированию, что и стало моей отправной точкой в ИТ. Именно тогда я почувствовал, что мне это действительно нравится. Стал активнее погружаться в индустрию, выбрал для себя язык C# и начал создавать простые приложения.
Осенью 2018 года увидел рекламу курсов Финтеха от Тинькофф, где предлагали пройти бесплатные занятия по программированию. Я как раз приобрел Макбук и начинал изучать язык Swift, поэтому рискнул: зарегистрировался и выполнил тестовое задание. Окончил трехмесячную программу, после чего меня пригласили на собеседование в штат.
Так я попал на должность джуниор-разработчика в команду мобильного приложения Тинькофф Мобайла. С тех пор прошло четыре года. Я вырос до тимлида и руковожу командой из восьми разработчиков.
Проводить собеседования для iOS-разработчиков я начал через год-полтора после начала работы: тимлид пригласил присоединиться к нему на интервью с выпускниками Финтеха. Сначала я был «вторым пилотом», но вскоре руководитель команды предложил мне вести встречи самостоятельно.
Во время первого собеседования все пошло не по плану: тимлид заболел, а напарник, которого назначили на замену, опоздал, поэтому мне пришлось начинать разговор самому. Ощущения были необычными: мы с кандидатом сидели один на один, рядом не было никого, кто мог бы подхватить инициативу. Сначала я волновался, но минут через 5—10 стал ощущать себя комфортно. С тех пор собеседования стали одной из моих постоянных задач.
Я провожу оба технических этапа отбора кандидатов — скрининг и программирование. Вот примеры вопросов, которые могут задать на первом этапе:
- Что такое ARC?
- В чем отличие синхронного выполнения кода от асинхронного?
- Какие способы хранения данных ты знаешь?
- Чем отличается Value Type от Reference Type?
На этапе программирования кандидат решает задачи. На это выделяется полтора часа, но на самом деле обычно сначала мы просто десять минут говорим об опыте соискателя, а в последние десять уже сами отвечаем на вопросы о проектах и будущей работе. Непосредственно на написание кода уходит всего час с небольшим.
Советы кандидатам. Иногда я практически сразу понимаю, что кандидат станет отличным сениор-разработчиком. Например, задаю вопрос, а он в ответе охватывает сразу всю тему, предвосхищая дальнейшие уточнения, без воды и по делу. Таким специалистам хочется поаплодировать и сразу пригласить их в штат.
Требования по объему знаний различаются в зависимости от того, на какой уровень претендует кандидат. Горящие глаза и желание писать код — это, конечно, хорошо, а для джуниор-разработчика так и вовсе 50% успеха, но требуются и другие компетенции.
Я бы выделил основные темы, которые нужно знать на базовом уровне:
- Память — разница между слабыми и сильными ссылками, случаи, в которых их нужно применять.
- Многопоточность — как писать многопоточный код.
- UI — как сверстать простой экран, жизненный цикл UIViewController, использование UITableView, механизм Auto Layout.
- Основы языка Swift: опционалы, работа с коллекциями, отличие структур от классов.
Начинающим специалистам, которые собираются на собеседования в Тинькофф, могу посоветовать пройти Финтех-курсы и посмотреть матрицу скиллов iOS-разработчика с GitHub. Лучше всего выписать из таблицы скиллов основные темы и планомерно изучать их: читать статьи, проходить курсы или создавать свои пет-приложения — последнее нравится мне больше всего, так как это возможность применить знания на практике. Рекомендую обратиться к материалам на swiftbook.ru — мне в свое время они очень помогли. Еще стоит подписаться на телеграм-каналы iOS Broadcast и iOS Good Reads, где бывают ссылки на полезные статьи. Знания, которые вы получите на этих ресурсах, можно применять на всех этапах собеседования.
Ошибки на собеседованиях. Несколько раз сталкивался с тем, что люди пытаются загуглить ответы на вопросы. Особенно запомнился кандидат, который практически после каждого вопроса хмурился и долго думал, иногда произнося что-то вроде «хм-м-м», «надо бы вспомнить», «сейчас-сейчас». Все бы ничего, но у него за спиной стоял стеклянный сервиз, в котором отражалась страница Гугла.
Гуглить решения не стоит: это практически всегда заметно и сразу идет в минус кандидату — его могут не пустить на следующий этап. Лучше поразмышлять и прийти к ответу логически или же честно сказать, что у вас нет идей.
Иногда кандидаты пытаются показать, что знают больше, чем на самом деле. Это становится очень заметно, когда они начинают сыпаться на более глубоких вопросах по теме. Не стоит пытаться набить себе цену — лучше показать свой реальный уровень.
«Наша цель — через наводящие вопросы выявить, обладает ли кандидат нужным набором софт-скиллов»
Профессиональный опыт. С компанией знаком давно — в университете проходил программы Тинькофф Образования «Финтех-тренды» и «Анализ данных в индустрии».
Попал в команду Тинькофф благодаря знакомому — через реферальную программу, по которой можно рекомендовать сотрудника. Я проходил отбор в три команды компании и во всех дошел до финального этапа.
Изначально очень нервничал, но после нескольких встреч пришли спокойствие и уверенность. Переломным моментом стало собеседование с командой продуктовой аналитики. Мне удалось продемонстрировать знания с курса «Анализ данных в индустрии» — а мой собеседник как раз преподавал на нем и был очень впечатлен моим уровнем.
Я выбрал эту команду и с мая 2021 года работаю продуктовым аналитиком в кобрендах — партнерских программах банка с другими компаниями. Это, например, карты Tinkoff ALL Airlines, Tinkoff Drive и другие.
Расскажу про свой первый опыт в роли рекрутера. Мы с руководителем отдела проводили финальные собеседования в команду кобрендов. Последний этап — знакомство кандидата с будущей командой. Наша цель — через наводящие вопросы определить, подходит ли кандидат для работы в команде и обладает ли нужным набором софт-скиллов.
В октябре я провел восемь собеседований на программу стажировок Тинькофф Старт по направлению «Аналитика». Для меня это стало новой интересной активностью. Надеюсь, что буду и дальше набираться опыта в проведении интервью.
Советы кандидатам. Особенно ценно, когда человек понимает, куда идет, и демонстрирует интерес к компании, а не просто хочет устроиться на любую работу. Нелишним будет заранее подготовить пару вопросов о проектах.
Обычно я в начале собеседования стажеров спрашиваю об опыте взаимодействия с каким-либо продуктом компании и прошу поделиться идеями его развития или личной болью при использовании. Одна кандидатка подметила неординарную проблему, предложила решение и проверку его эффективности через А/Б-тест. Было видно, что, хоть человек и не работает в банке, много знает о его внутренних процессах — в том числе и благодаря тому, что активно использует приложения. С задачами она также справилась хорошо, и ее взяли на стажировку.
Приведу другой хороший пример того, как нужно вести себя на интервью. Я собеседовал аналитика в команду кобрендов, и кандидатка произвела на меня очень хорошее впечатление.
Во-первых, она правильно ответила на вопрос, чем занимаются продуктовые аналитики и наша команда, — не по бумажке, а от себя. Во-вторых, очень уверенно и полно рассказала о себе, учебе в вузе, о том, что побудило выбрать именно Тинькофф, об опыте менторства и работы. Девушка говорила все, что думала, — это не всегда хорошо, но в нашем случае сработало. Получилась по-настоящему приятная беседа.
В конце мы спросили, есть ли у кандидатки вопросы. Она откинулась на кресло и сказала, что ничего не придумала, потому что слишком увлеклась разговором. Было видно, что она совершенно не волнуется, и это однозначно было плюсом. Собеседование заняло примерно 25 минут, после этого мы приняли решение взять ее в команду и подробно рассказали о возможных задачах.
Могу дать совет всем, кто будет проходить собеседования: не будьте замкнутыми, из вас не должны вытягивать слова клещами, нужно говорить много и по делу. Если не знаете ответ на какую-то задачу или вопрос, размышляйте вслух. Нам правда проще, когда кандидат рассуждает, потому что из потока мыслей можно понять логику — даже если она не приводит в итоге к правильному решению.
Вы должны уметь рассказать о себе интересно и емко, для этого советую репетировать самопрезентацию перед интервью. А еще огромным плюсом будет, если вы пройдете образовательные программы и курсы компании, чтобы заранее познакомиться с ее задачами и требованиями.
«Если кандидат не очень хорошо знает тему, мы даем шанс проявить себя в другой области»
Александр Афонин
проводит собеседования для iOS-разработчиков
Профиль автора
Профессиональный опыт. Еще в школе меня привлекло программирование, и в старших классах я понял, что хочу заниматься именно им. В Финансовом университете я учился на направлении «прикладная информатика» и на четвертом курсе начал работать разработчиком.
Параллельно с учебой и работой решил попробовать сдать вступительный экзамен на программу по iOS-разработке в Финтехе. К счастью, я хорошо справился с ним и попал на курс. Обучение шло три месяца, а в конце меня позвали на собеседование в штат — так я и попал в Тинькофф.
Я провел в компании больше четырех лет, сейчас работаю над приложением Тинькофф Бизнеса в роли старшего разработчика.
Проводить собеседования для iOS-разработчиков я начал полтора года назад. Мне всегда было интересно, каково это — сидеть по другую сторону стола и оценивать кандидата.
Чем дольше провожу интервью, тем больше понимаю, насколько разными бывают люди. Я научился анализировать, что за человек сидит по ту сторону «Зума» и как лучше всего выстроить с ним диалог, чтобы после интервью у него осталось хорошее впечатление о команде и компании.
Советы кандидатам. Нужно понимать, что есть необходимый набор базовых навыков, без которых не получится пройти интервью. Для младшего разработчика это знание платформы, основ тестирования, архитектуры. Но чтобы претендовать на более высокие позиции, этого мало.
Большую часть информации разработчики осваивают благодаря опыту, так что нужно активно практиковаться на своих маленьких проектах. Многие работодатели очень ценят, если у вас есть приложение, которые вы смогли довести до релиза.
К сожалению, я ни разу не встречал кандидатов, после беседы с которыми бы сказал: «Вау, он реально крутой!» Сильные претенденты, безусловно, были. Как правило, такие разработчики быстро соображают, что от них требуется в той или иной задаче, и приходят к ответу. А если они что-то не помнят или не знают, то выходят на решение благодаря активным размышлениям.
Часто кандидаты волнуются на собеседовании и замыкаются, когда неверно отвечают на несколько вопросов подряд: считают, что интервью для них закончено и шансов пройти уже нет. Это не так: если кандидат не очень хорошо знает какую-то тему, мы даем шанс проявить себя в другой области. Бывают моменты, когда претендент вначале рассуждает верно, но в последний момент меняет ответ на неправильный. Перемудрить — это тоже очень обидно.
Программы Тинькофф Образования рассчитаны на школьников, студентов и молодых специалистов, интересующихся математикой, программированием, аналитикой. Все программы бесплатные, но обязательным условием являются вступительные экзамены. Публикуем примеры задач, которые помогут во время самоизоляции размять мозги и развить нейронные связи, а может быть даже подготовиться ко вступительным экзаменам на бесплатное обучение по аналитике и разработке, за анонсами можно следить здесь.
Первые пять наших читателей, которые правильно и быстрее всех ответят на задачи будут вознаграждены фирменным мерчем от Тинькофф (3 рюкзака и 2 худи). Мелочь, а приятно!
Задача №1
У криптовалюты Тинькоин несколько поколений. Тинькоин в первом поколении стоит 1 доллар и 1/2 от стоимости Тинькоина во втором поколении, который стоит 1 доллар и 1/3 от стоимости Тинькоина в третьем поколении, и так до бесконечности. Какая минимальная стоимость Тинькоина в первом поколении?
Задача №2
На стене висят часы с одинаковыми часовой и минутной стрелками, а также обозначениями PM и AM. Секундной стрелки нет. Сколько раз за сутки невозможно точно определить время?
Задача №3
На доске выписаны 20 положительных чисел. Вася заметил, что они образуют арифметическую прогрессию и что сумма всех элементов прогрессии в 200 раз больше, чем разность прогрессии. Найдите отношение наибольшего числа в прогрессии к наименьшему.
Ваши ответы оставляйте в комментариях на сайте. Победителей определим уже через месяц. Good luck!