From a80b7e69408a3c1a138a826c8cc3e82629505db0 Mon Sep 17 00:00:00 2001 From: "a.marchenko" Date: Wed, 12 Jan 2022 13:30:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=D1=8E=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BB=20=D1=81=D1=82=D1=80=D1=83=D1=82=D0=BA=D1=82=D1=83=D1=80?= =?UTF-8?q?=D1=83=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Это необходимо для дальнейшего улучшения раздела интервью и добавления нового материала, так и при расширении раздела --- README.md | 12 +- interview.md | 257 ------------------ interview/README.md | 72 +++++ interview/sections/platform-backend.md | 4 + interview/sections/platform-ml.md | 28 ++ .../sections/platform-sre-find-fix-problem.md | 19 ++ interview/sections/platform-sre.md | 22 ++ interview/sections/platform-web.md | 4 + interview/sections/programming-basic.md | 16 ++ interview/sections/programming.md | 26 ++ interview/sections/system-design-backend.md | 21 ++ interview/sections/system-design-ml.md | 19 ++ .../system-design-perfomance-testing.md | 28 ++ interview/sections/system-design-web.md | 18 ++ package.json | 1 - 15 files changed, 286 insertions(+), 261 deletions(-) delete mode 100644 interview.md create mode 100644 interview/README.md create mode 100644 interview/sections/platform-backend.md create mode 100644 interview/sections/platform-ml.md create mode 100644 interview/sections/platform-sre-find-fix-problem.md create mode 100644 interview/sections/platform-sre.md create mode 100644 interview/sections/platform-web.md create mode 100644 interview/sections/programming-basic.md create mode 100644 interview/sections/programming.md create mode 100644 interview/sections/system-design-backend.md create mode 100644 interview/sections/system-design-ml.md create mode 100644 interview/sections/system-design-perfomance-testing.md create mode 100644 interview/sections/system-design-web.md delete mode 100644 package.json diff --git a/README.md b/README.md index 3c2eee7..3b83c94 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,10 @@ -# Вакансии +Привет! Ты зашел в репозиторий, который содержит публичную информацию о внутренней кухне Тинькофф, и о том, что тебя ждет во время интервью. -* [Работа в IT](https://www.tinkoff.ru/career/it/). Развивайте проекты и управляйте ими: вас ждут интересные задачи по тестированию, дизайну, аналитике и разработке - * Как подготовиться к [ИТ-собеседованию в Тинькофф](https://github.com/TinkoffCreditSystems/career/blob/master/interview.md) +## Что такое Тинькофф? + +Тинькофф - это IT-компания, которая предоставляет множество продуктов клиентам в разных странах. Примеры продуктов: банковское направление, инвестиции, услуги для бизнеса, страхование, тревел, мобильная связь, голосовые помощники, внутренние продукты и множество других проектов. В то же время Тинькофф работает не только в России, но еще и в других странах + +## Список разделов в репозитории + +- [ИТ-собеседования в Тинькофф](interview/README.md) +- [Список текущих вакансий в компании](https://www.tinkoff.ru/career/it/) diff --git a/interview.md b/interview.md deleted file mode 100644 index bc2d9de..0000000 --- a/interview.md +++ /dev/null @@ -1,257 +0,0 @@ -# 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-разработка -* [Алгоритмы](#Алгоритмы) -* [Секция по платформе или языку](#Секция-по-платформе-или-языку) -* [Системный дизайн](#Системный-дизайн) (для кандидатов senior-уровня) - -#### SRE -* [Проверка общих инженерных компетенций](#Проверка-общих-инженерных-компетенций) -* [Выявление и устранение проблем](#Выявление-и-устранение-проблем) -* [Базовое программирование](#Базовое-программирование) - -Для позиций с фокусом на разработку возможно проведение дополнительных секций: -* [Системный дизайн](#Системный-дизайн) -* [Алгоритмы](#Алгоритмы) - -#### Машинное обучение -* [Алгоритмы](#Алгоритмы) -* [Секция по ML](#Секция-по-ML) -* [Дизайн ML-систем](#Секция-по-дизайну-ML-систем) - -#### Тестирование производительности -В алгоритмической секции, по направлению тестирования производительности, используются задачи по кодированию уровня easy (leetcode), нацеленные на умение использовать простые структуры данных, а не на эффективную реализацию алгоритмов. - -* [Алгоритмы](#Алгоритмы) -* [Секция по дизайну проектов тестирования производительности](#Секция-по-дизайну-проектов-тестирования-производительности) - -### Материалы для подготовки к секциям -Рекомендуем ознакомиться с материалами до интервью: в них есть книги и курсы. - -#### Выявление и устранение проблем - -В этой секции кандидат вместе с интервьюером разыгрывают гипотетическу ситуацию критического отказа на production. Интервьюер играет роль этакого источника абсолютного знания о системе и происшествии, которому можно задавать вопросы и получать ответы. В рамках данной секции задача интервьюера оценить: - -1) Насколько структурно и системно кандидат умеет двигаться по проблеме: от фактов к гипотезе, от гипотезы к эксперименту и от эксперименту к решению -2) Насколько быстро и эффективно кандидат способен разобраться в общих принципах построения системы, в проблемах которой необходимо разобраться. Достаточно ли у кандидата кругозора и опыта относительно типовых дизайнов распределенных систем? (Веб сервисов, АПИ, сервисов работы с состоянием и т.д.) -3) Как хорошо кандидат работает с данными - способен ли верно сформулировать полезные и эффективные для поиска аномалий запросы в телеметрические системы? Хорошо ли получается у кандидата интерпретировать полученные данные? - -##### Книги: -- [The Site Reliability Workbook](https://sre.google/workbook/table-of-contents/) -- [Site Reliability Engineering](https://sre.google/sre-book/table-of-contents/) - -##### Курсы: -- [Слерм SRE](https://slurm.io/sre) - -##### Сайты: -- [Ультимативный сборник материалов по SRE-подготовке](https://github.com/mxssl/sre-interview-prep-guide) - -#### Базовое программирование - -Эта секция призвана проверить базовое владение навыками разработки у SRE специалистов. В отличии от секции алгоритмов или языковой мы не проверяем знание сложных алгоритмов или низкоуровневых особенностей работы с языковыми конструкциями/параллелизмом/памятью. От кандидатов ожидается: - -- Уверенное владение синтаксисом, выбранного языка -- Базовое понимание того, как оценивается сложность алгоритмов / О-нотация -- Базовое знакомство с основными структурами данных / плюсом будет умение их имплементировать - -В рамках собеседования кандидату могут быть предложены самые базовые задачи по алгоритмам/структурам данных или более практические/прикладные упражнения вроде имплементации несложного API или написания просто теста. - -##### Сайты, которые помогают решать задачи: -- [LeetCode](https://leetcode.com/) - задачи сложности не выше Easy - -##### Материалы для теоретической подготовки: -- [Подборка материалов по прогрраммированию для SRE](https://github.com/mxssl/sre-interview-prep-guide#programming) - -#### Проверка общих инженерных компетенций - -Секция представляет из себя небольшой опрос, в рамках которого интервьер проверяет знания кандидата по широкому набору тем связаных с архитектурой компьютерных систем и системной инженерией. Опросник включает, но не ограничивается: - -- Linux -- Сети -- Принипы построения и концепции баз данных -- Протоколы -- Криптография -- Файловые системы - -Вопросы могут предполагать как и односложный ответ, так и детальный рассказ, который интервьюер интерпретирует в виде бальной оценки, опираясь на степень погружения кандидата в тему. Важно отметить, что вопросы не включают в себя тем, касающихся конкретных инструментов и технологий (Docker, Ansible, CI/CD, etc) - мы считаем, что инженер, обладающий достаточной подготовкой, без труда освоит любые современные инструменты. - -##### Книги для подготовки: -- Таненбаум Э. С., Бос Х. Современные операционные системы. (издание актуальное на момент подготовки) -- Таненбаум Э. С. Архитектура компьютера (издание актуальное на момент подготовки) -- Таненбаум Э. С., Уэзеролл Д. Компьютерные сети. -- Martin Kleppmann. Designing Data-Intensive Applications (для вопросов вокруг баз и хранения состояния) - -##### Сайты для теоретической подготовки: -- [Подборка материалов по SRE](https://github.com/mxssl/sre-interview-prep-guide) - - -#### Секция по платформе или языку - -В рамках секции идет обсуждение различных аспектов платформ, фреймворков и различных языков программирования. Вопросы варьируются от реализации подходов к многопоточности, устройства памяти до взаимодействия с базой в определенном фреймворке. Язык и платформа выбираются исходя из Вашего опыта. - -#### Алгоритмы - -В рамках секции проверяем знание алгоритмов и структур данных и умение их применять. - -###### Рекомендуем повторить все, что связано с алгоритмами: -- основные структуры данных — строки, списки, деревья, ассоциативные массивы, векторы; -- базовые алгоритмы — поиск элементов в коллекциях, обход деревьев, сортировки, динамическое программирование; -- понятие сложности алгоритмов, O-нотация. - -###### Сайты, которые помогают решать задачи: -- [LeetCode](https://leetcode.com/) -- [HackerRank](https://www.hackerrank.com/) -- [Codeforces](https://codeforces.com/) -- [Topcoder](https://www.topcoder.com/) -- [Timus Online Judge](http://acm.timus.ru/) - -###### Курсы: -- [Алгоритмы, часть I](https://www.coursera.org/learn/algorithms-part1) -- [Специализация «Структуры и алгоритмы данных»](https://www.coursera.org/specializations/data-structures-algorithms) -- [Лекции курса «Алгоритмы и структуры данных» от Тинькофф Образование](https://www.youtube.com/playlist?list=PLjCCarnDJNssC82zhyeg8BxfhPG3b8iZ2) -- [Конспекты по продвинутым алгоритмам и структурам данных](https://algorithmica.org/ru/) - -###### Книги: -- Алгоритмы. Построение и анализ / Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн -- Cracking the Coding Interview: 189 Programming Questions and Solutions / Gayle Laakmann McDowell - -#### Системный дизайн - -Обсуждаем проектирование системы. Во время секции предложим Вам разработать дизайн системы по набору требований. - -###### Как проходит секция -Вам будет предложен набор функциональных требований к системе. В течение часа Вам предстоит формализовать задачу, спроектировать API системы, оценить нагрузку и необходимые мощности, спроектировать модели и потоки данных. - -В зависимости от направления Вашей деятельности, акцент может быть сделан на различные аспекты системы — например, на архитектуру веб-интерфейса в случае, если Вы — фронтенд-разработчик. - -Для визуализации процесса проектирования используется онлайн-доска [Sketchboard](https://sketchboard.io). Для упрощения работы с обширной палитрой данного инструмента в ходе секции рекомендуется пользоваться только элементами раздела Software Sketching. - -Один из наших сотрудников [выступил](https://www.youtube.com/watch?v=Cth-B4r_pf4) на конференции ArchDays 2021 с докладом "Дизайн секции как проверка навыков проектирования систем на собеседованиях", в котором он подробно рассказал про то, как выглядит интервью по дизайну систем, что на нем оценивается и зачем все это надо. Расшифровка выступления доступна в [статье](https://apolomodov.medium.com/system-design-interview-at-tinkoff-7bd97c20d082) на Medium. - -###### Сайты: -- [System Design Primer](https://github.com/donnemartin/system-design-primer) — базовые темы и упражнения по дизайну систем, а также упражнения по объектно-ориентированному анализу и проектированию. -- [Architectural Katas](http://nealford.com/katas/) — множество примеров архитектурных задач. - -###### Книги: -- Высоконагруженные приложения. Программирование, масштабирование, поддержка / Мартин Клеппман. В книге достаточно просто объясняют теорию - -#### Секция по ML - -Разбираем вопросы по анализу данных: о постановке задачи, выборе и обосновании метрик качества, сборе и валидации данных, ML-алгоритмах. Вопросы разбираем на теоретических и практических кейсах. - -###### Сайты: -- [Elements of statistical learning](https://web.stanford.edu/~hastie/Papers/ESLII.pdf) -- [Pattern Recognition and Machine Learning](https://www.amazon.com/Pattern-Recognition-Learning-Information-Statistics/dp/0387310738) -- [Deep learning book, Goodfellow.](https://www.deeplearningbook.org/) -- [Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) -- [Подборка блогов по машинному обучению](https://github.com/josephmisiti/awesome-machine-learning/blob/master/blogs.md) - -###### Курсы: -- [Yandex Data School: Practical_DL](https://github.com/yandexdataschool/Practical_DL) -- [Yandex Data School: Practical_RL](https://github.com/yandexdataschool/Practical_RL) -- [Yandex Data School: NLP_course](https://github.com/yandexdataschool/nlp_course) -- [Catalyst Team: DL_course](https://github.com/catalyst-team/dl-course) -- [Joseph Misiti: awesome-machine-learning](https://github.com/josephmisiti/awesome-machine-learning/blob/master/courses.md) -- [Специализация «Машинное обучение и анализ данных»](https://www.coursera.org/specializations/machine-learning-data-analysis) - -###### Примеры вопросов по машинному обучению: -- [Quant notes](https://github.com/dingran/quant-notes) -- [Data science interview questions and answers](https://github.com/iamtodor/data-science-interview-questions-and-answers) -- [120 data science interview questions](https://github.com/kojino/120-Data-Science-Interview-Questions) -- [Data-science-interviews](https://github.com/alexeygrigorev/data-science-interviews) - -###### Книги: -- Глубокое обучение. Погружение в мир нейронных сетей / Сергей Николенко, Артур Кадурин, Екатерина Архангельская - -#### Секция по дизайну ML систем - -Цель этой секции - обсудить подходы к проектированию и декомпозиции сложной ML системы. Во время секции Вам предложат систему, которую необходимо спроектировать. Можно выделить следующий общий дизайн решения: форматизация задачи и требований, декомопозиция на подзадачи, сбор данных, разбор ML архитектур для подзадач, деплой и тестирование итоговой системы. - -###### Книги: -- Machine Learning Design Patterns / Valliappa Lakshmanan, Sara Robinson, Michael Munn [github](https://github.com/GoogleCloudPlatform/ml-design-patterns) [library](https://www.oreilly.com/library/view/machine-learning-design/9781098115777/) [youtube](https://youtu.be/udXjlvCFusc) -- [Deep Learning Design Patterns](https://www.manning.com/books/deep-learning-design-patterns) / Andrew Ferlitsch - -###### Github: -- [Deep Learning In Production](https://github.com/ahkarami/Deep-Learning-in-Production) -- [Production Level Deep Learning](https://github.com/alirezadir/Production-Level-Deep-Learning) - -###### Блоги: -- [Monitoring Machine Learning Models in Production](https://christophergs.com/machine%20learning/2020/03/14/how-to-monitor-machine-learning-models/) - -###### Доклады: -- [Как в YouDo машинное обучение катится в продакшен](https://www.youtube.com/watch?v=F-j0G0lrjFw&feature=youtu.be) / Адам Елдаров - -#### Секция по дизайну проектов тестирования производительности -Разбираем вопросы, связанные с планированием проектов тестирования производительности, обсуждаем различные подходы на примере определённой архитектуры. -Предложим спроектировать проект по набору входных требований. Поговорим про мониторинг, инструменты управления инфраструктурой, необходимую документацию и анализ производительности систем. - -###### Книги: -- [Systems Performance 2nd Edition](https://www.amazon.com/Systems-Performance-Brendan-Gregg/dp/0136820158/ref=as_li_ss_tl?ie=UTF8&linkCode=sl1&tag=deirdrestraug-20&linkId=815ef3388ba65b674f4f8fd582713f24&language=en_US) / Brendan D. Gregg -- [The Art of Application Performance Testing, 2nd Edition](https://www.oreilly.com/library/view/the-art-of/9781491900536/) / Ian Molyneaux -- [Foundation Level Specialist Syllabus Performance Testing](https://www.istqb.org/documents/ISTQB%20CTFL-PT%20Syllabus%202018%20GA.pdf) / ISTQB -- [Глоссарий терминов тестирования RSTQB](https://www.rstqb.org/ru/istqb-downloads.html?file=files/content/rstqb/downloads/ISTQB%20Downloads/ISTQB%20Глоссарий%20Терминов%20Тестирования%202.3.pdf) / RSTQB - -###### Github: -- [Qa Load Telegram Community](https://qaload.github.io/) -- [Awesome Gatling Github Page](https://github.com/aliesbelik/awesome-gatling) - -###### Блоги: -- [Brendan Gregg's Blog](http://www.brendangregg.com/overview.html) -- [Denis Bakhvalov's Blog](https://easyperf.net/notes/) - -###### Доклады: -- [Воркшоп (часть 1). Встраивание в CI тестирования производительности](https://youtu.be/2wWiud1A7BM) / Сергей Чепкасов (Tinkoff.ru) -- [Воркшоп (часть 2). Встраивание в CI тестирования производительности](https://youtu.be/vbM7lRXLFD8) / Максим Рогожников (Tinkoff.ru) -- [Честное перформанс-тестирование](https://youtu.be/8Mzs3arFGZo) / Дмитрий Пивоваров (ZeroTurnaround) [RU] -- [Сложности performance-тестирования](https://youtu.be/am94iI2assY) / Андрей Акиньшин (JetBrains) [RU] -- [Анализируем перформанс с пользой для себя и окружающих](https://youtu.be/jZ0quqA1Fn8) / Андрей Акиньшин (JetBrains) [RU] -- [Учимся анализировать результаты нагрузочного тестирования](https://youtu.be/gws7L3EaeC0) / Алексей Лавренюк [RU] -- [Performance testing of microservices in action](https://youtu.be/c1xu7W7bqKc) / Alexander Kachur, Ukraine [RU] - - - -## Этап 3: знакомство с командой -После технической секции рекрутер подберет подходящие проекты и согласует созвон с командами. Обычно созвон длится полчаса: ребята рассказывают про текущие проекты, отвечают на вопросы и спрашивают о Вашем опыте, любимых задачах, увлечениях. Таких созвонов будет не более трёх. - -После созвона с Вами свяжется рекрутер: скажите ему, в какой команде Вы хотели бы работать. - -## Этап 4: приглашение на работу -В течение нескольких дней мы вернемся с оффером. Если Вам понравятся условия и команда, останется согласовать дату первого рабочего дня. - -## Дополнение: -1. Рекрутер отвечает между этапами в течение трех дней, на финальное решение уходит чуть больше времени. Рекрутер на связи: Вы можете связаться с ним, если нужно что-то уточнить. -2. В беседе с интервьюерами задавайте вопросы и предлагайте разные решения. Интервьюер проверяет не только знания, но и как Вы подходите к решению задач. -3. Бывает так, что на каком-то этапе интервью мы отказываем кандидату. Отказ не влияет на отношение к кандидату: он может попробовать подать заявку через полгода, а если откроется подходящая вакансия, мы предложим варианты. -4. Если есть пожелания или что-то не понравилось, напишите нам: [interview_issues@tinkoff.ru](mailto:interview_issues@tinkoff.ru). diff --git a/interview/README.md b/interview/README.md new file mode 100644 index 0000000..070fb38 --- /dev/null +++ b/interview/README.md @@ -0,0 +1,72 @@ +# 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-разработка +* [Алгоритмы](./sections/programming.md) +* [Секция по платформе или языку](./sections/platform-backend.md) +* [Системный дизайн](./sections/system-design-backend.md) + +#### Frontend-разработка +* [Алгоритмы](./sections/programming.md) +* [Секция по платформе или языку](./sections/platform-web.md) +* [Системный дизайн](./sections/system-design-web.md) (для кандидатов senior-уровня) + +#### SRE +* [Проверка общих инженерных компетенций](./sections/platform-sre.md) +* [Выявление и устранение проблем](./sections/platform-sre-find-fix-problem.md) +* [Базовое программирование](./sections/programming-basic.md) + +Для позиций с фокусом на разработку возможно проведение дополнительных секций: +* [Системный дизайн](./sections/system-design-backend.md) +* [Алгоритмы](./sections/programming.md) + +#### Машинное обучение +* [Алгоритмы](./sections/programming.md) +* [Секция по ML](./sections/platform-ml.md) +* [Дизайн ML-систем](./sections/system-design-ml.md) + +#### Тестирование производительности +В алгоритмической секции, по направлению тестирования производительности, используются задачи по кодированию уровня easy (leetcode), нацеленные на умение использовать простые структуры данных, а не на эффективную реализацию алгоритмов. + +* [Алгоритмы](./sections/programming.md) +* [Секция по дизайну проектов тестирования производительности](./sections/system-design-perfomance-testing.md) + +## Этап 3: знакомство с командой +После технической секции рекрутер подберет подходящие проекты и согласует созвон с командами. Обычно созвон длится полчаса: ребята рассказывают про текущие проекты, отвечают на вопросы и спрашивают о Вашем опыте, любимых задачах, увлечениях. Таких созвонов будет не более трёх. + +После созвона с Вами свяжется рекрутер: скажите ему, в какой команде Вы хотели бы работать. + +## Этап 4: приглашение на работу +В течение нескольких дней мы вернемся с оффером. Если Вам понравятся условия и команда, останется согласовать дату первого рабочего дня. + +## Дополнение: +1. Рекрутер отвечает между этапами в течение трех дней, на финальное решение уходит чуть больше времени. Рекрутер на связи: Вы можете связаться с ним, если нужно что-то уточнить. +2. В беседе с интервьюерами задавайте вопросы и предлагайте разные решения. Интервьюер проверяет не только знания, но и как Вы подходите к решению задач. +3. Бывает так, что на каком-то этапе интервью мы отказываем кандидату. Отказ не влияет на отношение к кандидату: он может попробовать подать заявку через полгода, а если откроется подходящая вакансия, мы предложим варианты. +4. Если есть пожелания или что-то не понравилось, напишите нам: [interview_issues@tinkoff.ru](mailto:interview_issues@tinkoff.ru). diff --git a/interview/sections/platform-backend.md b/interview/sections/platform-backend.md new file mode 100644 index 0000000..402c09c --- /dev/null +++ b/interview/sections/platform-backend.md @@ -0,0 +1,4 @@ +# Секция по платформе или языку + +В рамках секции идет обсуждение различных аспектов платформ, фреймворков и различных языков программирования. Вопросы варьируются от реализации подходов к многопоточности, устройства памяти до взаимодействия с базой в определенном фреймворке. Язык и платформа выбираются исходя из Вашего опыта. + diff --git a/interview/sections/platform-ml.md b/interview/sections/platform-ml.md new file mode 100644 index 0000000..479aed5 --- /dev/null +++ b/interview/sections/platform-ml.md @@ -0,0 +1,28 @@ +# Секция по ML + +Разбираем вопросы по анализу данных: о постановке задачи, выборе и обосновании метрик качества, сборе и валидации данных, ML-алгоритмах. Вопросы разбираем на теоретических и практических кейсах. + +## Материалы для подготовки +### Сайты: +- [Elements of statistical learning](https://web.stanford.edu/~hastie/Papers/ESLII.pdf) +- [Pattern Recognition and Machine Learning](https://www.amazon.com/Pattern-Recognition-Learning-Information-Statistics/dp/0387310738) +- [Deep learning book, Goodfellow.](https://www.deeplearningbook.org/) +- [Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) +- [Подборка блогов по машинному обучению](https://github.com/josephmisiti/awesome-machine-learning/blob/master/blogs.md) + +### Курсы: +- [Yandex Data School: Practical_DL](https://github.com/yandexdataschool/Practical_DL) +- [Yandex Data School: Practical_RL](https://github.com/yandexdataschool/Practical_RL) +- [Yandex Data School: NLP_course](https://github.com/yandexdataschool/nlp_course) +- [Catalyst Team: DL_course](https://github.com/catalyst-team/dl-course) +- [Joseph Misiti: awesome-machine-learning](https://github.com/josephmisiti/awesome-machine-learning/blob/master/courses.md) +- [Специализация «Машинное обучение и анализ данных»](https://www.coursera.org/specializations/machine-learning-data-analysis) + +### Примеры вопросов по машинному обучению: +- [Quant notes](https://github.com/dingran/quant-notes) +- [Data science interview questions and answers](https://github.com/iamtodor/data-science-interview-questions-and-answers) +- [120 data science interview questions](https://github.com/kojino/120-Data-Science-Interview-Questions) +- [Data-science-interviews](https://github.com/alexeygrigorev/data-science-interviews) + +### Книги: +- Глубокое обучение. Погружение в мир нейронных сетей / Сергей Николенко, Артур Кадурин, Екатерина Архангельская diff --git a/interview/sections/platform-sre-find-fix-problem.md b/interview/sections/platform-sre-find-fix-problem.md new file mode 100644 index 0000000..4db8a6a --- /dev/null +++ b/interview/sections/platform-sre-find-fix-problem.md @@ -0,0 +1,19 @@ +# Выявление и устранение проблем + +В этой секции кандидат вместе с интервьюером разыгрывают гипотетическу ситуацию критического отказа на production. Интервьюер играет роль этакого источника абсолютного знания о системе и происшествии, которому можно задавать вопросы и получать ответы. В рамках данной секции задача интервьюера оценить: + +1) Насколько структурно и системно кандидат умеет двигаться по проблеме: от фактов к гипотезе, от гипотезы к эксперименту и от эксперименту к решению +2) Насколько быстро и эффективно кандидат способен разобраться в общих принципах построения системы, в проблемах которой необходимо разобраться. Достаточно ли у кандидата кругозора и опыта относительно типовых дизайнов распределенных систем? (Веб сервисов, АПИ, сервисов работы с состоянием и т.д.) +3) Как хорошо кандидат работает с данными - способен ли верно сформулировать полезные и эффективные для поиска аномалий запросы в телеметрические системы? Хорошо ли получается у кандидата интерпретировать полученные данные? + +## Материалы для подготовки +### Книги: +- [The Site Reliability Workbook](https://sre.google/workbook/table-of-contents/) +- [Site Reliability Engineering](https://sre.google/sre-book/table-of-contents/) + +### Курсы: +- [Слерм SRE](https://slurm.io/sre) + +### Сайты: +- [Ультимативный сборник материалов по SRE-подготовке](https://github.com/mxssl/sre-interview-prep-guide) + diff --git a/interview/sections/platform-sre.md b/interview/sections/platform-sre.md new file mode 100644 index 0000000..b4c694a --- /dev/null +++ b/interview/sections/platform-sre.md @@ -0,0 +1,22 @@ +# Проверка общих инженерных компетенций + +Секция представляет из себя небольшой опрос, в рамках которого интервьер проверяет знания кандидата по широкому набору тем связаных с архитектурой компьютерных систем и системной инженерией. Опросник включает, но не ограничивается: + +- Linux +- Сети +- Принипы построения и концепции баз данных +- Протоколы +- Криптография +- Файловые системы + +Вопросы могут предполагать как и односложный ответ, так и детальный рассказ, который интервьюер интерпретирует в виде бальной оценки, опираясь на степень погружения кандидата в тему. Важно отметить, что вопросы не включают в себя тем, касающихся конкретных инструментов и технологий (Docker, Ansible, CI/CD, etc) - мы считаем, что инженер, обладающий достаточной подготовкой, без труда освоит любые современные инструменты. + +## Материалы для подготовки +### Книги для подготовки: +- Таненбаум Э. С., Бос Х. Современные операционные системы. (издание актуальное на момент подготовки) +- Таненбаум Э. С. Архитектура компьютера (издание актуальное на момент подготовки) +- Таненбаум Э. С., Уэзеролл Д. Компьютерные сети. +- Martin Kleppmann. Designing Data-Intensive Applications (для вопросов вокруг баз и хранения состояния) + +### Сайты для теоретической подготовки: +- [Подборка материалов по SRE](https://github.com/mxssl/sre-interview-prep-guide) diff --git a/interview/sections/platform-web.md b/interview/sections/platform-web.md new file mode 100644 index 0000000..402c09c --- /dev/null +++ b/interview/sections/platform-web.md @@ -0,0 +1,4 @@ +# Секция по платформе или языку + +В рамках секции идет обсуждение различных аспектов платформ, фреймворков и различных языков программирования. Вопросы варьируются от реализации подходов к многопоточности, устройства памяти до взаимодействия с базой в определенном фреймворке. Язык и платформа выбираются исходя из Вашего опыта. + diff --git a/interview/sections/programming-basic.md b/interview/sections/programming-basic.md new file mode 100644 index 0000000..8f505a7 --- /dev/null +++ b/interview/sections/programming-basic.md @@ -0,0 +1,16 @@ +# Секция базового программирования в Тинькофф + +Эта секция призвана проверить базовое владение навыками разработки у SRE специалистов. В отличии от секции алгоритмов или языковой мы не проверяем знание сложных алгоритмов или низкоуровневых особенностей работы с языковыми конструкциями/параллелизмом/памятью. От кандидатов ожидается: + +- Уверенное владение синтаксисом, выбранного языка +- Базовое понимание того, как оценивается сложность алгоритмов / О-нотация +- Базовое знакомство с основными структурами данных / плюсом будет умение их имплементировать + +В рамках собеседования кандидату могут быть предложены самые базовые задачи по алгоритмам/структурам данных или более практические/прикладные упражнения вроде имплементации несложного API или написания просто теста. + +## Материалы для подготовки +### Сайты, которые помогают решать задачи: +- [LeetCode](https://leetcode.com/) - задачи сложности не выше Easy + +### Материалы для теоретической подготовки: +- [Подборка материалов по прогрраммированию для SRE](https://github.com/mxssl/sre-interview-prep-guide#programming) diff --git a/interview/sections/programming.md b/interview/sections/programming.md new file mode 100644 index 0000000..215944a --- /dev/null +++ b/interview/sections/programming.md @@ -0,0 +1,26 @@ +# Секция программирования в Тинькофф + +В рамках секции проверяем знание алгоритмов и структур данных и умение их применять. + +## Материалы для подготовки +### Рекомендуем повторить все, что связано с алгоритмами: +- основные структуры данных — строки, списки, деревья, ассоциативные массивы, векторы; +- базовые алгоритмы — поиск элементов в коллекциях, обход деревьев, сортировки, динамическое программирование; +- понятие сложности алгоритмов, O-нотация. + +### Сайты, которые помогают решать задачи: +- [LeetCode](https://leetcode.com/) +- [HackerRank](https://www.hackerrank.com/) +- [Codeforces](https://codeforces.com/) +- [Topcoder](https://www.topcoder.com/) +- [Timus Online Judge](http://acm.timus.ru/) + +### Курсы: +- [Алгоритмы, часть I](https://www.coursera.org/learn/algorithms-part1) +- [Специализация «Структуры и алгоритмы данных»](https://www.coursera.org/specializations/data-structures-algorithms) +- [Лекции курса «Алгоритмы и структуры данных» от Тинькофф Образование](https://www.youtube.com/playlist?list=PLjCCarnDJNssC82zhyeg8BxfhPG3b8iZ2) +- [Конспекты по продвинутым алгоритмам и структурам данных](https://algorithmica.org/ru/) + +### Книги: +- Алгоритмы. Построение и анализ / Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн +- Cracking the Coding Interview: 189 Programming Questions and Solutions / Gayle Laakmann McDowell diff --git a/interview/sections/system-design-backend.md b/interview/sections/system-design-backend.md new file mode 100644 index 0000000..a9402e3 --- /dev/null +++ b/interview/sections/system-design-backend.md @@ -0,0 +1,21 @@ +# Секция системного дизайна в Тинькофф + +Обсуждаем проектирование системы. Во время секции предложим Вам разработать дизайн системы по набору требований. + +## Как проходит секция +Вам будет предложен набор функциональных требований к системе. В течение часа Вам предстоит формализовать задачу, спроектировать API системы, оценить нагрузку и необходимые мощности, спроектировать модели и потоки данных. + +В зависимости от направления Вашей деятельности, акцент может быть сделан на различные аспекты системы — например, на архитектуру веб-интерфейса в случае, если Вы — фронтенд-разработчик. + +Для визуализации процесса проектирования используется онлайн-доска [Sketchboard](https://sketchboard.io). Для упрощения работы с обширной палитрой данного инструмента в ходе секции рекомендуется пользоваться только элементами раздела Software Sketching. + +Один из наших сотрудников [выступил](https://www.youtube.com/watch?v=Cth-B4r_pf4) на конференции ArchDays 2021 с докладом "Дизайн секции как проверка навыков проектирования систем на собеседованиях", в котором он подробно рассказал про то, как выглядит интервью по дизайну систем, что на нем оценивается и зачем все это надо. Расшифровка выступления доступна в [статье](https://apolomodov.medium.com/system-design-interview-at-tinkoff-7bd97c20d082) на Medium. + +## Материалы для подготовки + +### Сайты: +- [System Design Primer](https://github.com/donnemartin/system-design-primer) — базовые темы и упражнения по дизайну систем, а также упражнения по объектно-ориентированному анализу и проектированию. +- [Architectural Katas](http://nealford.com/katas/) — множество примеров архитектурных задач. + +### Книги: +- Высоконагруженные приложения. Программирование, масштабирование, поддержка / Мартин Клеппман. В книге достаточно просто объясняют теорию diff --git a/interview/sections/system-design-ml.md b/interview/sections/system-design-ml.md new file mode 100644 index 0000000..7ff0ef4 --- /dev/null +++ b/interview/sections/system-design-ml.md @@ -0,0 +1,19 @@ +# Секция по дизайну ML систем + +Цель этой секции - обсудить подходы к проектированию и декомпозиции сложной ML системы. Во время секции Вам предложат систему, которую необходимо спроектировать. Можно выделить следующий общий дизайн решения: форматизация задачи и требований, декомопозиция на подзадачи, сбор данных, разбор ML архитектур для подзадач, деплой и тестирование итоговой системы. + +## Материалы для подготовки + +### Книги: +- Machine Learning Design Patterns / Valliappa Lakshmanan, Sara Robinson, Michael Munn [github](https://github.com/GoogleCloudPlatform/ml-design-patterns) [library](https://www.oreilly.com/library/view/machine-learning-design/9781098115777/) [youtube](https://youtu.be/udXjlvCFusc) +- [Deep Learning Design Patterns](https://www.manning.com/books/deep-learning-design-patterns) / Andrew Ferlitsch + +### Github: +- [Deep Learning In Production](https://github.com/ahkarami/Deep-Learning-in-Production) +- [Production Level Deep Learning](https://github.com/alirezadir/Production-Level-Deep-Learning) + +### Блоги: +- [Monitoring Machine Learning Models in Production](https://christophergs.com/machine%20learning/2020/03/14/how-to-monitor-machine-learning-models/) + +### Доклады: +- [Как в YouDo машинное обучение катится в продакшен](https://www.youtube.com/watch?v=F-j0G0lrjFw&feature=youtu.be) / Адам Елдаров diff --git a/interview/sections/system-design-perfomance-testing.md b/interview/sections/system-design-perfomance-testing.md new file mode 100644 index 0000000..821066b --- /dev/null +++ b/interview/sections/system-design-perfomance-testing.md @@ -0,0 +1,28 @@ +# Секция по дизайну проектов тестирования производительности +Разбираем вопросы, связанные с планированием проектов тестирования производительности, обсуждаем различные подходы на примере определённой архитектуры. +Предложим спроектировать проект по набору входных требований. Поговорим про мониторинг, инструменты управления инфраструктурой, необходимую документацию и анализ производительности систем. + +## Материалы для подготовки + +### Книги: +- [Systems Performance 2nd Edition](https://www.amazon.com/Systems-Performance-Brendan-Gregg/dp/0136820158/ref=as_li_ss_tl?ie=UTF8&linkCode=sl1&tag=deirdrestraug-20&linkId=815ef3388ba65b674f4f8fd582713f24&language=en_US) / Brendan D. Gregg +- [The Art of Application Performance Testing, 2nd Edition](https://www.oreilly.com/library/view/the-art-of/9781491900536/) / Ian Molyneaux +- [Foundation Level Specialist Syllabus Performance Testing](https://www.istqb.org/documents/ISTQB%20CTFL-PT%20Syllabus%202018%20GA.pdf) / ISTQB +- [Глоссарий терминов тестирования RSTQB](https://www.rstqb.org/ru/istqb-downloads.html?file=files/content/rstqb/downloads/ISTQB%20Downloads/ISTQB%20Глоссарий%20Терминов%20Тестирования%202.3.pdf) / RSTQB + +### Github: +- [Qa Load Telegram Community](https://qaload.github.io/) +- [Awesome Gatling Github Page](https://github.com/aliesbelik/awesome-gatling) + +### Блоги: +- [Brendan Gregg's Blog](http://www.brendangregg.com/overview.html) +- [Denis Bakhvalov's Blog](https://easyperf.net/notes/) + +### Доклады: +- [Воркшоп (часть 1). Встраивание в CI тестирования производительности](https://youtu.be/2wWiud1A7BM) / Сергей Чепкасов (Tinkoff.ru) +- [Воркшоп (часть 2). Встраивание в CI тестирования производительности](https://youtu.be/vbM7lRXLFD8) / Максим Рогожников (Tinkoff.ru) +- [Честное перформанс-тестирование](https://youtu.be/8Mzs3arFGZo) / Дмитрий Пивоваров (ZeroTurnaround) [RU] +- [Сложности performance-тестирования](https://youtu.be/am94iI2assY) / Андрей Акиньшин (JetBrains) [RU] +- [Анализируем перформанс с пользой для себя и окружающих](https://youtu.be/jZ0quqA1Fn8) / Андрей Акиньшин (JetBrains) [RU] +- [Учимся анализировать результаты нагрузочного тестирования](https://youtu.be/gws7L3EaeC0) / Алексей Лавренюк [RU] +- [Performance testing of microservices in action](https://youtu.be/c1xu7W7bqKc) / Alexander Kachur, Ukraine [RU] diff --git a/interview/sections/system-design-web.md b/interview/sections/system-design-web.md new file mode 100644 index 0000000..c4f75bb --- /dev/null +++ b/interview/sections/system-design-web.md @@ -0,0 +1,18 @@ +# Секция по дизайну для WEB направления +## Формат секции +- Продолжительность: 60 минут +- Формат: Будет использоваться сервис похожий на https://excalidraw.com/ в котором можно будет "порисовать" систему +- Кто проходит секцию: синьоры или выше + +На этой секции мы хотим узнать ваш опыт проектирования и сопровождения Web приложений, а так-же как вы можете решить задачи связанные с проектированием систем. Фокус секции будет на Web приложении. + +### Этапы секции +- Сбор требований - будет дана задача и на этом этапе проверяем как кандидат может собрать требования. Можно и нужно задавать вопросы и выяснить основные, критичные момент которые потребуются дальше +- Проработка верхнеуровнего дизайна - оцениваем опыт в организации инфрастуктуры для WEB приложений. Какие системы используются, что бы пользователь мог увидеть результат в браузере? +- Проработка структуры приложения - оцениваем опыт в проектировании приложения на выбранных кандидатом технологий. Как будет приложение разбито на компоненты/модули +- Проработка данных - оцениваем опыт в организации общения между клиентом и сервером, а так-же где и как будут храниться данные в приложении. +- Производительность/Безопасность - оцениваем опыт в улучшении производительности приложений, так и исправления/учитывания особенностей связанных с безопасностью + +## Материалы для подготовки +- Подумайте о том, как устроены внутри типичные сайты средних или крупных компании. И составьте/опишите схему по этому сайту, начиная с самого верха, до уровня компонентов +- [Front-End Engineer](https://www.youtube.com/channel/UC6YpkaZsAcAvPNt4rLiS7dg) - хороший канал с разбором базовых задач diff --git a/package.json b/package.json deleted file mode 100644 index 69a88e3..0000000 --- a/package.json +++ /dev/null @@ -1 +0,0 @@ -{}