Разбор реального собеседования | Java Middle | Микросервисы | Базы данных | Spring | Docker Jetbulb
ฝัง
- เผยแพร่เมื่อ 26 มิ.ย. 2024
- Техническое собеседование на позицию Middle Java Developer.
Иногда приходится проводить или проходить собеседование без каких-либо конкретных требований к кандидату и сведений о проекте. В таком случае выдвигается общий список требований, без учета специфики проекта или команды. Одними из таких требования являются технологии которые необходимо знать: Java, Spring, PostgreSQL, Docker, Gradle.
Такой подход вовсе не означает, что компания плохая, подозрительная или же не знает, что делать с потенциальным кандидатом. Компания просто хочет найти потенциального сотрудника и усадить его за проект, что будет актуален в момент onboarding.
Вот и у нас точна такая ситуация. Компания ищет сотрудника уровнем Middle Java Developer. Нам предстоит задать вопросы, получить на них ответы и разобраться какой шеврон можно присудить кандидату.
Погнали!
Программа
00:00 Описание компании и позиции
02:08 Нововведения последних версий Java
05:50 Java Memory Model, Heap, Stack, Object
08:00 Class Object
14:20 Коллекции, Collections Framework, Fail-fast, Concurrency
18:10 Многопоточность, Happened-before, коллекции, синхронизация
22:12 Spring Boot, стартеры, Spring BOM, валидация данных, Spring Web
30:38 Микросервисы, Docker, Monitoring, Observability
39:40 Выводы
Получи реальный опыт решения коммерческих задач в Agile команде
до 6 человек iprody.com/
Запись на обучение и собеседование:
iprody.com/interview
t.me/iPrody_Online
Мы в социальных сетях:
t.me/jetbulb
/ jetbulb - บันเทิง
Отличный формат! Очень ёмко и без воды. Спасибо!
Крутейший контент! Все по делу и интересно смотреть)
Классные объяснения!Спасибо!
Спасибо,хочется больше материала для мидлов,как и куда )
Как всегда огонь! Продолжай в том же духе)))
Спасибо, хоть понятно мало новичку, но ваши видео невероятно полезны
ничего не понял, но очень интересно?)
Ох супер, прямо перед интервью посмотрел видос и половина этих вопросов была
О, яке круте відео! Можно ще таких побільше
Топ контент, действительно алмаз среди бисера скамеров аля, как войти в айти за 2 секунды.
Сегодня смотрел что нового в 21. Улучшили свитч, добавили виртуальные потоки. Ещё что-то по мелочам
У нас на работе самая последняя java, вот только пишем мы не на спринг
Спасибо
Про нововведения: стоит сказать про виртуальные потоки и pattern matching в свитче. Думаю, достаточно
thank you!
Собеседование на мидла, выглядит как мое, когда меня на Джуна брали 😀
благодаря Escape Analysis и скаляризации из Java 6, объекты, которые являются исключительно локальными и не возвращаются за пределы выполняемого метода, сохраняются в стеке
Скаляризация это оптимизация JIT-компилятора, которая позволяет в принципе не создавать объект при соблюдении определенных условий. А раз объект (как единое целое) не создается, то и хранить его не надо ни в стеке, ни в куче. Таким образом это работает только при соблюдении определенных условий и только при JIT-компиляции, которая запускается не для каждого метода.
Максим, спасибо большое. Интревью на мидла меньше всего в интернете: на джуна дофига, на синьера тоже есть а мидл ну извините))
👍👍👍👍👍👍
видос имба
Вроде бы не сложное собеседование, а где искать такие вакансии?
Максим не думали сделать видео прохождения реального собеседования вами в какой то англояз компании?
Я думаю будет полезно многим в текущих реалиях.
Речь идет о живой записи? Если да, то это скорее всего невозможно из-за ограничений GDPR. Разве что, снимать только себя и свой голос.
@@Jetbulb Так я це і мав на увазі, а що навіть голос інтервювера не можна буде записати?(Якщо він дасть дозвіл) Був би дуже корисний контент.
Как то однобоко выглядят собесы. Расскажи то, что можно загуглить за 5-10 сек. Имхо, не менее важной дисциплиной является "Решать нерешаемое" и посмотреть за алгоритмом мышления человека.
- к вам пришли с back 2 back интеграции с 401 ошибкой. Ваши действия.
- у вас есть X джоб, которые ранаются N раз каждый час, все бегают на одной бд. Джобы падают в рандомных местах. Ваши действия.
- у вас в бд появилось 3 млн записей апдейта для сущностей, которых у вас нет. Ваши действия.
- у вас лагает бд. Ваши действия.
- вы столкнулись с проблемой, на которую не можете найти готового решения, ваши дейтсвия.
На всё один ответ - гугулить
Первый!
спасибо большое за видео, как всегда лаконично и подробно. можно ли какой-то познавательный видос по вебсокетам(спринговым и не спринговым) и grpc? интересно было бы узнать, с какими технологияим лучше работать в случае с вебсокетами
Спасибо за идею и то, что смотришь нас. Обязательно рассмотрим и что-то придумаем.
отдельный лайк за картинку на заднем плане
на каком сайте такие обявления искать?
Только и'теребл :) ударение на первый слог. Так же как в нулэбл например.
COPY и ADD в Dockerfile отличаются ещё и тем, что ADD распаковывает архивы, то есть не просто копирует.
У email аннотации по дефолту регулярка ".*", то есть ни на какой имейл паттерн она не проверяет, а лишь на отсутстыие нала
странно что в вопросе о JMM ни разу не спросили про связь happens before и байткод
Привет, Макс. Реально ли устроится куда-то зарубеж без дрочева на алгоритмы, а собеседоваться на то, что реально используется в проекте?
Привет! Конечно реально. Я тому живое подтверждение. Собеседование в компанию при релокации, именно таким и было. Вопросы были по сути проекта
спасибо за видео. Есть вопрос, а зачем вообще нужен класс object? зачем нам нужен дефолтный потомок у всех классов? какая проблема была что решили его создать?
Абстракция
Ты немного затронул реактивщину. Как считаешь, есть ли смысл начинать изучать её, если в джава 21 проект лум по сути ставит целью отказаться от реактивного программирования с помощью легковесных вирт. потоков?
Пока Virtual Thread не отполировали, я бы не списывал реактивщину.
Однако, есть у меня соображения что Project Loom все-таки может ее нагнуть.
Но как и любой технарь скажу, что надо все смотреть в сравнении. Очень рекомендую почитать приложенную статья. Там четко показывается, что Project Loom не панацея и реактивщине есть место. Но также, что всему есть свое место и применение.
dzone.com/articles/demystifying-virtual-thread-performance-unveiling
Макс, что думаешь на счёт faang-like подхода к собесам, когда есть тех скрин + панелька (алго + сис диз)? Последнее время прихожу к выводу, что такой подход более прагматичный, да и мир не крутится одной Java, можно и с чем-то другим поработать
Это классный подход, когда компания действительно ведет серьезную разработку продуктов, которые обслуживают в буквальном смысле слова весь мир. Например, аэронавтика, космонавтика, медицина, энергия, навигация и так далее. Поскольку решение таких задач ставят перед разработчиков требования выходящие за пределы кода. Тогда продукты будут качественными и главное безопасными.
В остальных случаях, это избыточность, бахвальство и пустая трата средств компании на поиски крутых ребят для разработки одностраничников и простых CRUD
Крутой ответ, спасибо. Да, и правда, зависит от компании и её нужд
Где то читал про менеджера в FAANG, который говорил что они специально придумывают такие сложные интервью, чтобы сотрудники были привязаны к их конторе. FAANG не предоставляют лучших зарплатных/рабочих условий, так что давят "элитарностью" и привязанностью сотрудников через сложный процесс приема
@@user-gl1kd2ds4g Наверное ещё играет роль то что в FAANG шанс попасть на интересный/сложный проект значительно выше чем в большинстве других контор. Всё-таки не все программисты хотят всю жизнь катать спринговые бины между фронтендом и базой данных хоть и за бОльшие деньги. К тому же строчка в резюме что ты успешно проработал в FAANG продолжительное время очень благотворно влияет при смене работодателя.
Хоть бы раз такие легкие вопросы задали на собесе, чаще всё начинается какой-нибудь Кафкой, базовую базу вообще не спрашивают на мидла
Hello Max,
Can you give a link where you explore positions your blog ???
Hi, for instance
www.jobs.cz/
www.glassdoor.com/
Мне кажется, сейчас любой ката-самозванец легко порвет подобный собес, расскажет про сборщик мусора столько, сколько не каждый сеньор знает. Такие вопросы на зп в 4,5 кБакса. Видимо собес был старый.
Как все это запомнить и держать в голове есть совет? Вроде несколько раз прочитал, разобрался, прошло время и уже не можешь ответить на этот вопрос. Несколько раз начинал учить с 0 потому что понимаю что знания базы очень - не очень.
Надо применять. Просто читать и\или учить не имеет смысла. Практика лучшая память, поскольку она заставляет нас претерпевать боль и думать, как ее избегать
33:24 Уточнение: имеется в виду не команды docker, переданные контейнеру, а команды в Dockerfile
Макс, классные и стильные очёзы ;D где такие приобрести?
Приезжай в Прагу, тут не проблема найти)
Это собеседование больше на мидл-, мидл или мидл+?
Скорее что-то между начинающим мидлом и устоявшимся.
Но это все субъективно и очень зависит от компании, проекта и собеседущего
Это реально вопросы на позицию мидла? Я в основной массе могу на это ответить. Но как попасть на собеседование если нет опыта?!
Нарисовать
а надо рассказывать про инкубатор фичи, когда спрашивают про «что нового в java?», то есть structured concurrency его вроде пока как бы нет в java? ну то есть оно может откатиться в теории и код перестанет компилиться.. и вообще немного не понимаю насколько хороший тон использовать такие фичи в проекте. объясните плиз кто понимает)
На собеседовании можно говорить и рассказывать все что хочется в рамках контекста вопроса. Отметить заинтересованность и познания в «инкубаторе», лишним не будет.
В продакшене надо использовать только stable released feature
StructuredTaskScope - конечно интересная фича, но она находится в preview даже в недавно вышедшей Java 22. То, что человек нахватался базвородов новых фич не говорит о его способностях к саморазвитию почти ничего. Довольно часто такие люди не знают некоторые базовые вещи. Например о контракте метода equals()
Послушал и понял, что занимая должность синьора я еле еле джуниор.
Если на любом интервью кроме джуна спрашивают методы класса Object, можно ничего хорошего от интервью не ждать, с торой стороны какой-то задрот теории, неоднократно убеждался в этом. Собеседуют на сеньорскую позицию и спрашивают такие вопросы...
это же вопросы для джуна нет?)
почему такие простые вопросы, в реальном собесе чуть не то ответил уже по ведущему собес видно, что он тебя выше джуна не оценивает и в дальнейшем идёт отказ( щас на миддла спрашивают и чуть ли как кубернетес на домашнем компе развернуть и как спринг под капотом работает с этими фабриками, которые реально не думаю что где то часто используются. И нельзя просто сказать что это прокси ну потребуется и запилим логику какую надо.
Ну как поднять кубер локально - довольно же простой вопрос и для джуна. Если есть докер - делается одним кликом)
А насчет внутреннего устройства спринга - аналогично про устройство памяти в джаве. Знать как работает инструмент изнутри. Вот только знания про устройство памяти в джаве вряд ли когда либо будут полезны, а сделать парочку своих аннотаций в спринге иногда может потребоваться. Чтобы разбираться в этом достаточно изучить доклад "Спринг-потрошитель"
Проблема почему этот несмотря на свою годность, имеет небольшие охватывался просмотрам. Макс рассказывает интересно сложные темы, которые непонятны для массы которое на ютьюбе(а это зачастую даже не junior lvl), а те кто сталкивается с этими задачами вряд ли ищут ответы на ютьюбе(middle = stackoverflow) возможно этот канал будет первопроходцев ру сегменте, который проложит дорогу действительно качественному контенту, а не то что сейчас наблюдается, тысячное видео какой язык выбрать, как за час стать тем,
В чём преимущество использования var? Просто экономить две секунды на запись интерфейса/класса? Но при этом когда читаешь код нужно смотреть что там тебе метод вернёт, не понимаю в чём профит
Если для понимания кода нужно иметь запись Map map = fillMap(clientIds); то код написан не очень, можно переименовать метод, который возвращает значение, можно переименовать переменную. var itemsByClient = fillItemsMap(clientIds);
В большинстве случаев var экономит время и не добавляет дополнительной когитивной нагрузки
херня это всё, вкусовщина, вместо того чтобы сразу увидеть тип ты будешь прыгать по методам, где не сразу будет очевидно, что возвращается, всё нужно использовать с умом@@user-xz7ps7hn1g
если у тебя есть класс с именем в 100 символов, то проще написать var при объявлении переменной. IDEA в реалтайме тебе рядом заботливо напишет, что за тип у этого var.
@@user-xz7ps7hn1g Вы привели хороший пример того как не надо делать. Имена fillMap и fillItemsMap подразумевают что надо заполнить имеющийся объект типа Map. Таким образом вызов fillMap(clientIds) читается как заполнить мапу clientIds, но при этом совершенно неочевидно чем заполнить и что может вернуться в качестве результата, т.е. var тут только затрудняет чтение и так непонятного кода.
А вот в таком контексте: var map = createMap(clientIds) или var map = createItemsMap(clientIds), использование var уже уместно т.к. не затрудняет чтение.
Если из контекста неясно какого типа результат, то использовать var не стоит. Например, хороший пример использования: var arr = new ArrayList() или var userList = loadUserList() потому что здесь из контекста ясно c какими типами имеем дело (хотя во втором случае есть шанс ошибиться).
Добрый день, можно пройти собеседование на эту вакансию? )
Привет! Можно))
Приезжай в 🇪🇺 с правом на работу и врывайся 😎
@@Jetbulb уже в eu )
@@maksgalik8376 Все ближе и ближе, от общего к деталям))
Тогда, тебе необходимо перебраться в Прагу. Как с этим обстоят дела?))
@@Jetbulb @Jetbulb был в праге 25 декабря и город показался дорогим, возможно потому что был как турист, особых проблем нету, нужно просто понимать что за проект )
@@maksgalik8376
Город дорогой только в недвижимости. В остальном, Восточная Европа. Еда, вещи и досуг недорогие)
Объект может и не аллоцироваться в хип при определенных условиях, см. scalar replacement оптимизацию, можно почитать в блоге у Шипелева. Так что до ответа «все, что связано с объектом хранится в хипе» душный интервьюер может и докапаться
И это и есть мидл? Походу мне сразу на мидла надо 😂😂
открыл пересмотреть на компе, только сейчас заметил картинку на заднем плане с кораблём😁👍
есть ощущение, что половина мидлов и часть синьоров в России такие собесы бы не прошли. До сих пор есть много разрабов, которые так и не умеют в микросервисы и докер. Реально сам видел в чатах как люди с 5-8 летним опытом жалуются, что если нет опыта в м/с и CI хрюши скипают их.
Потому что Java это не только микросервисы. И даже если вы работаете над продуктом с микросервисной архитектурой, далеко не факт что вы будете напрямую работать с архитектурой.
@@zakharka3938 1) понятно, что проекты разные, речь о том, что сейчас тренд на микросервисы, при этом на рыночке не умеющих в м/с БОЛЬШЕ, чем умеющих, поэтому при прочих равных скилах выбор делается в пользу умеющих 2) мы говорим о синьорских и лидовских грейдах, поэтому предполагается, что если она работали на проектах с м/с, то были в курсе что и как там работает 🙂
@@zakharka3938думаю за 5-8 лет не прочитать ни одной книжечки по мс архитектуре это не профпригодно
не верю, что сеньор с 5-8 летним опытом не сможет осилить базу по микрам и докеру. тут же вопрос про самообучаемость скорее. если не может, то нафиг он такой нужен. поэтому, все честно, мне кажется.
лучше не уметь в микросервисы, но уметь в модули, чем наоборот
Говорите помедленнее
Много неточностей в деталях и часто ведущий думает одно, но говорит другое....
var без причины - признак дурачины
Картинка на заднем фоне отличная, респект!!!