Привет, Хабр! Я фронтенд-разработчик с опытом в 5 лет. Пришел в Алиэкспресс джуном, ушел сеньором — за это время поработал почти во всех уголках продукта.

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

Дисклеймер: статья написана на основе интервью с фронтенд-разработчиком Владиславом Фоминым.

Чем я занимаюсь как фронтенд-разработчик

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

Дизайнер приходит ко мне с картинкой — макетом. Это просто статичное изображение того, как должна выглядеть страница. Обычно это файл в Figma или другом графическом редакторе.

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

По сути, строю мост между красивой картинкой и работающим продуктом. Работаю с HTML, CSS и JavaScript, использую фреймворки вроде React или Vue.

До меня это был макет в Figma. Я написал код, чтобы все кнопки нажимались, формы отправлялись, а страница работала быстро
До меня это был макет в Figma. Я написал код, чтобы все кнопки нажимались, формы отправлялись, а страница работала быстро

Сколько времени ушло на поиск

Поиск работы занял около двух месяцев: с июля по начало сентября. За это время сделал 113 откликов на HH, плюс еще несколько десятков на других площадках. Прошел 15 собеседований в разных компаниях. Получил 5 офферов.

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

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

Что не работало в резюме и как я исправил 

Первая версия резюме откликов почти не собирала. Все потому, что резюме сначала смотрит машина, потом уже человек. А я написал его не для машины.

Взял ChatGPT, попросил переформулировать описание опыта. Сказал примерно так: "Я разработчик, вот мой текст, напиши по-другому, чтобы привлекательнее звучало".

Что изменил конкретно:

Расписал достижения. Раньше было коротко: "Делаю то, делаю это". После переделки — подробно описал, что сделал за время работы, какие задачи решал, с какими технологиями работал.

Было:

Стало: 

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

Писал для машины. ATS-системы (автоматические фильтры резюме) ищут конкретные ключевые слова. Когда пишешь "ES6" или "ES6+", система может не распознать это как "JavaScript". Убрал все лишнее, оставил только базовые названия технологий.

Было:

Стало:

Убрал дубли и лишнее. Было написано "React, Next.js и React" — оставил просто "React".
Убрал дубли и лишнее. Было написано "React, Next.js и React" — оставил просто "React".

Поставил серьезное фото. Слева — то, что было до. Справа — то, что поставил в финальной версии резюме. 

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

Как откликался на вакансии

Использовал все доступные каналы:

HeadHunter — основная площадка, 113 откликов отсюда. Здесь чаще всего находили меня сами рекрутеры.

Хабр Карьера — отправил несколько откликов, получил несколько ответов.

Telegram-каналы с вакансиями — там тоже бывают интересные предложения.

Прямые обращения к HR — самый эффективный способ. Писал напрямую в обход автоматических фильтров на сайтах. 

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

Если контакт HR был указан в вакансии — писал туда. Если нет — искал сам, спрашивал у знакомых в индустрии. Где-то стучался напрямую в компанию, где-то находил через общих людей. В общем, вымучивал контактик.

На обычные отклики через сайт часто отвечали "хорошо, мы вас рассмотрим" — и не возвращались. Было пару HR-скринингов, где говорили "да-да, все хорошо, назначим техническое собеседование" — и тишина. Не знаю почему.

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

Один товарищ, который тоже искал работу, сказал мне: "Сеньоры сопроводительные не пишут". Я ему верю. 

Подготовка к собеседованиям

Сначала пробовал не готовиться — приходить просто отдохнувшим, с чистой головой. Не сработало, терялся. Начал готовиться. 

Что конкретно делал:

Смотрел открытые собеседования. На YouTube полно записей — Сбер, X5, Озон, Яндекс. Просто забиваешь в поиск "открытое собеседование фронтенд" или "собеседование на JavaScript" — и находишь. Перед собеседованиями, где я в итоге получал оффер, вечером готовился по полтора часа — смотрел такие видео, решал задачи.

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

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

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

Решал задачи с LeetCode. Уровень Easy, топ-75 задач. Есть еще ресурс NeetCode — там готовые решения с объяснениями. Открываешь топ-75 или топ-150, решаешь. Скорее всего, что-то из них встретится на собеседовании.

Если совсем не получалось решить самому — подсматривал решение и разбирался, как автор к нему пришел.

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

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

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

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

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

Собеседования в крупных компаниях

Озон

Сначала был HR-скрининг, потом скрининг с тимлидом. Спрашивали про опыт, про то, что работал, как работал. Общие вопросы про команду.

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

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

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

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

Но пришел отказ. Им не понравились алгоритмы. 

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

Ламода

Сначала был HR-скрининг. Разговаривали про опыт работы. Просто поговорили, обсудили общие моменты.

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

Спрашивали:

  • Какие примитивы в JavaScript

  • Есть flex box — как расставить блоки по обе стороны

  • Отличие блочных элементов от строчных

  • Что такое генераторы и как используются, как сделать функцию-генератор

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

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

Одноклассники

Техническое собеседование было хорошим. Несколько задач из LeetCode уровня Easy. Много технических вопросов: если упоминаешь какое-то слово, сразу просят объяснить глубже. Например, говорю про Event Loop, рассказываю про микротаску, меня ловят за микротаску и давай раскручивать эту тему.

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

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

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

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

Сбер 

Собеседовался в 2 разных проекта. Первый цикл собеседований был в платформенную команду Сбертеха.

Давали задачи из LeetCode уровня Easy. Например, задачи на TypeScript:

  • Generic Length — передать массив, generic должен иметь тип длины этого массива.

  • FlatMap — массив массивов превратить в массив одной длины, все через типы TypeScript.

Была задача на troubleshooting React-компонента. Дали код и попросили найти ошибки, исправить их и предложить улучшения. При этом нужно не просто править код, а рассказывать, что делаешь и почему.

Еще задача на React: есть компонент с useLayoutEffect, useEffect, useRef и console.log — в каком порядке выведутся и почему. Начал говорить: useLayoutEffect у нас происходит до useEffect и так далее. Там немного ошибся сначала, но потом сложилось правильное решение в голове.

В результате они выбрали внутреннего сотрудника.

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

Тильда

Был классический HR-скрининг. Потом техсобес.

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

Event Loop — опять же, как везде. Пара задач LeetCode уровня Easy.

Что отличало Тильду — у них была задачка на понимание UI/UX. Собеседователь показывал два компонента или два кусочка страницы скриншотами и говорил: что тебе больше нравится и почему. Нужно было объяснить, что более выгодно с UI/UX точки зрения. Я объяснял, что правильно, что неправильно по моему мнению, почему бы я так никогда не сделал, даже бы поругался с дизайнером, что так делать не нужно.

Была интересная задача про сравнение объектов. Есть объект и есть второй объект — как их сравнить? Ответил, что можно через lodash проверить. Говорят: а если lodash нет? Такой: тогда берем JSON.stringify и сравниваем их между собой.

Дальше началась раскрутка вопросов: а если передать в JSON.stringify объект с функцией? Начал чесать репу: наверное, функция не будет отображаться. Так оно и было. Говорят: а как тогда сделать, чтобы у нас сравнение было с функцией? Тут я уже начал еще больше чесать репу.

Еще спрашивали про подключение JavaScript-скриптов к страницам. Так как я особо этим никогда не занимался, рассказал, как это было раньше: можно положить в конец страницы. Спрашивали более современные штуки — отложенный скрипт defer или асинхронный async. Про async атрибут я вспомнил, а вот про defer вообще никаким образом не смог.

Еще был вопрос: как удалить дубликаты из массива без Set? Говорю: есть массив, надо убрать дубликаты, просто кладем их в Set и все, дубликатов нет, потому что в Set их просто быть не может. Говорят: а давай сделаем без Set. Я: а зачем делать без Set, если он есть?

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

X5

Было 3 этапа. HR-скрининг, на нём всё стандартно.

На техсобесе: 

Задачи из LeetCode — примерно все то же самое, уровень Easy. Немного поговорили про Event Loop, решили несколько задачек.

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

Это больше проверка на насмотренность. Она проверяет реальный опыт. 

Дальше был третий этап — софтовый фит. 

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

Пообщался с руководителем. Все прошло хорошо. Этот оффер я в итоге и принял.

Почему я пошел в X5

Из 15 собеседований получил 5 офферов. Выбрал X5 (Пятёрочка).

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

Мне предложили то, что я хотел. Я доволен.

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

Что я понял про поиск работы

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

Но для меня чем меньше собеседований, тем лучше. 

В идеале вообще — пусть люди придут с оффером я скажу да, и всё. Вам результаты нужны? Пожалуйста. Они будут. Дайте работать.

Но так не бывает. Поэтому готовишься, тренируешься, идешь на собеседования. Зато теперь у меня было 5 офферов. Оттренировался. 

Дисклеймер: статья написана для блога «Кухня известной IT-компании» на основе интервью с фронтенд-разработчиком Владиславом Фоминым.

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

Поэтому мы решили следить за ситуацией на рынке IT в 2024-2025 гг.

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

Если вам понравилась эта история, вы можете прочитать и другие истории на телеграм-канале:

— Про тестировщика

— Про DevOps

— Про бизнес-аналитика

Комментарии (5)


  1. positroid
    18.11.2025 13:41

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

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


    1. AdrianoVisoccini
      18.11.2025 13:41

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

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

      вайб-наминг


      1. seventos
        18.11.2025 13:41

        Все правильно. Этот совет по всему интернету, вот нейронка его и использует. А эйчары и не понимают, что сами это сотворили)


    1. attachet
      18.11.2025 13:41

      да эти цифры улучшения никто не может не то что проверить, но и посчитать. Я честно пытался посчитать свою эффективность, и... НЕ СМОГ. Например, мы провели инвентаризацию. Нашли кучу недостач, найденные потеряшки стоимость недостач не покрыли. Для бизнеса это убыток - расходы на инвентаризацию и списание недостач. И какую цифру улучшения писать? Улучшили что? Дисциплину работы со стоком. Но измерить это в относительных цифрах практически невозможно - если что-то не находится на стоке (ошибка стока), то редактируется заказ, статистику редактирования заказов не видно, причина редактирования не указывается, целенаправленно до инвентаризации никто ее не собирал. Документы корректирования стока не отражают реальных показателей и не коррелируют с объемом движений, так как вносились нерегулярно и не в полном объеме вручную. Я все две недели до увольнения ломал башку, как мне превратить в относительные цифры все изменения технологии и вывести коэфициент улучшения. Не придумал. Аналогично и про остальные изменения. Могу только дать количество документов, человеко-часов, SKU в абсолютных цифрах, но сравнительных данных нет - никто их просто не считал до меня. И я не считал, я наводил порядок, работая по процессам. Но это никому ничего не скажет.


    1. alelam
      18.11.2025 13:41

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