Перейти к содержимому

Как проходит собеседование в тинькофф

  • автор:

Как успешно пройти собеседование в Тинькофф банке

Собеседование длилось 50—60 минут, мне подробно рассказали о том, что будет входить в мои обязанности, какие перспективы роста могут быть.

Как проходить собеседование советы

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

Как успешно пройти любое собеседование

  • Самый первый совет: готовиться Нельзя идти на собеседование наобум.
  • Начинайте с разговора ни о чем
  • Не превращайте разговор в монолог
  • Установите доверительный контакт
  • Постарайтесь быть модератором беседы
  • Позаботьтесь о внешнем виде
  • Не ведите себя, как сноб
  • Будьте готовы поделиться информацией

Какие ошибки допускают на собеседовании

5 типичных ошибок на собеседовании:

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

Как не боятся идти на собеседование

Десять эффективных способов, которые помогут успокоить нервы перед собеседованием:

  • Дышите
  • Спланируйте свое время и немного прогуляйтесь
  • Прочитайте себе мотивационную речь
  • Выберите в своем плейлисте мощный трек!
  • Позвоните излучающему позитив другу
  • Улыбайтесь
  • Вспомните какой-нибудь забавный случай

Как понять что ты успешно прошел собеседование

8 признаков, указывающих на успешно пройденное собеседование:

  • У вас завязался непринужденный разговор
  • Интервьюер дал вам положительный отзыв
  • Вам рассказали о предприятии
  • Вас вовлекли в планы на будущее
  • Вас представили команде
  • Интервью затянулось больше положенного

Как понять что собеседование неудачное

Основные признаки неудачного собеседования:

  • Взгляд свысока
  • Интервьюер занят посторонними делами
  • Не делает заметки, поглядывает на часы
  • Интервьюер пролистывает ваше резюме
  • Мимо цели
  • Собеседование проходит очень быстро
  • Вас перебивают
  • Интервьюер не улыбается

Почему мы должны выбрать именно вас

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

Как грамотно рассказать о себе на собеседовании

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

В каком виде лучше идти на собеседование

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

Что нужно говорить на собеседовании пример

Вопросы на собеседовании: 12 ответов на самые часто задаваемые:

  • Расскажите о себе
  • Кем вы видите себя через несколько лет?
  • Какие ваши сильные стороны?
  • Какие ваши слабые стороны?
  • Расскажите о своих неудачах
  • Почему вы хотите работать именно у нас?
  • Какими будут ваши первые шаги на новом месте работы?

Какой цвет лучше надеть на собеседование

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

Какую позу принять на собеседование

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

Как не надо вести себя на собеседовании

Как точно нельзя вести себя на собеседовании?:

  • Одеваться в чрезмерно неформальном стиле
  • Прибедняться или выставлять себя всемогущим
  • Опаздывать и забывать условия проведения собеседования
  • Говорить «не знаю»
  • Вести себя, как на допросе
  • Прибегать к психологическому манипулированию

Что нужно говорить на собеседовании в банке

Какие вопросы задают на собеседовании в банке?:

  • Почему Вы хотите быть банковским служащим?
  • Почему Вы хотите работать именно в нашем банке?
  • Что Вы ответите клиенту, который хочет разорвать договор с банком?
  • Какая у вас цель в карьере банковского служащего?

Какие слабые стороны можно сказать на собеседовании

Какие слабые стороны лучше упомянуть?:

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

Что можно говорить на собеседование

  • Скажите, что вам близки цели компании (и перечислите, какие именно). Это покажет, что вы близки по духу.
  • Опишите, как новая должность поможет вам стать лучше.
  • Намекните, что видите себя в этой компании в будущем. Только не говорите, что хотите возглавить её через N лет, это перебор.

Что нужно знать прежде чем идти на собеседование

15 советов перед собеседованием:

  • Предварительная информация о вакансии и компании
  • Общие правила
  • Впечатление о вас до интервью и после него
  • Ваша позиция на интервью должна быть активной
  • Ваша мотивация к работе
  • Ваши краткосрочные и долгосрочные цели
  • Самопрезентация с фактами и достижениями
  • Говорите кратко и понятно

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

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

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

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

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

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

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

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

Как проходит собеседование в тинькофф

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

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

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

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

«Важно не только занять должность, но и работать на ней»: советы перед ИТ-собеседованиями

У собеседований на ИТ-специальности своя специфика. Требуется не только пройти отбор эйчар-специалиста, но и продемонстрировать навыки руководителю и членам команды.

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

Это истории из Сообщества. Собраны в один материал, бережно отредактированы и оформлены по стандартам редакции.

Структура отбора ИТ-специалистов в Тинькофф

Процесс состоит из нескольких этапов и зависит от специальности. Рассмотрим на примере подбора на направление мобильной разработки:

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

«Мы не допускаем тех, кто может устроить разлад в команде»

Профессиональный опыт. Я прошел собеседование в декабре 2019 и в январе 2020 года вышел на работу в SME Тинькофф Бизнеса. Год спустя меня пригласили участвовать во внутренних мероприятиях — например, читать лекции на курсе Тинькофф Образования по iOS-разработке. Постепенно я начал проводить собеседования в компанию.

Я отвечаю за техническое собеседование, которое построено на принципах live coding — программирования в реальном времени. На этом этапе кандидат решает задачи, а мы параллельно проверяем его софт-скиллы.

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

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

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

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

Если вас постигла одна или даже несколько неудач, не надо переставать пробовать. После 3—5 собеседований в разных компаниях вы познакомитесь с типовыми задачами для отбора и будете решать их более уверенно, так как все они проверяют общие аспекты computer science.

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

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

Как выбрать лучший ИТ-курс

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

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

А еще из-за того, что собеседования проводятся дистанционно, некоторые пытаются «списать». Например, подглядывают в соседний монитор или ищут ответы в интернете. Часто мы даем задание — понять, что делает тот или иной код. Однажды молодой человек пытался быстро скопировать его и найти в интернете — мы это заметили. Словом, все эти уловки не остаются безнаказанными.

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

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

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

«Горящие глаза и желание писать код — это, конечно, хорошо, но нужны и другие компетенции»

Профессиональный опыт. После школы я поступил в Финансовый университет на кафедру информационной безопасности. Мои ожидания не совпали с реальностью, но все же в вузе были интересные пары по программированию, что и стало моей отправной точкой в ИТ. Именно тогда я почувствовал, что мне это действительно нравится. Стал активнее погружаться в индустрию, выбрал для себя язык C# и начал создавать простые приложения.

Осенью 2018 года увидел рекламу курсов Финтеха от Тинькофф, где предлагали пройти бесплатные занятия по программированию. Я как раз приобрел Макбук и начинал изучать язык Swift, поэтому рискнул: зарегистрировался и выполнил тестовое задание. Окончил трехмесячную программу, после чего меня пригласили на собеседование в штат.

Swift — язык программирования, который разработала и поддерживает компания «Эпл»

Так я попал на должность джуниор-разработчика в команду мобильного приложения Тинькофф Мобайла. С тех пор прошло четыре года. Я вырос до тимлида и руковожу командой из восьми разработчиков.

Проводить собеседования для iOS-разработчиков я начал через год-полтора после начала работы: тимлид пригласил присоединиться к нему на интервью с выпускниками Финтеха. Сначала я был «вторым пилотом», но вскоре руководитель команды предложил мне вести встречи самостоятельно.

Во время первого собеседования все пошло не по плану: тимлид заболел, а напарник, которого назначили на замену, опоздал, поэтому мне пришлось начинать разговор самому. Ощущения были необычными: мы с кандидатом сидели один на один, рядом не было никого, кто мог бы подхватить инициативу. Сначала я волновался, но минут через 5—10 стал ощущать себя комфортно. С тех пор собеседования стали одной из моих постоянных задач.

Я провожу оба технических этапа отбора кандидатов — скрининг и программирование. Вот примеры вопросов, которые могут задать на первом этапе:

  1. Что такое ARC?
  2. В чем отличие синхронного выполнения кода от асинхронного?
  3. Какие способы хранения данных ты знаешь?
  4. Чем отличается Value Type от Reference Type?

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

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

Требования по объему знаний различаются в зависимости от того, на какой уровень претендует кандидат. Горящие глаза и желание писать код — это, конечно, хорошо, а для джуниор-разработчика так и вовсе 50% успеха, но требуются и другие компетенции.

Я бы выделил основные темы, которые нужно знать на базовом уровне:

  1. Память — разница между слабыми и сильными ссылками, случаи, в которых их нужно применять.
  2. Многопоточность — как писать многопоточный код.
  3. UI — как сверстать простой экран, жизненный цикл UIViewController, использование UITableView, механизм Auto Layout.
  4. Основы языка Swift: опционалы, работа с коллекциями, отличие структур от классов.

Начинающим специалистам, которые собираются на собеседования в Тинькофф, могу посоветовать пройти Финтех-курсы и посмотреть матрицу скиллов iOS-разработчика с GitHub. Лучше всего выписать из таблицы скиллов основные темы и планомерно изучать их: читать статьи, проходить курсы или создавать свои пет-приложения — последнее нравится мне больше всего, так как это возможность применить знания на практике. Рекомендую обратиться к материалам на swiftbook.ru — мне в свое время они очень помогли. Еще стоит подписаться на телеграм-каналы iOS Broadcast и iOS Good Reads, где бывают ссылки на полезные статьи. Знания, которые вы получите на этих ресурсах, можно применять на всех этапах собеседования.

Ошибки на собеседованиях. Несколько раз сталкивался с тем, что люди пытаются загуглить ответы на вопросы. Особенно запомнился кандидат, который практически после каждого вопроса хмурился и долго думал, иногда произнося что-то вроде «хм-м-м», « надо бы вспомнить», «сейчас-сейчас». Все бы ничего, но у него за спиной стоял стеклянный сервиз, в котором отражалась страница Гугла.

Гуглить решения не стоит: это практически всегда заметно и сразу идет в минус кандидату — его могут не пустить на следующий этап. Лучше поразмышлять и прийти к ответу логически или же честно сказать, что у вас нет идей.

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

Хотели как в FAANG, а вышло как всегда или Опыт собеседования в Тинькофф в 3 актах

Около года назад я задался целью получить оффер от FAANG. Как следствие, постоянной частью моей жизни стали тематические форумы, площадки и вся сопутствующая атрибутика. Спустя какое-то время я попробовал себя на собеседованиях в околоFAANGoвые компании: Lyft, Spotify, Booking и т. д, где-то успешно, где-то не очень. В это же время мне порекомендовали попробовать пройти собеседование в Тинькофф банк, который внедрил схожий процесс. После стандартного общения с HR менеджером была получена ссылка на описание процесса собеседования. “Хм, почти что FAANG + тех. интервью по Primary Skill”, — подумал я и сказал, что готов приступать. В тот же час было назначено 2 интервью: техническое и coding, а вот 3 этап, system design, нужно было заслужить успешным прохождением первых двух. Почему именно эти 2 части являлись основополагающими, осталось неясным.

Акт первый, технический

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

Ревью кода. Разнообразные задачи от Spring до concurrency.

Spring до concurrency. Вопросы по Spring оказались весьма тривиальными, входящими в подборку “ТОП-25 вопросов по Spring” (скоупы бинов, виды прокси и т. д.). Можно ли такими вопросами действительно проверить понимание и опыт использования Spring? Сомнительно.

Транзакции. ACID. Уровни изоляций. Как устроена работа в Spring? Несомненно, данный топик поражает своей новизной. Почему бы не отойти от заученной статьи с Википедии (которая читается 5 минут) и стандартных вопросов как будто бы про транзакцию (а на самом деле про прокси в Спринге), не мучить Senior+ кандидата выученными статьями, а поговорить о необходимости транзакций, архитектурных подходах и сопутствующих темах? Тем более вы рекомендуете к прочтению книгу “Высоконагруженные приложения. Программирование, масштабирование, поддержка / Мартин Клеппман”, где тема БД, транзакций и прочего раскрыта очень хорошо.

Concurrency. И снова стандартные вопросы про “deadlock, synchronized, reentrantLock”, принцип “happens before” и “volatile” (хотя это JMM, знатоки, не кидайтесь тапками), как-то по верхам цепляем java.util.concurrent. Зачем-то пересказываем друг другу то, что миллион раз слышали, а на практике почти никогда не применяли. В голове крутится “зачем, почему, ведь мы можем обсудить столько всего”. “Столько всего” — это:

Базовая теория потоков (какими потоками оперирует Java, почему, есть ли альтернативы в Java или других JVM-based языках, их плюсы и минусы).

Методы поиска deadlock и livelock с различными UI тулами или без них (только терминал, только хардкор). Для кандидатов уровня ниже можно просто дать на ревью thread dump.

Если уж дошли до java.util.concurrent, то вместо вопроса, что за зверь ConcurrentHashMap, давайте посмотрим на изменение подхода к ее реализации в разных версиях JVM и поразмышляем о причинах. Также можно обсудить “диковинные” коллекции в виде зоопарка очередей и, к примеру, skip lists (заодно проверив теорию алгоритмов).

Думаю, для “бесплатного” списка тем достаточно)

JMM и т. д. Вот тут прозвучал вопрос, на котором я, признаюсь завис. “Что знаешь о JMM?” Максимально высокоуровневый вопрос, на который мозг начинает генерировать: “Что от меня хотят услышать? Стандартное определение правил из спецификации типа happens before, reordering? А может, типы мониторов, их схему переходов, цикл парковки потоков? А может, еще глубже о работе с ОС?” В общем, не смог я вспомнить, с чего начинаются статьи “JMM, топ 10 вопросов”. “Кое-что знаю, но гораздо меньше, чем Шипилев” — отшучиваюсь и решаю брать инициативу в свои руки. Быстро выдаю всё, что помню про hb, и рассказываю о том, какие проблемы решал за последние несколько лет, тем самым решив перескочить на тему Java Memory. Сразу оговариваюсь, что про heap говорить не будем, так как здесь всё уже сказано и описано, а обсудим лучше NonHeap. Рассказываю о том, почему Spring Boot application не сможет долго жить на 256 Mб оперативы и при чем здесь non-heap (на самом деле, очень советую добавить вопросы про это в интервью, так как приложений, запускающихся не в контейнерах, почти не осталось). Плавно перехожу на коварную Cassandra (как пример сервиса на Java) и ее работу с offheap, заканчиваю тем, что в великолепном докладе Андрея Паньгина всё есть и он мне очень помог. Складывается впечатление, что такого мой собеседующий не ожидал. Возникает неловкая пауза, которую я решаю прервать вопросом “Обсудим gc? Недавно подбирал оптимальные настройки для нашей конфигурации Кассандры, могу рассказать”. То ли из-за ограничений по времени, то ли не выдержав пытку Кассандрой, собеседующий завершает данный блок.

Вопрос со звездочкой. Так как перед собеседованием я прочитал подборки “Топ-50 вопросов по Java, Spring и т. д”, получаю вопрос повышенной сложности со следующими входными данными: Есть сервис, работающий с Third-party сервисом. Также данный сервис работает с реляционной базой, в частности Postgres. В какой-то момент сервис начинает тормозить. Каков алгоритм моих действий? Последовательность моих рассуждений:

Полагаю, что в моем распоряжение есть все необходимые метрики системы и окружения. Поэтому первым делом предлагаю проверить наличие пиков в графиках latency: запрос в БД, запросы к third-party сервисам, сетевые задержки. Если проблема в БД — то смотрим на количество локов и потребление CPU (потребление memory нам ничего не даст, так как в БД встроен механизм кэширования). Есть проблемы — тюним БД или оптимизируем запросы.

Интервьюер отвечает, что с латенси все в порядке, поэтому я предлагаю проверить метрики JVM, в том числе GC (могли увеличиться паузы на stop-the-world).

Переходим к вопросам о том, что же делать, если проблема в медленных ответах third-party системы. Предлагаю следующий алгоритм решения:

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

Ограничение кол-ва запросов к данной системе с помощью rate-limiter (предлагаю отправить письмо с данной просьбой, пока поведение системы не будет исправлено). Предполагаю, что на нашей стороне будет реализована корректная обработка отклоненных запросов.

Использование сircuit-breaker на нашей стороне, дабы ограничить кол-во запросов к данной системе.

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

Акт второй, coding

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

Не используйте для созвона телефон: Вы будете много кодить в онлайн-IDE, рисовать схемы и общаться с интервьюером.

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

Из этого я сделал вывод, что решать задачи потребуется в онлайн-IDE вроде Coderpad, а по сложности они будут ближе к easy (возможно, middle) на leetcode. Но, как говорится, мои ожидания — это мои ожидания.

В начале собеседования интервьюер сообщил, что меня ждут 2 задачи, и время я должен рассчитывать сам.

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

Первой оказалась задача на поиск одинаковых элементов в 3 отсортированных массивах с использованием O(1) памяти. Решения я не знал, но рассуждал вслух, предлагая оптимальные по времени, но не по памяти, решения. В процессе раздумий появилось решение на основе 3 указателей, оптимальное с точки зрения времени и памяти. Решение было реализовано, код запустился (как оказалось, выбранный редактор очень медленно запускает код) и в целом задача была решена.

Вторая задача оказалась уровнем выше. Я сразу определил, что решаться она должна методом DP, и тем самым словил диссонанс с ожиданиями: “облегчённые задачи по кодированию, нацеленные на умение использовать простые структуры данных”. Не считаю, что DP задачи, требующие двумерного массива (в простом для понимания решении), можно назвать “облегчёнными”. Объяснив, как в принципе решаются такие задачи, я взял несколько минут на раздумье, но не смог составить рекуррентную формулу, честно об этом сказав. Затем мы вывели формулу вместе с интервьюером — на этом этапе я откровенно не блистал. После этого интервьюер сообщил мне, что данный этап собеседования завершен, и мы попрощались. (Сделанные выводы: стоит подтянуть задачи на DP.)

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

Акт третий, мой любимый. System design

Приглашение на System design секцию стало для меня сюрпризом, поэтому я допустил две ошибки: выбрал не совсем удачное для себя время интервью и не уточнил, какой редактор для проектирования будет использоваться (казалось, что на первой встрече был упомянут Google Draw).

На интервью было предложено спроектировать Messenger (стандартный дизайн для FAANG собеседований). Решать задачу я собирался по удобной для себя схеме:

Расчет объема данных и ожидаемой нагрузки

HLD (High Level Design)

Возможно, обсуждение API, схемы БД

Обсуждение недостатков и компромиссов

Первые 2 пункта мы проскочили достаточно быстро. Я как мог боролся с неведомым прежде SketchTool и рисовал HLD. Сразу оговорил, что в мессенджерах используется WebSocket протокол, и объяснил, почему. При отправке сообщения оно должно было попадать в очередь, я предложил Kafka (предупредив, что мы будем относится с осторожностью к созданию большого количества топиков из-за ограничений на файловые дескрипторы). Оттуда сообщение направляется в Cassandra и, при необходимости, на Message Server.

В какой-то момент мы с собеседующим, казалось, полностью перестали понимать друг друга. Он настойчиво требовал изобразить на схеме, уже полной компонентов, flow с потоками данных (что для меня в скетчбуке оказалось просто невыполнимой задачей). По API я обратил внимание, что сообщения мы пересылаем по websocket, и роутиться запросы будут на основе посылаемого Payload, однако мы продолжили описывать API. По схеме данных я заострял внимание на partitionKey и важность их выбора, однако собеседующий не понимал, почему работать с большим партишеном плохо, и вообще закрадывалось подозрение, что он не хотел видеть в данном System Design BASE-системы, хотя расчеты говорили о другом.

Со своей стороны могу сказать, что прохождение данного этапа было далеко от идеала, ввиду путаницы по подключениям и генерации messageId, себя я бы оценил на 6 из 10.В конце собеседования я получил фидбэк, что мой System Design плох по perfomance и latency, так как содержит очень много компонентов и медленных сервисов вроде Kafka. Занавес. “Надо было рисовать 3 квадратика”, — подумал я, — “один клиент, другой — чат-сервис монолит, третий — vendor-specific db, вроде Oracle”.

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

Заключение

Так почему же получилось “как всегда”? Конкретно на этапах, характерных для FAANGa, я выделил для себя несколько причин:

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

Ни на одном этапе не был соблюден тайминг. Все этапы длились на 10-15 минут больше запланированного. (хотя на встрече с hr, было предложено ставить этапы друг за другом, но для себя я просил получасовой перерыв)

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

Не было знакомства с инструментами, которые использовались во время интервью

Хочется верить, что описание моих впечатлений окажется полезным и, возможно, поможет что-то улучшить. Мои предложения:

Заранее определиться с редактором для кодинга (если это будет online редактор, то высылать кандидату ссылку заранее, чтобы он мог поработать с редактором и настроить его под себя).

Не давать субъективных оценок уровню алгоритмических задач — слово “облегченные” может восприниматься разными кандидатами очень по-разному.

Предупреждать о том, какой именно редактор будет использоваться для System design, чтобы кандидат мог потренироваться. Все редакторы очень разные, и на своем опыте могу сказать, что привыкнув к популярным googleDraw и excilaryDraw, мгновенно переключиться на Sketch Tool было весьма тяжело.

Если вы стремитесь к распределенной архитектуре (судя по рекомендации книги “Высоконагруженные приложения. Программирование, масштабирование, поддержка / Мартин Клеппман”, это именно так), то стоит придерживаться её принципов и на System Design секции. Кроме того, в рекомендации можно добавить ссылку на книгу System Design Interview – An insider’s guide (часто идёт в паре с рекомендованной вами).

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

Если процесс интервью и вопросы являются тайной, то ввести NDA для собеседующихся.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *