Артем | Java Интервью | Подготовка в Биг-Тех
34 subscribers
10 photos
7 links
Подготовка к собеседованиям, материалы, истории и кейсы с интервью опытных разработчиков, java core, spring, софт-скиллы
Download Telegram
👨‍💻Привет! Меня зовут Артем. Я Java-разработчик с 2017 года.

Сейчас на синьор позиции в крупном банке. Веду интервью и онбординги.

Здесь публикую:

- Авторские посты 🧠

- Материалы для подготовки к интервью 👀

- Реальные кейсы и разборы вопросов с собеседований 🎯

Материалы для подготовки здесь (список все время наполняется):
https://t.me/java_interview_tips/19

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

#Java #собеседования #интервью #работа
🤗1
Материалы для подготовки к интервью на Java Dev

Об авторе: https://t.me/java_interview_tips/17

📌 Базовая теория, мой список из 21 простого вопроса, которые чаще всего попадаются:
https://github.com/purple-drunk/java-junior-interview-prep

📌 Код-ревью на собеседовании (супер-актуально для Middle и выше). Как его делать правильно? Серия постов:
https://t.me/java_interview_tips/31

📌 Системный дизайн (для Senior и выше):
-Шпаргалка (в разработке)
-Вся теория в одном месте:
https://github.com/donnemartin/system-design-primer
-Как проходит (видео-пример):
https://youtu.be/ioEHnd_fpFA?si=dK1CDl5wnjmFcG-y

📌 Опыт (в разработке)
- Maintainability (серия постов)
https://t.me/java_interview_tips/38

📌 Алгоритмы
- шпаргалка:
https://t.me/java_interview_tips/44

📌 Реляционные БД (этап в разработке)
- тренажер по SQL
https://t.me/java_interview_tips/21

📌 Что еще почитать?

- Как устроен процесс интервью в IT
https://t.me/java_interview_tips/22

- Куда идти - в бигтех или маленькую компанию?
https://t.me/java_interview_tips/23

#Java #собеседования #интервью #работа #вопросы_на_интервью
Почему стоит идти работать в крупную компанию? 🏦

5 причин за:
1) Ты будешь работать с опытными коллегами, у которых есть чему поучиться
2) Ты узнаешь как строить высоконагруженные системы, мониторинг и алертинг для них, как это работает в реальной жизни
3) Ты увидишь как устроены процессы разработки у профессионалов, получишь качественный фидбек
4) Ты сможешь поучаствовать в создании сервисов для миллионов пользователей
5) Ты получишь неограниченный потенциал роста, который зависит только от амбиций

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

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

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

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

Если у тебя есть возможность пойти работать в крупную компанию - это лучший шанс из возможных. 👍

#Java #собеседования #интервью #работа #поиск_работы #карьера #стажировка
👍2
Джун или миддл: ну тут будет ошибка

Синьор: надо пробовать запустить и подебажить, чота падазрительна

Авторы JDK: т.к. это предпоследний элемент массива - тут корнер кейс, и в этом случае код отработает :D

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

#Java #программирование
🔥2
Итак. Астрологи объявили неделю код-ревью. Напишу серию небольших постов о ревью, как его проводить на интервью и разбор реальной задачки.

Поехали. 🚀

Часть 1. Как проводить код-ревью на собеседовании? Чек-лист 📋

Подготовительные пункты:

- Ознакомиться с постановкой задачи, если она есть.

- Просмотреть структуру классов, их названия и контракты.

- Понять, какую задачу должен решать этот код.

Тайминги этого этапа 3-5 минут.

Приступаем к самому ревью:

- Ревью кода проводим построчно, от контроллеров к сервисам.

- По ходу ревью комментируем код — озвучиваем интервьюеру потенциальные проблемы с кодом и наш ход мысли.

- Когда находим проблему — править код не нужно, достаточно подсветить её и предложить решение.

Обычно достаточно подсветить 3–4 минорные проблемы и перейти к поиску мажорной.

Тайминги этого этапа тоже 3-5 минут.

Мажорная проблема всегда подразумевает детальную беседу — нужно раскрыть причины, предложить рефакторинг (2–3 способа).

Это 10-15 минут.

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

- Важно. Критиковать авторов и код не нужно, важнее предложить хороший фикс.

- Основные проблемы обычно лежат на стыке приложения и БД или сторонних интеграций.

#Java #ревью #собеседования
🔥2
Часть 4. Возможное Решение 🧠

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

Вопрос вызова транзакционного метода банальный, это отработает не так как ожидается, поскольку Spring использует прокси для реализации транзакций, можно предложить изменить структуру вызовов или self-injection для решения проблемы атомарного создания всего батча юзеров.

Но лучше пойти дальше и посмотреть на проблему производительности и надежности. На этом этапе можно дособрать требования по задаче. Есть ли потребность в батчевой обработке юзеров?

Если потребность есть - нужно копать в сторону батчевой вставки и конфигурировать hibernate. Если нагрузка очень большая - то подумать о том чтобы клеить всё в один INSERT (с отказом от hibernate здесь).

Если же нагрузка ожидается небольшая и равномерная - то в идеале нужно разделить обработку пользователей так, чтобы атомарно происходило сохранение юзера и обновление ссылки на регион (особенно если там под капотом rest интеграция). Здесь можно подумать об асинхронном способе обновления линка. Например через брокер сообщений и outbox.

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

Обычно такой ответ уже удовлетворителен и на этом секция заканчивается.

С вами был Артем. Спасибо за внимание.

#Java #ревью #собеседование
🔥2