Segfaulted But Survived – Telegram
Segfaulted But Survived
106 subscribers
2 photos
Невыдуманные истории с выдуманных собесов.
Download Telegram
Channel created
Channel photo updated
Вакансия: Golang Engineer (Senior)

Компания: EMCD

Предполагаемая вилка: во время разговора с HR от 9000 евро. Сначала согласились, в итоге оффер на ту же позицию сделали 6000-6500 USDT без согласования меньшей суммы со мной. Оплата только на внутренний кошелёк компании и только в USDT

Период собеседования: июнь 2025

Формат работы: удаленная работа

Этапы собеседований: HR -> Tech interview -> Fit interview -> Offer

Краткая справка о процессе интервью:
HR вышел на меня сам через сутки после отклика на сайте компании (судя по контексту, отклик не заметили). Созвонились, он задал базовые вопросы про локацию, зарплату, опыт, рассказал про компанию. Обещал, что весь процесс займёт чуть больше недели до презентации оффера, если с моей стороны будет активность. В итоге прошло около 3,5 недель с первого звонка до презентации оффера.

Tech interview с tech lead'ом всей компании. Вопросов много, и они глубокие. Низкоуровневые темы, го, бд, очереди и кэши, системный дизайн на словах. Интервью длилось больше 2 часов.

Fit interview с руководителем команды. В основном просто пообщались, что кому важно. Обменялись с ним контактами, и он мне почти сразу сказал, что у меня будет оффер.

В итоге с этого момента оффер ждала 1,5 недели. В прошлый понедельник со мной созвонился HR, презентовал оффер (на 40+% ниже, чем изначально договаривались), в приказном порядке сказал подписать и отправить его до середины этого же дня. От меня был отказ, хотя руководитель команды очень понравился.
🦄6🤣5
Вакансия: Golang Engineer (Mid+)

Компания: Plata Card (бывшая команда Tinkoff в основном)

Предполагаемая вилка: после технического назвали вилку 6000-6300 euro

Период собеседования: июнь 2025

Формат работы: удаленная работа или гибрид. В Испании в случае, если ходишь 2 раза в офис, платят соцстрах и оплачивают хестора)

Этапы собеседований: HR -> Tech interview -> System Design -> Final interview -> Offer

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

HR-этап: стандартные вопросы про опыт, критерии для поиска.

Tech:
- Live coding базовой задачи на го (вернуть из слайса только те числа, которые там встречаются дважды). Вопросы по теме: как устроены мапы; как хэшируется всё в мапах; какие есть подводные при работе с ними; как работают слайсы; передача/возврат структур в функции; выделение области памяти на стеке и в куче для переменной и тп.
- Live coding задачи на потоки (найти ошибку и поправить). Вопросы по теме: как работают каналы; как работает defer (тут мы поспорили, и собеседующий оказался не прав, но потом в фидбеке это не упоминал 🌚); когда бывают дедлоки и как их избежать; как решить блокировку (в том числе select).
- Live coding задачи на SQL (на INNER JOIN). Вопросы по теме: индексы; блокировки; уровни изоляции; партицирование и шардирование.
- Теория по кафке и кролику (базовая).

Вопросы в этом блоке довольно глубокие, нужно хорошо знать, что происходит под капотом. Интервью длилось примерно 2 часа, успели не всё.

System design: нужно было спроектировать сервис, который будет получать от других сервисов компании фотографию человека, а потом делать запрос в black box, которая говорит, находится ли человек в санкционном списке. Моё решение не понравилось, потому что оно было плохо масштабируемым, хотя и выполняло все функциональные и нефункциональные требования.

На финальное интервью не позвали, но случайно прислали мне приглашение для другого человека на этот этап, так что я знаю, кого хотели взять вместо меня 🌚
8🌚2
Приветы!

Посты будут выходить 1-2 раза в неделю. В основном публиковать буду истории с собесов, но также планирую запустить несколько рубрик, посвящённых обучению на гошника (для разных уровней), разбор пет-проекта (покрывает основные темы для миддлов и миддлов+), ну и рассказы о необычных решениях на проде, которые есть на текущей работе 🌚

ПС. Ещё в планах сделать сравнение найма в 2022-м году и 2025-м году на джуна, но не знаю, насколько это интересно будет, так что посмотрим.
🥰6👍3🌚2🔥1
Segfaulted But Survived pinned «Приветы! Посты будут выходить 1-2 раза в неделю. В основном публиковать буду истории с собесов, но также планирую запустить несколько рубрик, посвящённых обучению на гошника (для разных уровней), разбор пет-проекта (покрывает основные темы для миддлов и миддлов+)…»
По аналогии с постами на других каналах, напишу свой светофор компаний. Узнаете немножко про мои принципы и про то, на какие собесы я буду ходить с бОльшим удовольствием 🌚 (автор зависим от этого emoji).

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

Чёрный светофор (пойду, только если буду на грани жизни и смерти или мои близкие будут в такой ситуации, а заработать деньги по-другому не получится никак):
- Meta
- Amazon
- Google
- Любые другие компании, которые так же отвратительно относятся к сотрудникам или пользователям
- Оборонка любой страны
- Gaming, iGaming
- Российские компании (я живу в ЕС, мне нельзя, но и без этого условный VK был бы в этом списке)
- Все компании, которые строят прибыль на обработке данных пользователей (e.g., AdTech)

Красный светофор (не привлекают, но пойду, если не будет другой работы интересной или если выполняются условия чёрного светофора):
- Apple
- Около госушные проекты, которые не связаны напрямую с оборонкой и репрессиями
- Арбитраж
- Финансовые организации, которые помогают управлять активами
- Трейдинг

Жёлтый светофор (могу работать, но без удовольствия или если выполняются условия предыдущих светофоров):
- Проектная работа на время кампаний политических лидеров, которые мне нравятся
- Кофейни, кафе и прочий общепит
- AI-компании

Зелёный светофор (хочу попасть):
- Крипта (игроки типа Lido (уже был опыт там), P2P, Zircuit, Zerion, Nethermind, etc.)
- Финтех (e.g., Plata Card)
- TON
- Telegram
- Нормальный EdTech
🌚72😁2
"О наболевшем", или "как меня заебали интеграционные тесты". Часть 1

Краткая справка, мы же тут собрались не только для моего нытья: суть интеграционных тестов в том, чтобы проверить код в условиях, максимально приближенных к реальности. Например, если в тесте нужно сделать HTTP-запрос к сервису, то мы не просто мокаем интерфейс, а реально делаем запрос (с учётом, что этот сервис должен быть не продовым, а скорее всего поднят в Docker'е). Это позволяет проверять не только саму логику (для которой обычно достаточно unit-тестов) и вычисления (см. пункт про unit-тесты), но и поведение системы из разных компонентов.
"О наболевшем", или "как меня заебали интеграционные тесты". Часть 2

Шаги:
1. Создаём структуру builder, в которой будут поле t с типом *testing.T и все нужные нам сущности типа *[]имяСущности (представим, что в нашем случае это сущность пользователя и сущность платежа);
2. В качестве метода builder'а делаем основную функцию Build, которая проходится по всем сущностям и записывает их в фейковую базу;
3. Пишем teststubs — инициализаторы сервисов, которые будут использоваться в тестах. Имплементация сервисов при этом реальная, но им даётся фейковая бд;
4. Создаём структуры для сущностей, нужных для теста (см. пункт 1). Также пишем методы builder'а, которые добавляют сущность в слайс этих сущностей внутри builder'а;
5. Создаём методы этих сущностей, которые заполняют фейковую бд нужными полями (пример на скрине);
6. В самом тесте инициализируется тестовая бд, а потом вызываются методы создания сущностей(e.g., withUser, withPayment), на которых уже вызываются методы заполнения полей этих сущностей (e.g., withName, withCardType). Все эти withName — это так называемые builder pattern'ы;
7. Не забываем defer на закрытие базы;
8. С помощью teststub'ов инициализируем нужные сервисы;
9. Инициализируем handler;
10. Создаём ожидаемый ответ;
11. Вызываем метод, который проверяем;
12. Сравниваем через assert.

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

Когда у вас нет ничего для этого, кроме кусочка пункта номер 3, написание интеграционных тестов превращается в ад, а также непомерно появляется желание сжечь тестировщиков за то, что они спихивают эту задачу на бедных и несчастных разработчиков 🫠
🌚5👍1🫡1
Поиск работы в 2к25
😁5🌚3😢1