Я короче, понял, посмотрел почти весь ролик: это тот тип интервьюеров, которые задают вопросы, с которых сами слезли только что. На 90% таких вопросов нет смысла отвечать, потому что: 1. Они решаются в рабочем порядке. 2. Тебе нет смысла их запоминать, потому что можно опираться на фундаментальные вещи, с помощью которых можно эти вопросы решить 3. Эти фундаментальные вопросы были быстро оговорены в начале каждого из 3-х интервью в ролике (это наводит на некоторые мысли) Я встречал таких, не часто, когда ходил и хожу по собесам. Советую сразу скипать таких букварей. Будете работать за двоих и атмосфера в таких коллективах сильно ядовитая.
особенно поражают вопросы про виртуальные методы и диспетчеризацию. очень нужно каждый день в работе. и linkedHashMap тоже. за 4 года опыта в работе лично у меня применялось всего несколько коллекций, и linkedHashMap в них явно не входит. да и вопросы про spring security тоже удивили. на работающих проектах это насраивается один раз и забывается. если человек нужен на проект с нуля - то ок, такие вопросы уместны, но если проект уже существует, то нафига лезть в такие вопросы совсем не понятно
Жиза учу уже как 5 месяц ), бывает что вроде приходит вдохновение и хочется прям учить больше и больше а бывает что хочется всё забросить ),перепады настроение так скажем
Та за 3-5 лет многие не используют ни разу не linkedHashMap не просто linkedList - не показатель, но зато на собиседовании все любят грузить. Вот ни разу небыло у меня неоходимости это использовать. Каждый раз для собеса повторять миллион инфы которая ни разу не юзалась в работе.
Очень интересно: куда по-твоему в реальной жизни можно применить знание про диспетчеризацию методов? (спойлер: никуда - мне за 13 лет ни разу не пригодилось) Если только проверить знание модели иерархии в Java, но на этот вопрос ответ никому, по большому счёту, не нужен, если только инженера не берут на написание специфических инфраструктурных вещей.
Как по мне - можно иногда спрашивать специфические вещи, если отсутствие ответа на него не влияет на решение. Потому что иногда хочется услышать честный ответ " не знаю". Сам наблюдал людей которые не могут честно сказать "не знаю". Видно что человек первый раз слышит но начинает нести ересь из головы, что не создает положительного впечатления. Нет ничего стыдного ответить "не знаю, не сталкивался". Интервью это не экзамен на котором требуется ответить на все вопросы.
@@MrGranaldo это кардинально противоположный (и неправильный) подход к тому, что практикуется во всем мире: в нормальной ситуации не должно быть вопросов, не влияющих на решение, а «вопросы со звёздочкой» обычно задаются, чтобы посмотреть, как кандидат будет подходить к решению задачи, как он мыслит и что предпринимает для её решения: в таком случае ответ «не знаю» - худшее, что может быть, а правильным действием должна быть попытка найти ответ с помощью логики и имеющихся знаний.
@@vks43523 лолчто? 😂 Это ж нужно еще постараться, что вызывался «не тот» метод… Да и потом, если существует такая ситуация, то проблема куда хуже, чем непонимание диспетчеризации и называется: незнание принципов хорошего OOD.
Спасибо большое за ваши видео! Они мне оч помогают в подготовке: трудно определить список вопросов т.к. разнообразие тем оч пугает, а после просмотра ваших складывается четкое видение, что нужно подучить вот это, это и это.
Если нам приходит несколько параметров в урле, то хорошо если все они относятся к какой-то дто-шке, но если нет, то достаточно написать @RequestParam Map params или достать из HttpServletRequest
"В чём проблема synchronized?" в такой формлировке, без какого-то дополнительного контекста - звучит максимально ужасно, и единственной адекватной реакцией на это может быть "А что вы имеете ввиду?". Я вот сходу подумал о невозможности прервать заблокированный поток, о возможности дедлока, о долгом пробуждении потока после ожидания блокировки. Но не о том, что и так очевидно - что два потока не могут одновременно выполнять synchronized блок.
Хорошо сказано. Вообще правильная мысль что «надо уточнять и не спешить давать правильный ответ на широкие вопросы. Затем двигаться от общего в частному».
Хорошо когда есть твое мнение и неправильное. Но вот в копилку мнений, если принимаешь, конечно. Та же самая аутентификация обычно делается раз и потом уже большая часть времени дорабатывается бизнес-логика. Если что-то надо доработать в аутентификации - лезешь в код и понимаешь (не rocket science). Поэтому не удивительно, что человек, который не каждый день имплементит аутентификацию не ответил на вопрос. Можешь ответить - что вы на проекте такого ежедневно делаете с использованием знаний SpringSecurity? Еще раз - ежедневно. Разве, что разрабатываете свой аналог или кастомизируете SpringSecurity. Теряюсь в догадках.
Как минимум, недостаточность логирования Spring Security или слабый контроль над нем, принуждает делать проксирование для внедрения этого контроля. Чтобы потом все правильно собрать и заставить работать спринг из кастомных классов, надо не так уже и мало знать о том, как Spring Secutiry. В противном случае, будет баг-фикс-продакшн-баг-фикс-продакшн. Когда ищешь человека на проект со знанием Spring Security, так он еще заявляет что знает Spring Security, то само собой разумеется будут вопросы и будет видно, знает ли он или просто говорит, что знает 😉
Прям очень офигенски в хронологию вписывается)) Когда уже все ролики по джунам уже пересмотрел и начал готовиться к уровню мидла и тут ровно по расписанию видос про мидлов))
multiplexing multiple requests over a single TCP connection (fixing the head-of-line blocking problem in HTTP 1.x Это HTTP 2.0. Так, для справки, что надо ждать ответ от первого запроса в рамках одного коннекшна.
Вот кстати из видео в видео слышу установку, что LinkedList основан на Deque. Это не так. В основе лежит структура данных связный двунаправленный список. Но LinkedList реализует 2 интерфейса - List и Queue (и Deque от Queue) и может быть использован и как очередь, и как список, и как двунаправленная очередь.
На самом деле, в полной мере и не требуется. Тут скорее как человек мыслит и что он может предложить. А если нечего предложить, то чтобы он сделал чтобы найти предложение.
1. Работаю с java уже несколько лет, но тоже уровень знаний на поверхности, судя по вопросам и ответам из этого видео. Да, похоже я кодер, но не инженер. И углубиться в знания мне помогает именно обучение перед собесами :D но в работе, это совсем не находит применения, от слова совсем. На интервью спрашиваю аля 100-140% от тем java/sql/devops/оркестровки/профилирование/визуализация, но по факту на работе дадут 5-10% от того что спросили на собесе и заваливают задачами, что головы не видно и ты с этим возишься . Может конечно мне не повезло, но пока 4 компании в копилке
Спасибо за видео. Сейчас как раз готовлюсь к собеседованию на Java Middle, поэтому и попал сюда. По поводу вопросов: мне нравится, когда собеседование строится на реальных рабочих ситуациях, и только иногда всплывают "типовые" вопросы. Готовиться к таким собеседованиям легче: ведь тебе нужно просто вспомнить реальные задачи, с которыми ты сталкивался. На последнем собесе, который у меня был, экзаменатор вел себя именно так: мы по сути общались, обмениваясь опытом. Иногда он мне задавал какой-нибудь "типовой" вопрос, но только как подводку к следующей теме. Мне очень понравилось такое собеседование. В итоге меня не взяли, но приятные впечатления сохранились ))
Где как. Просто даже если используется ванильный синхронайзд, а не те же локи или низкоуровневые неблокирующие CAS алгоритмы (в атомиках), то этот синхронайзд используется эффективно, в реализациях, опять же неблокирующих алгоритмов. Например в CoWListe синхронизирована только запись, в отличии от синхронизированного листа - где синхронизированны все методы + итератор нуждается в ручной синхронизации.
А вообще, да, под катом используется и synchronized в том числе. Если говорить про примитивы синхронизации, то это - synchronized - atomic типы (используют native реализацию CAS) - Lock’и, аналог синхронайзд на стероидах, опираются на native реализацию блокировки (Unsafe.park()/unpark()). Позволяют, например, предварительно проверить захвачен ли кем нибудь ресурс и много чего еще. - volatile, который позволяет создавать видимость и консистентность изменений данных (устанавливает частичный порядок между событиями в разных потоках)
из оф документации: This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI). Вы сказали что IoC не сказал а раскрыл DI - можно тогда для джуна прояснить в чем тогда отличие ответа было ?
IoC включает в себя DI, кратко можно смотреть с этой стороны: инверсия контроля берёт на себя управление созданием объектов в вашем приложении с помощью инъекциии зависимостей.
Добрый день. Спасибо за видео Несколько ремарок: По поводу мапинга запросов на методы контроллера в spring - прекрасно можно мапить по наличию параметров запроса, а не только по методу и пути (конечно, если параметры будут конфликтовать, то замапить не получится, но это как и с путями, и да, я понял, что вопрос был не в этом). По поводу web-flux - это как раз веб-фреймворк, аналог web-mvc, асинхронные запросы - это как раз его прямое назначение. Spring-Boot - это не только и не столько про BOM, он привнёс гораздо больше, чем просто унификация версий зависимостей, тот же самый резолвинг параметров который с третьим кандидатом обсуждали - это именно бутовая фишка (и там много прикольных возможностей, особенностей есть, ну и граблей тоже, но скорее всего мало кто их поймает). Обсуждение war vs jar - тоже такой себе холивар. По поводу диспетчеризации методов в java - никогда с таким вопросом на собеседованиях не сталкивался, такую формулировку впервые услышал тут, скорее всего я бы начал рассуждать что-то про таблицы виртуальных методов, но непосредственно как оно реализовано я не знаю. Хотя лично мое мнение, это из разряда вопросов про то, как реализован GC - есть стандартные ответы, но правильный ,eltn зависит от реализации JVM, вот в Oracle Hotspot - и тут уже вставляем стандартные ответы (не забыть поправки на версию jvm)
Что еще заметил. К примеру, у меня 7 лет достаточно разнообращного опыта по разработке, начиная с C# стека, C++(MFC) , есть опыт разработки фронта, есть часть на java. В итоге набирается на 7 лет разнообразных проектов. На собесах спрашивают только по java и только то, что требуется в проектах принимающей стороны. Весь остальной опыт обнуляется и вообще не рассматривается, цена, естественно, тоже складывается только на основании java.
Он не то чтобы обнуляется, но что тебя может спросить Java-разработчик по C#? Опыт всегда учитывается и является положительным фактором, но собеседование проходит на другую позицию и потому иным вещам уделяют минимум. Проходил много собеседований, когда ребят спрашивают по тем языкам с которым они работали ранее. Это как повезёт и на кого наткнёшься ))
@@Roman-ej3xg за полгода на сеньера? По мне даже с учетом того, что человек прекрасно знает архитектуру и шаблоны построения систем, ему надо будет года два три потратить на изучение языка, спринга и других мелких фреймворков, средств, причем на практике. Это достаточно большой объём со своей спецификой. У меня сейчас у самого должность типа сеньер, но это филькина грамота, если смотреть по рынку. А рынок особо не боролся, текущий работодатель прислал контрооффер и все преимущества у нанимающих перестали иметь значения, в итоге остался там где и был.
Добрый день. Подскажите пожалуйста, где конкретно у Шилдта описан Dynamic method dispatch? Искал в главе 8, в интерфейсах, нашел только о множественном наследовании, стр.343, но кажется, это не совсем то.
Любопытно было наблюдать за пересказом трёх ТИ, это первое видео, которое посмотрел на канале, в целом, очень интересно, но как-то резола слух, что топит только за свои ответы, опыт 8 лет конечно это не мало, но не гарант 100% верного мышления и видения ситуации, по факту "век живи - век учись", а тут ощущение, что интервьер считает себя уже познавшем дзен и с 9-м даном - похоже, молодой возраст даёт о себе знать. Где-то на себя и со стороны посмотрел. Я проводил много ТИ, но инженеров по автоматизации тестирования, много проектов (15+ лет) поставил с нуля, работал с зоопарком стеком, и каждый раз обучался, учитывая пред. опыт, ошибки. Аналогично также ранее бывало задавая вопросы, порой хотел услышать какой-то свой "избранный" вариант ответа - за уши притянуть собеседника - недоразвитый кругозор, но со временем это проходит, если стараться рассмотреть варианты, применить, попробовать. Сейчас перешёл в разработку, заполняю пробелы в знаниях, т.к. кругозор за это время стал широкий и мыслишь уже более с т.з. архитектуры, а вот какие-то детали языка, фреймворков - проседания - ибо один проект на JS, другой на C#, третий на VBScript, 4-й на Java, Kotlin, и т.д. К слову про deploy приложухи - у нас этим команда devops занимается, раскатывает сервисы системы в контейнерах в OpenShift-е, и конфигурирование черз yaml-файлик делается на лету, да для изменений надо pod передёрнуть, чтобы новый поднялся с новыми - сервис потухнет на неск. сек и поднимется снова - юзаешь дальше. По факту, вы, Максим, также пытается, только свой текущий опыт прибить гвоздями к стене, потому что вы только до него дошли, но попробовали не всё, а остальное пробовать не хотите. Но в целом, ТИ-ер, вы хороший, подход нравится, потенциал есть, есть куда хуже, когда какой-то абстрактный список вопросов, а по опыту ни одного - хотя опыта там гора, но нет, зачем, просто банальная сухая теория - вот это реально таких интервьеров до кандидатов допускать нельзя - такие продолбают ценные кадры. Надо понять с какими задачами, проблемами сталкивался, как решал, почему так, какие были вариации...
Спасибо за такой развернутый ответ :) Хочется добавить, что опыт ничто в реактивно летящем мире и учусь каждый день со всеми на ровне. Учиться надо каждый день, я не исключение. Более того, никогда не ставил свои индивидуальные знания выше остальных, ведь мое кредо "Отличный инженер создает, великий копирует". Потому как бесконечно пытаюсь найти что-то новое у (не)знакомых людей и перенять это себе для дальнейшего переиспользования. Если вам показалось, что я не принимаю других вариантов ответов и ожидают ТОЛЬКО то, что нарисовал в своей голове - мне жаль, поскольку это не так. Стало быть видео не удалось и формат\тон подачи неправильно расставляет акценты. Будем работать над этим. Но, как я сказал: - "постоянно двигаюсь вперед". Так что ваш комментарий дал мне мысли "на подумать" 😀 Спасибо)
@@Jetbulb По части опыта и реактивно летящего мира - как обычно, правда где-то посередине, не стоит вдаваться в крайности - опыт позволяет человеку шире мыслить, быстрее находить решения, опираясь на него, даже в новых областях, т.с. чуйка работает, быстрее ловишь волну, откуда ветер дует. А на одной теории без практики не уедешь и забудешь. Сами про новичка сказали, что где теорию знает - хорошо, а как где-то опыта нет - затык - это оно самое :) Опыт как раз очень многое даёт, другое дело, если человек дальше не развивается, не познаёт новое - это отд. проблема. тут в тему: 1$ за фикс и 999$ за знание где надо пофиксить. А так ваш тренд к познанию импонирует, есть чему поучиться :) Выкладывайте ещё, мне вообще интересно, что спрашивают на ТИ, хочу походить сам, получить обратную связь по себе, понимать, что надо подтянуть )
@@VitMS1 Спасибо за ваш отзыв) Приятно пообщаться с понимающим человеком и слушать мысли похожие на свои собственные. Это кстати то, почему я топлю "Кодер vs. Инженер". Все-таки умение решать системные проблемы и быть "adhoc-решалой", не одно и тоже. Хотелось чтобы качество ПО инженерии стремилось вверх и все вот так думали, как вы))) Респект! З.Ы. Развиваться будем, но видео делать не прекратим. Не дождутся))
«Жберов» в 🇪🇺 хватает, так что все может быть. Но вот и меня смущает, что за 6 лет, человек не может описать элементарные шаблоны. Даже пугает эта тенденция. Все чаще и чаще такое вижу. Или это может от того, что HR таких ищут и таких находят 🫡
@@Jetbulb я всё чаще вижу мнения, что solid читать не надо. То есть мало того, что не читают, так еще и в массы это тащат. Про шаблоны то же самое. А их ведь навалом и на них всё построено. От низкоуровневых (GOF) до фаулера и архитектурных типа шин сообщений и т.д. Без них ни одной системы не построить.
Разные ребята приходят. Европа многонациональная. Чаще всего ребята из Чехии, Украины, РФ, если говорим про Прагу. Но и других национальностей валом, к примеру в последнее время много ребят из Турции.
Не совсем понял зачем тратить время на собесы, по итогам которого кандидаты не проходят из за переезда. Почему hr изначально не проработал это, сколько времени можно было бы сэкономить.
А как заменить offset на отступ по id, если у нас не просто пагинация, а пагинация + фильтр + ордер? Редко когда есть просто пагинация, обычно всё идет в комплекте.
Ну тут надо начинать с того, в какой последовательности операции выполняются. www.sisense.com/blog/sql-query-order-of-operations/ Из этого станет понятно, что выборка по ID и отказ от offset вовсе не влияет на получения данных, а просто форма работы с данными. Просто надо строить более изощреннее where-выражения. В простом изображении: select * from t1 where id > :idValue order by :nameField
@@Jetbulb пока возникает два вопроса. 1. Если к примеру я получу данные на первой странице, а потом захочу уйти сразу на пятую, то откуда мне взять idValue. 2. Если я сортирую по nameField, то порядок id меняется на случайный, можно ли на нем строить пагинацию, большой вопрос. Спасибо за ссылку, буду пытаться осознать)
@@inzagher 1. В таком случае, пагинация работает "туда-сюда" и мы лишаемся возможности прыгать между страницами. Это обусловлено тем, что в токен зашита информация и сам токен не поменяешь. Кстати классный вопрос ))) 2. Сортировка выполняется последней. То есть сперва будет учтено idValue и условие WHERE и только потом, все это отсортируется.
@@Jetbulb в пункте 2 получается, что мы сортируем только полученную страницу. А если кейс, к примеру, посмотреть вторую страницу самых высокооплачиваемых работников? Обычно требования к сортировке выглядят именно так.
Здравствуйте! Могли бы Вы сделать видео на тему здоровье программиста? Ведь в массе своей программисты очень много сидят, что влечет за собой проблемы со здоровьем (застойные явления, проблемы со зрением и т.д) Как Вы лично следите за здоровьем, сколько времени стараетесь сидеть за ноутбуком (или ПК), сколько времени делаете перерывы? Какие на Ваш взгляд будут рекомендации также по питанию, сну?
интересно откуда у вас такие вопросы? программисты ничем же не отличаются от любых других офисных работников и прочих сидячих тружеников которых сейчас половина населения наверное если не больше
Спасибо, интересно было посотреть, но в ходе просмотра возникло два вопроса: 1. По поводу решения ДТО как квери парам. Как в таком случае решать проблемы с 414? Разработчик через месяц-год, решит расширить ДТО и получит в итоге 414, разве такое подход архитектурно не кривой? 2. если использовать Ваш подход с id > - и будет случай когда будет нарушение сиквенса в записях, как вы сможете понять что такое произошло? Что данные не потеряны? Как раз пример со страницей, но айдишник скакнул например с 1000 до 10к, и порядок айди не соответствует таймстампу (нарушение сиквенса может быть к примеру если две мастер бд и много инсертов и в ту и в другую)
Привет! Спасибо за вопросы. 1. 414 - это что же надо сделать, чтобы такое произошло. Создавал много API, бывало много параметров, но чтобы уложиться в 414, не знаю. Даже спека пишет, что это очень редкий и специфический кейс httpwg.org/specs/rfc7231.html#rfc.section.6.5.12 2. ID - сама по себе не панацея. Это всего лишь набор данных на основании которых запрос формируется. А сам запрос уже направлен на отсечение проблем. Примеры можно посмотреть по ссылке phauer.com/2018/web-api-pagination-timestamp-id-continuation-token/
печально когда такие ботаны собеседуют и оценивают не способность понимания и адаптивности а как в институте зубров ждут. Нахрен кому этот спринг секьюрити заучивать, он на проекте настроился один раз и все.
Спасибо за контент, сейчас доучиваю Спринг и начинаю искать работу джуном) Видя, что чувак позиционирующий себя сеньором на мидл позицию не может ответить на вопросы, на которые могу ответить я, гасит мою неуверенность, готов ли я идти по собесам. Макс такой вопрос, купил себе Spring in Action. Стоит ли сначала полностью проработать книгу и идти собеситься на джуна или можно уже сейчас начать искать изучив на поверхности Spring Boot и его стартеры, а параллельно уже прорабатывать книгу и копаться во внутренностях спринга. Просто сейчас времена для джунов не особо хорошие(в моем городе всего 2 вакансии на открытом рынке), а конкуренция большая. И не хочется потерять шанс из за того, что где то недотянул
Стартеры бута, действительно, можно изучить поверхностно (знать их функциональное назначение), а вот с "кондишенами" и иже с ними лучше попрактиковаться (например, написать свой стартер простенький и попробовать его в тестовом приложении). Если удасться столкнуться с ситуациями, когда кондишены ведут себя "неадекватно", и во время дебага понять, что дело в конкретных фазах загрузки бутового приложения - будет вообще замечательно) Потом поняв, что принимать решение о создании конкретных бинов в зависимости от, например, настроек проще реализовать через "импорт-селекторы" - тут Вы начнете видеть "просвет в тоннеле понимания Спринга". Дальше уже станет легче. Во всяком случае, решение принимаете Вы. Неплох вариант и сразу пройти собеседование, чтобы примерно определить пробелы в знаниях. Удачи.
Привет :) Отличный вопрос. Спасибо! Spring Boot коненчо хорошо, но для начала стоио бы разобраться в Spring Core. Тут не так много учить на самом деле и по сути главное это конфигурация и внедрения. После этого можно спокойно идти в spring boot стартеы: web, test. Они в полной мере помогут понять, что под капотом содержать и какие возможности предоставляют, а вот Spring Core даст ответы на каких ножках стоят стартеры и то что, магии нет и "Core всему голова". Книгу можно поставить в "жопецко" XD Spring это уже про инженерию, а не про науку и лучше, чем официальная документация с примерами и пояснениями не найдешь. Тем более, в условиях динамически меняющихся обстоятельства, книга будет устаревать быстрее, чем ты ее читаешь и познаешь. Ссылки в помощь: docs.spring.io/spring-framework/docs/current/reference/html/ docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ З.Ы. скоро будет видео про обучающий гайд по Спрингу.
ИМХО, изучать новичку книгу проще, чем читать офф. доку (даже несмотря на то, что у спринга дока из палаты мер и весов - она практически идеальна), потому что в книжке подход более структурирован но здесь есть опасность в том, что перевод будет некачественный или автор не всегда компетентен в вопросе (в отличие от разработчиков, которые пишут документацию)
@@OberonL Ну автор конкретно этой книги работает в Pivotal и входит в Spring Team, поэтому в принципе и выбрал эту книгу, тем более как раз вышло 6 издание, которое по Spring 5.3. Учитывая, что дальше будет только Spring 6, данная книга будет пару лет точно актуальна. Ну и плюс в копилку книги лично для меня то, что английский не на достаточно хорошем уровне у меня. Доки читаю, посматривая периодически в переводчик. Ну тут мне подтягивать язык надо)
Принцип единственной ответсвенности говорит: Класс должен иметь одну и только одну причину для изменения. Это достигается введением различных абстракций с патернами. И не стоит путать принцип единственной ответсвенности с декомпозицией, как основной принцип в программировании
На текущем проекте нет. Дело в том, что даже такой задачи для текущего проекта не стоит, что решает этот шаблон. Однако, есть у меня другой проект, там всячески пытаюсь это протянуть, поскольку будут задачи для которых transactional outbox был создан.
В процессе просмотра, ответил на ~80% всех вопросов. Взяли бы такого или нужно не менее 95 из 100.? Какой примерно "проходной процент" считаете приемлемым?
Дело не в проценте выполненных ответов. Тут важно смотреть на человека и разобраться насколько качественно он отвечает и понимает ли о чем идет речь. Очень часто кандидат отвечает на все теоретические вопросы. А когда доходит до разбора задач прикладных, то уже теряется и ничего путного сказать не может. Но если говорить про ответы на «сухие» вопросы. Хотелось чтобы кандидата ответил как минимум 60%. А дальше будет видно, найдется ли место для него
У меня сложилось впечатление, что автор - теоретик программирования, но не практик. Вскользь проскочило, что проект, который пилят до сих пор в стадии разработки (если я правильно понял). Теоретическое познание - нет вопросов, в такой постановке я бы тоже много смущался и мазал бы в ответах, но, если приглядываться пристальнее к вопросами и, например, взять ответ, что WebFlux подходит для оптимизации или ускорения производительности при обращении к БД - становится понятно, что самому интервьюеру нужен интервьюер.
По третьему кандидату ответ на счет параметров для изолированного контейнера некорректный, либо вопрос составлен неочень. Как же secret storages по типу Vault, AWS KMS и прочие. И к тебе вопрос, разве только на уровне запуска контейнера в docker-е можно задавать переменные окружения? Да и в целом я за поход когда sensetive информация (такая как db url, username и pass) не зашивается в переменные окружения. я словил себя на мысли что не хотел бы работать с таким самоуверенным разработчиком, как ты. Много уверенности в ответах над которыми есть над чем дискутировать. + отношение как к мясу, даже когда хвалил, отношение такое что еще тебе должны остались. ИМХО: С тобой сложно заводить продуктивную дискуссию, у тебя диктаторский стиль :( Хотя канал классный! Можно учится на чужих ошибках
Я диктатор 😹 Вот же тебя зацепило, что делаешь вывод не зная человека. Но право твоё, в интернетах все «спецы». По поводу хранения данных в Vault речи не шло. Твои мысли правильные и даже оспаривать не буду, что секреты должны храниться в соответствующих местах/сервисах. Однако в этом собеседовании вопрос так не стоял и даже близко не подходил к хранению секретов. Это просто твои домыслы о том, что правильно, а что нет. З.Ы. Поработай над управлением интернет-агрессией, может кусаться меньше станешь 😏
@@Jetbulb 😆 я не бог, я только учусь) активно сейчас готовлюсь, твои видео отличаются от всех остальных, у тебя есть смысл и логика в отличие от сухих фактов у остальных. Нравится твоя подача👍
Хотелось бы видео, как из джуна стать мидлом, что лучше читать, на, что больше обратить внимание, что нужно знать на более глубоком уровне, чем всё остальное.
@@Das.Kleine.Krokodil мы из видео видим, что многие работают и не вдумываются в то, что происходит под капотом. Так, что не только в количестве проработанных лет дело.
@@Happy-s8l1cдля того чтобы пускать пыль в глаза на интервью, а потом с немалой вероятностью пиздрячить по велению своей конторы нечто типовое, что занимает только 5-10% из всех знаний необходимых для пыли интервьюшной.
в компании, где я работаю переодически проводится аттестация на внутренний уровень. Вот я был джун+ и меня гоняли по вопросам на миддл-. Как бы я хотел чтоб задавали такие вопросы как в этом ролике. На работе у нас гораздо жестче, я кстати на работе завалил)
Я тоже свитчер, понимаю о чем говорит Макс, я учу сейчас java, потому что это осознанный мой выбор, а не рандомный выбор института и специальности )) И да, изучаю тему пока не смогу сам себе простым языком объяснить, что и где происходит. Это замедляет процесс, конечно. Зато фундамент железобетонный ))
06:25 - "как Java понимает, какой метод вызвать..." Тьфу блин)) Я думал здесь подразумевалось что-то вроде таблиц виртуальных функций в C++, то есть, как это устроено под капотом. Полез искать в интернете. А оказалось речь о банальном определении полиморфизма: правильно переопределенные методы вызываются исходя из типа объекта, а не типа ссылки.
Добрый вечер, а можно у вас уточнить. На 45:12 на скрине, где вы говорили, чтобы инкапсулировать параметры нужно их сложить в dto и вот на скрине get запрос в который будет передаваться объект, а разве у нас так получится для этого же post запрос. Спасибо за видео, я возможно не до конца понял про dto.
Хороший вопрос. Нет, POST для этого не нужен. В целом, HTTP-метод технически не влияет на структуру запроса и/или структуру метода имплементцирующего этот запрос через язык программирования, он только рекомендует. В нашем случае, это просто GET-запрос с параметрами, а Spring собирает эти параметры в виде объекта.
@@PitPRG В зависимости от того, что мы решаем. Но тогда мы теряем типизацию и сами занимаемся явной конвертацией. Пусть за нас это делает Spring, только объясни ему как))
@@Jetbulb Про валидацию, использовал я POJO объект вместо параметров решил у нас на проекте попробовать, а валидировал с помощью библиотеки hibernate validator и все работает, думаю это будет удобнее чем использовать Map.
@@Jetbulb кстати по поводу jwt и первого кандидата, самому приходилось реализовывать секьюрити через jwt без использования стороннего сервиса, мне кажется логичней было бы задать вопрос именно про oauth 2.0) Но конечно незнание entry pointoв и denied handlerов поразило )
@@gendzucuuu302 Тоже кейс, отличный пример. у меня тоже был проект, где такое приходилось реализовывать своими руками. тот случай, когда oauth2.0 не по карману 😁 А еще был кейс, когда JWT использовали для передачи данных по запрашиваемому файлу, чтобы там хранить информацию и потом при ее помощи доставать соответствующий публичный файл.
Спасибо за видео. А вот скажите, например, 1 кандидат: там говорилось, что "... человек за 5 лет непрерывной работы..." - подразумевается уже непосредственно работа в компании на коммерческих проектах?
Да, когда говорится про опыт работы, то ведётся речь именно о коммерческом опыте. Это подразумевает: работа в команде, коммуникация, решение проблем, работа с документацией и др.
блин крутой видос. спасибо! собесы интересные пометил для себя список вопросов чтобы копнуть глубже) в целом по рассказам самое положительное впечатление сложилось о втором кандидате. такой вопрос - планируются ли какие-то видосы про реактивность? сейчас на проекте у нас оно есть и тяжело дается...
Реактивность зависит от роли и уровня кандидата. Джуна я бы спросил только реактивный манифест и скоро начну это воплощать. Вероятно, попросил бы описать концепт проекта реактивщины. А вот уже мидлов и выше гонять по деталям применения и проблемам.
Я использовал 😼 Не надо знать наизусть, необходимо знать какие цели выполняет та или иная коллекция. Когда прийдет время, откроешь ее, почитаешь о ней детально и будешь принимать решение. Наличие знаний (осознания) о чем-либо, повышает шанс его применения. И - Истина))
«А потом я спросил ещё, тоже из нашего проекта» «А затем ещё задал вопрос из моей практики» «А кандидат не знает, а у нас в проекте это есть» Кроме вашего проекта существуют, внезапно! и другие. Не оправдывая, кандидатов - вероятно они действительно не супербизоны - но от интервьюера создаётся впечатление типичного начинающего, но очень гордого своей новой ролью.
Чаще всего бывает кастомная. Пока решения не нашел оптимального. Инспирацию питаю по ссылке ниже. phauer.com/2018/web-api-pagination-timestamp-id-continuation-token/
Очень интересно было послушать. Удивительно, как некоторые добравшись до мидла\сеньора не знают некоторые базовые вещи, которые спрашивают даже джунов.
Подключить файл как волюм при старте приложения, а потом, когда приложение поднялось - удалить волюм. И это будет более безопасно чем енв Вары. У Спринга даже есть фича вычитать проперти из конкретного файла при старте
Я короче, понял, посмотрел почти весь ролик: это тот тип интервьюеров, которые задают вопросы, с которых сами слезли только что. На 90% таких вопросов нет смысла отвечать, потому что:
1. Они решаются в рабочем порядке.
2. Тебе нет смысла их запоминать, потому что можно опираться на фундаментальные вещи, с помощью которых можно эти вопросы решить
3. Эти фундаментальные вопросы были быстро оговорены в начале каждого из 3-х интервью в ролике (это наводит на некоторые мысли)
Я встречал таких, не часто, когда ходил и хожу по собесам. Советую сразу скипать таких букварей. Будете работать за двоих и атмосфера в таких коллективах сильно ядовитая.
Собирался писать свой коммент с возмущениями к автору, но увидел твой и успокоился :)
особенно поражают вопросы про виртуальные методы и диспетчеризацию. очень нужно каждый день в работе. и linkedHashMap тоже. за 4 года опыта в работе лично у меня применялось всего несколько коллекций, и linkedHashMap в них явно не входит. да и вопросы про spring security тоже удивили. на работающих проектах это насраивается один раз и забывается. если человек нужен на проект с нуля - то ок, такие вопросы уместны, но если проект уже существует, то нафига лезть в такие вопросы совсем не понятно
@@АлексейКокуев-й5й, мне страшно, что кто то из прошлого может проникать в мои мысли
Не без этого, да)
Чем больше изучаю Java , тем больше надо изучать. Хочу плакать (
Жиза учу уже как 5 месяц ), бывает что вроде приходит вдохновение и хочется прям учить больше и больше а бывает что хочется всё забросить ),перепады настроение так скажем
Вот ты выучишь через 5 лет и потом поймёшь что будешь 5 мес. ходить по интервью чтоб получить оффер.
Да, но довольно быстро можно начать работать и получать хорошую зп)
@danilredya3301 не, рынку не пздц, рынок.destroy(); полностью
но это не означает, что надо прекращать обучение)
@@serged5689так 5 мес по сравнению с 5 годами это мало
Та за 3-5 лет многие не используют ни разу не linkedHashMap не просто linkedList - не показатель, но зато на собиседовании все любят грузить. Вот ни разу небыло у меня неоходимости это использовать. Каждый раз для собеса повторять миллион инфы которая ни разу не юзалась в работе.
Очень интересно: куда по-твоему в реальной жизни можно применить знание про диспетчеризацию методов? (спойлер: никуда - мне за 13 лет ни разу не пригодилось)
Если только проверить знание модели иерархии в Java, но на этот вопрос ответ никому, по большому счёту, не нужен, если только инженера не берут на написание специфических инфраструктурных вещей.
Как по мне - можно иногда спрашивать специфические вещи, если отсутствие ответа на него не влияет на решение. Потому что иногда хочется услышать честный ответ " не знаю". Сам наблюдал людей которые не могут честно сказать "не знаю". Видно что человек первый раз слышит но начинает нести ересь из головы, что не создает положительного впечатления. Нет ничего стыдного ответить "не знаю, не сталкивался". Интервью это не экзамен на котором требуется ответить на все вопросы.
@@MrGranaldo это кардинально противоположный (и неправильный) подход к тому, что практикуется во всем мире: в нормальной ситуации не должно быть вопросов, не влияющих на решение, а «вопросы со звёздочкой» обычно задаются, чтобы посмотреть, как кандидат будет подходить к решению задачи, как он мыслит и что предпринимает для её решения: в таком случае ответ «не знаю» - худшее, что может быть, а правильным действием должна быть попытка найти ответ с помощью логики и имеющихся знаний.
@@millfreedom ну одно дело ход мыслей, другое дело попытаться угадать
а потом месяц траблшутите багу, потому что вызвался не тот метод, который например игнорит thread safety
@@vks43523 лолчто? 😂 Это ж нужно еще постараться, что вызывался «не тот» метод…
Да и потом, если существует такая ситуация, то проблема куда хуже, чем непонимание диспетчеризации и называется: незнание принципов хорошего OOD.
Спасибо за видео, узнал много новых вопросов, будем развиваться.
Спасибо большое за ваши видео! Они мне оч помогают в подготовке: трудно определить список вопросов т.к. разнообразие тем оч пугает, а после просмотра ваших складывается четкое видение, что нужно подучить вот это, это и это.
Полезно в плане понимания как к каким вопросам готовиться. Но было бы не лишним добавить ответы на вопросы
Если нам приходит несколько параметров в урле, то хорошо если все они относятся к какой-то дто-шке, но если нет, то достаточно написать @RequestParam Map params или достать из HttpServletRequest
"В чём проблема synchronized?" в такой формлировке, без какого-то дополнительного контекста - звучит максимально ужасно, и единственной адекватной реакцией на это может быть "А что вы имеете ввиду?". Я вот сходу подумал о невозможности прервать заблокированный поток, о возможности дедлока, о долгом пробуждении потока после ожидания блокировки. Но не о том, что и так очевидно - что два потока не могут одновременно выполнять synchronized блок.
Хорошо сказано.
Вообще правильная мысль что «надо уточнять и не спешить давать правильный ответ на широкие вопросы. Затем двигаться от общего в частному».
Это не проблема syncronized, это его основная идея.
Хорошо когда есть твое мнение и неправильное. Но вот в копилку мнений, если принимаешь, конечно. Та же самая аутентификация обычно делается раз и потом уже большая часть времени дорабатывается бизнес-логика. Если что-то надо доработать в аутентификации - лезешь в код и понимаешь (не rocket science). Поэтому не удивительно, что человек, который не каждый день имплементит аутентификацию не ответил на вопрос.
Можешь ответить - что вы на проекте такого ежедневно делаете с использованием знаний SpringSecurity? Еще раз - ежедневно. Разве, что разрабатываете свой аналог или кастомизируете SpringSecurity. Теряюсь в догадках.
Как минимум, недостаточность логирования Spring Security или слабый контроль над нем, принуждает делать проксирование для внедрения этого контроля.
Чтобы потом все правильно собрать и заставить работать спринг из кастомных классов, надо не так уже и мало знать о том, как Spring Secutiry. В противном случае, будет баг-фикс-продакшн-баг-фикс-продакшн.
Когда ищешь человека на проект со знанием Spring Security, так он еще заявляет что знает Spring Security, то само собой разумеется будут вопросы и будет видно, знает ли он или просто говорит, что знает 😉
В первый раз досмотрел ролик до конца почти, и самое главное не заснул 😎
Неужели так скучно? 🥲
Прям очень офигенски в хронологию вписывается)) Когда уже все ролики по джунам уже пересмотрел и начал готовиться к уровню мидла и тут ровно по расписанию видос про мидлов))
Классно. Такие моки интервью очень помогают понять свои пробелы в знаниях. Спасибо.
Спасибо огромное за ваш труд, продолжайте плиз. Вы очень хорошо объясняете это талант.
multiplexing multiple requests over a single TCP connection (fixing the head-of-line blocking problem in HTTP 1.x
Это HTTP 2.0. Так, для справки, что надо ждать ответ от первого запроса в рамках одного коннекшна.
Очень познавательная рубрика! Отдельное спасибо за объяснение ответов))
Несмотря на мои комменты, приятно смотреть и слушать. Спасибо.
Вот кстати из видео в видео слышу установку, что LinkedList основан на Deque. Это не так. В основе лежит структура данных связный двунаправленный список. Но LinkedList реализует 2 интерфейса - List и Queue (и Deque от Queue) и может быть использован и как очередь, и как список, и как двунаправленная очередь.
Спасибо, очень полезное видео. Отдельная благодарность за ответы!
Почему-то есть ощущение, что не каждый синьер в полной мере ответит на эти вопросы...
На самом деле, в полной мере и не требуется.
Тут скорее как человек мыслит и что он может предложить.
А если нечего предложить, то чтобы он сделал чтобы найти предложение.
Наплодилгсь 23 летних стньоров , а потом думают, почему они такие тупые?
1. Работаю с java уже несколько лет, но тоже уровень знаний на поверхности, судя по вопросам и ответам из этого видео. Да, похоже я кодер, но не инженер. И углубиться в знания мне помогает именно обучение перед собесами :D но в работе, это совсем не находит применения, от слова совсем. На интервью спрашиваю аля 100-140% от тем java/sql/devops/оркестровки/профилирование/визуализация, но по факту на работе дадут 5-10% от того что спросили на собесе и заваливают задачами, что головы не видно и ты с этим возишься . Может конечно мне не повезло, но пока 4 компании в копилке
Спасибо за видео. Сейчас как раз готовлюсь к собеседованию на Java Middle, поэтому и попал сюда.
По поводу вопросов: мне нравится, когда собеседование строится на реальных рабочих ситуациях, и только иногда всплывают "типовые" вопросы. Готовиться к таким собеседованиям легче: ведь тебе нужно просто вспомнить реальные задачи, с которыми ты сталкивался.
На последнем собесе, который у меня был, экзаменатор вел себя именно так: мы по сути общались, обмениваясь опытом. Иногда он мне задавал какой-нибудь "типовой" вопрос, но только как подводку к следующей теме. Мне очень понравилось такое собеседование.
В итоге меня не взяли, но приятные впечатления сохранились ))
А можно вопрос, а разве java.util.concurrent в своих методах, где то глубоко под капотом, не использует "synchronize"?
Где как. Просто даже если используется ванильный синхронайзд, а не те же локи или низкоуровневые неблокирующие CAS алгоритмы (в атомиках), то этот синхронайзд используется эффективно, в реализациях, опять же неблокирующих алгоритмов. Например в CoWListe синхронизирована только запись, в отличии от синхронизированного листа - где синхронизированны все методы + итератор нуждается в ручной синхронизации.
А вообще, да, под катом используется и synchronized в том числе. Если говорить про примитивы синхронизации, то это
- synchronized
- atomic типы (используют native реализацию CAS)
- Lock’и, аналог синхронайзд на стероидах, опираются на native реализацию блокировки (Unsafe.park()/unpark()). Позволяют, например, предварительно проверить захвачен ли кем нибудь ресурс и много чего еще.
- volatile, который позволяет создавать видимость и консистентность изменений данных (устанавливает частичный порядок между событиями в разных потоках)
из оф документации:
This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI).
Вы сказали что IoC не сказал а раскрыл DI - можно тогда для джуна прояснить в чем тогда отличие ответа было ?
IoC включает в себя DI, кратко можно смотреть с этой стороны: инверсия контроля берёт на себя управление созданием объектов в вашем приложении с помощью инъекциии зависимостей.
Пока дошел до 27 минуты. Супер полезно.
Интересно, полезно. Спасибо за труд!)
Добрый день. Спасибо за видео
Несколько ремарок:
По поводу мапинга запросов на методы контроллера в spring - прекрасно можно мапить по наличию параметров запроса, а не только по методу и пути (конечно, если параметры будут конфликтовать, то замапить не получится, но это как и с путями, и да, я понял, что вопрос был не в этом). По поводу web-flux - это как раз веб-фреймворк, аналог web-mvc, асинхронные запросы - это как раз его прямое назначение. Spring-Boot - это не только и не столько про BOM, он привнёс гораздо больше, чем просто унификация версий зависимостей, тот же самый резолвинг параметров который с третьим кандидатом обсуждали - это именно бутовая фишка (и там много прикольных возможностей, особенностей есть, ну и граблей тоже, но скорее всего мало кто их поймает). Обсуждение war vs jar - тоже такой себе холивар. По поводу диспетчеризации методов в java - никогда с таким вопросом на собеседованиях не сталкивался, такую формулировку впервые услышал тут, скорее всего я бы начал рассуждать что-то про таблицы виртуальных методов, но непосредственно как оно реализовано я не знаю. Хотя лично мое мнение, это из разряда вопросов про то, как реализован GC - есть стандартные ответы, но правильный ,eltn зависит от реализации JVM, вот в Oracle Hotspot - и тут уже вставляем стандартные ответы (не забыть поправки на версию jvm)
Что еще заметил. К примеру, у меня 7 лет достаточно разнообращного опыта по разработке, начиная с C# стека, C++(MFC) , есть опыт разработки фронта, есть часть на java. В итоге набирается на 7 лет разнообразных проектов. На собесах спрашивают только по java и только то, что требуется в проектах принимающей стороны. Весь остальной опыт обнуляется и вообще не рассматривается, цена, естественно, тоже складывается только на основании java.
Он не то чтобы обнуляется, но что тебя может спросить Java-разработчик по C#?
Опыт всегда учитывается и является положительным фактором, но собеседование проходит на другую позицию и потому иным вещам уделяют минимум.
Проходил много собеседований, когда ребят спрашивают по тем языкам с которым они работали ранее.
Это как повезёт и на кого наткнёшься ))
@@Roman-ej3xg за полгода на сеньера? По мне даже с учетом того, что человек прекрасно знает архитектуру и шаблоны построения систем, ему надо будет года два три потратить на изучение языка, спринга и других мелких фреймворков, средств, причем на практике. Это достаточно большой объём со своей спецификой. У меня сейчас у самого должность типа сеньер, но это филькина грамота, если смотреть по рынку. А рынок особо не боролся, текущий работодатель прислал контрооффер и все преимущества у нанимающих перестали иметь значения, в итоге остался там где и был.
@@inzagher Просто он Senoir Software Engineer, а вы говорите про Senior Framework Developer'a
Можно выложить новые вопросы и ответы на Java Middle developer? Спасибо.
Довольно-таки смешной и интересный ролик вышел)
Бро, как всегда во время :)
для пагинации я использовала Pageable, создав json для данных. Удобно и никаких происшествий)
Jetbulb это каналище, привет из Армении
Респект 👍 🇦🇲
Спасибо за труды.
Спасибо за видео, теперь я точно утвердился в том, что я Senior
Так держать))
Добрый день. Подскажите пожалуйста, где конкретно у Шилдта описан Dynamic method dispatch? Искал в главе 8, в интерфейсах, нашел только о множественном наследовании, стр.343, но кажется, это не совсем то.
Спасибо большое!
Прикольне і цікаве відео. Продовжуй в тому ж дусі 👍
Дякую за фідбек!
Будемо продовжувати та розвиватись)
красавчик самый лучший интревьеер
Балуете меня))
Зазнаюсь 😏
Спасибо!
Круто бро, спасибо тебе за позицию по поводу того, что происходит в мире, и спасибо за полезный ролик. Готовлюсь к собесу....
Удачи на собесе.
Респект!
Интересное видео, спасибо. Делай ещё, пожалуйста.
Спасибо большое за такое очень полезное видео.
Любопытно было наблюдать за пересказом трёх ТИ, это первое видео, которое посмотрел на канале, в целом, очень интересно, но как-то резола слух, что топит только за свои ответы, опыт 8 лет конечно это не мало, но не гарант 100% верного мышления и видения ситуации, по факту "век живи - век учись", а тут ощущение, что интервьер считает себя уже познавшем дзен и с 9-м даном - похоже, молодой возраст даёт о себе знать. Где-то на себя и со стороны посмотрел. Я проводил много ТИ, но инженеров по автоматизации тестирования, много проектов (15+ лет) поставил с нуля, работал с зоопарком стеком, и каждый раз обучался, учитывая пред. опыт, ошибки. Аналогично также ранее бывало задавая вопросы, порой хотел услышать какой-то свой "избранный" вариант ответа - за уши притянуть собеседника - недоразвитый кругозор, но со временем это проходит, если стараться рассмотреть варианты, применить, попробовать. Сейчас перешёл в разработку, заполняю пробелы в знаниях, т.к. кругозор за это время стал широкий и мыслишь уже более с т.з. архитектуры, а вот какие-то детали языка, фреймворков - проседания - ибо один проект на JS, другой на C#, третий на VBScript, 4-й на Java, Kotlin, и т.д.
К слову про deploy приложухи - у нас этим команда devops занимается, раскатывает сервисы системы в контейнерах в OpenShift-е, и конфигурирование черз yaml-файлик делается на лету, да для изменений надо pod передёрнуть, чтобы новый поднялся с новыми - сервис потухнет на неск. сек и поднимется снова - юзаешь дальше.
По факту, вы, Максим, также пытается, только свой текущий опыт прибить гвоздями к стене, потому что вы только до него дошли, но попробовали не всё, а остальное пробовать не хотите.
Но в целом, ТИ-ер, вы хороший, подход нравится, потенциал есть, есть куда хуже, когда какой-то абстрактный список вопросов, а по опыту ни одного - хотя опыта там гора, но нет, зачем, просто банальная сухая теория - вот это реально таких интервьеров до кандидатов допускать нельзя - такие продолбают ценные кадры. Надо понять с какими задачами, проблемами сталкивался, как решал, почему так, какие были вариации...
Спасибо за такой развернутый ответ :)
Хочется добавить, что опыт ничто в реактивно летящем мире и учусь каждый день со всеми на ровне. Учиться надо каждый день, я не исключение.
Более того, никогда не ставил свои индивидуальные знания выше остальных, ведь мое кредо "Отличный инженер создает, великий копирует".
Потому как бесконечно пытаюсь найти что-то новое у (не)знакомых людей и перенять это себе для дальнейшего переиспользования.
Если вам показалось, что я не принимаю других вариантов ответов и ожидают ТОЛЬКО то, что нарисовал в своей голове - мне жаль, поскольку это не так.
Стало быть видео не удалось и формат\тон подачи неправильно расставляет акценты. Будем работать над этим.
Но, как я сказал: - "постоянно двигаюсь вперед".
Так что ваш комментарий дал мне мысли "на подумать" 😀
Спасибо)
@@Jetbulb По части опыта и реактивно летящего мира - как обычно, правда где-то посередине, не стоит вдаваться в крайности - опыт позволяет человеку шире мыслить, быстрее находить решения, опираясь на него, даже в новых областях, т.с. чуйка работает, быстрее ловишь волну, откуда ветер дует. А на одной теории без практики не уедешь и забудешь. Сами про новичка сказали, что где теорию знает - хорошо, а как где-то опыта нет - затык - это оно самое :)
Опыт как раз очень многое даёт, другое дело, если человек дальше не развивается, не познаёт новое - это отд. проблема.
тут в тему: 1$ за фикс и 999$ за знание где надо пофиксить.
А так ваш тренд к познанию импонирует, есть чему поучиться :)
Выкладывайте ещё, мне вообще интересно, что спрашивают на ТИ, хочу походить сам, получить обратную связь по себе, понимать, что надо подтянуть )
@@VitMS1 Спасибо за ваш отзыв)
Приятно пообщаться с понимающим человеком и слушать мысли похожие на свои собственные.
Это кстати то, почему я топлю "Кодер vs. Инженер". Все-таки умение решать системные проблемы и быть "adhoc-решалой", не одно и тоже.
Хотелось чтобы качество ПО инженерии стремилось вверх и все вот так думали, как вы)))
Респект!
З.Ы. Развиваться будем, но видео делать не прекратим. Не дождутся))
@@Jetbulb Спасибо и вам на добром слове )) удачи, будем развиваться и ловить волну ;)
23:00 Чем Security Filter Chain отличается от просто Filter Chain?
Топ видос! Спасибо
Спасибо большое за видео, выписал себе пару вопросов).
6 лет в индустрии и неизвестны паттерны проектирования? Этот опыт был получен в большом общеизвестном зеленом банке?
«Жберов» в 🇪🇺 хватает, так что все может быть.
Но вот и меня смущает, что за 6 лет, человек не может описать элементарные шаблоны.
Даже пугает эта тенденция. Все чаще и чаще такое вижу. Или это может от того, что HR таких ищут и таких находят 🫡
@@Jetbulb я всё чаще вижу мнения, что solid читать не надо. То есть мало того, что не читают, так еще и в массы это тащат. Про шаблоны то же самое. А их ведь навалом и на них всё построено. От низкоуровневых (GOF) до фаулера и архитектурных типа шин сообщений и т.д. Без них ни одной системы не построить.
@@inzagher золотые слова.
"Шаблоны не надо, Дизайн ни к чему" - это девиз stackovereflow-кодеров 😁
Лайк за стикеры на фоне ♥
оаоаоаоа лучше видео!!!1!!111!
Оч круто, Макс. Кстати в основном на интервью приходят чехи? Или индусы, бразильцы и другие европейцы тоже? Просто интересно
Разные ребята приходят. Европа многонациональная.
Чаще всего ребята из Чехии, Украины, РФ, если говорим про Прагу. Но и других национальностей валом, к примеру в последнее время много ребят из Турции.
Не совсем понял зачем тратить время на собесы, по итогам которого кандидаты не проходят из за переезда. Почему hr изначально не проработал это, сколько времени можно было бы сэкономить.
Вот это мой постоянный вопрос.
Но компания платит, я работаю, было бы глупо отказываться 😅
@@PitPRG
Денег хотят все))
Разработчики такие же. Супер важные огурцы в супермаркете овощей)))
А как заменить offset на отступ по id, если у нас не просто пагинация, а пагинация + фильтр + ордер? Редко когда есть просто пагинация, обычно всё идет в комплекте.
Ну тут надо начинать с того, в какой последовательности операции выполняются.
www.sisense.com/blog/sql-query-order-of-operations/
Из этого станет понятно, что выборка по ID и отказ от offset вовсе не влияет на получения данных, а просто форма работы с данными.
Просто надо строить более изощреннее where-выражения.
В простом изображении:
select * from t1 where id > :idValue order by :nameField
@@Jetbulb пока возникает два вопроса. 1. Если к примеру я получу данные на первой странице, а потом захочу уйти сразу на пятую, то откуда мне взять idValue. 2. Если я сортирую по nameField, то порядок id меняется на случайный, можно ли на нем строить пагинацию, большой вопрос. Спасибо за ссылку, буду пытаться осознать)
@@inzagher
1. В таком случае, пагинация работает "туда-сюда" и мы лишаемся возможности прыгать между страницами. Это обусловлено тем, что в токен зашита информация и сам токен не поменяешь. Кстати классный вопрос )))
2. Сортировка выполняется последней. То есть сперва будет учтено idValue и условие WHERE и только потом, все это отсортируется.
@@Jetbulb в пункте 2 получается, что мы сортируем только полученную страницу. А если кейс, к примеру, посмотреть вторую страницу самых высокооплачиваемых работников? Обычно требования к сортировке выглядят именно так.
Комментарий для продвижения! Спасибо
во, про офсет мне понравился твой ответ :) может и у меня прокатит :)
Респект за топовый контент! :)
Здравствуйте! Могли бы Вы сделать видео на тему здоровье программиста? Ведь в массе своей программисты очень много сидят, что влечет за собой проблемы со здоровьем (застойные явления, проблемы со зрением и т.д) Как Вы лично следите за здоровьем, сколько времени стараетесь сидеть за ноутбуком (или ПК), сколько времени делаете перерывы? Какие на Ваш взгляд будут рекомендации также по питанию, сну?
Интересная тема. Записал ))
Спасибо 🙏🏻
интересно откуда у вас такие вопросы?
программисты ничем же не отличаются
от любых других офисных работников
и прочих сидячих тружеников
которых сейчас половина населения наверное
если не больше
Очень круто, записывай почаще такие видосы про вопросы на собесы, так же может на сеньора и тимлида. Так же, спасибо за ответы.
Спасибо, интересно было посотреть, но в ходе просмотра возникло два вопроса:
1. По поводу решения ДТО как квери парам. Как в таком случае решать проблемы с 414? Разработчик через месяц-год, решит расширить ДТО и получит в итоге 414, разве такое подход архитектурно не кривой?
2. если использовать Ваш подход с id > - и будет случай когда будет нарушение сиквенса в записях,
как вы сможете понять что такое произошло? Что данные не потеряны? Как раз пример со страницей, но айдишник скакнул например с 1000 до 10к, и порядок айди не соответствует таймстампу (нарушение сиквенса может быть к примеру если две мастер бд и много инсертов и в ту и в другую)
Привет! Спасибо за вопросы.
1. 414 - это что же надо сделать, чтобы такое произошло. Создавал много API, бывало много параметров, но чтобы уложиться в 414, не знаю.
Даже спека пишет, что это очень редкий и специфический кейс httpwg.org/specs/rfc7231.html#rfc.section.6.5.12
2. ID - сама по себе не панацея. Это всего лишь набор данных на основании которых запрос формируется. А сам запрос уже направлен на отсечение проблем. Примеры можно посмотреть по ссылке phauer.com/2018/web-api-pagination-timestamp-id-continuation-token/
Проорал с реакции Макса за последнего синьора :)))))))
При подведении итогов 2рого интервью - "Это было не забываемо"))))
Спасибо за выпуск)
по трекингу - тоже непонятно. Отслеживать в каком виде? В виде логов? В виде какого-то мониторинга?
не всегда тот факт, что ты что-то выучил и знаешь против того, что ты можешь быстро нагуглить и найти нужную информацию это минус для кандидата
печально когда такие ботаны собеседуют и оценивают не способность понимания и адаптивности а как в институте зубров ждут. Нахрен кому этот спринг секьюрити заучивать, он на проекте настроился один раз и все.
Я как один из этих ботанов отвечу так: «учить вас дорого и не благодарно»)
Спасибо за контент, сейчас доучиваю Спринг и начинаю искать работу джуном) Видя, что чувак позиционирующий себя сеньором на мидл позицию не может ответить на вопросы, на которые могу ответить я, гасит мою неуверенность, готов ли я идти по собесам. Макс такой вопрос, купил себе Spring in Action. Стоит ли сначала полностью проработать книгу и идти собеситься на джуна или можно уже сейчас начать искать изучив на поверхности Spring Boot и его стартеры, а параллельно уже прорабатывать книгу и копаться во внутренностях спринга. Просто сейчас времена для джунов не особо хорошие(в моем городе всего 2 вакансии на открытом рынке), а конкуренция большая. И не хочется потерять шанс из за того, что где то недотянул
Стартеры бута, действительно, можно изучить поверхностно (знать их функциональное назначение), а вот с "кондишенами" и иже с ними лучше попрактиковаться (например, написать свой стартер простенький и попробовать его в тестовом приложении). Если удасться столкнуться с ситуациями, когда кондишены ведут себя "неадекватно", и во время дебага понять, что дело в конкретных фазах загрузки бутового приложения - будет вообще замечательно) Потом поняв, что принимать решение о создании конкретных бинов в зависимости от, например, настроек проще реализовать через "импорт-селекторы" - тут Вы начнете видеть "просвет в тоннеле понимания Спринга". Дальше уже станет легче. Во всяком случае, решение принимаете Вы. Неплох вариант и сразу пройти собеседование, чтобы примерно определить пробелы в знаниях. Удачи.
@@kolyuchkin Спасибо большое за ответ, в таком плане примерно и думал, но думаю ваша конкретика сильно поможет куда смотреть.
Привет :)
Отличный вопрос. Спасибо!
Spring Boot коненчо хорошо, но для начала стоио бы разобраться в Spring Core. Тут не так много учить на самом деле и по сути главное это конфигурация и внедрения.
После этого можно спокойно идти в spring boot стартеы: web, test.
Они в полной мере помогут понять, что под капотом содержать и какие возможности предоставляют, а вот Spring Core даст ответы на каких ножках стоят стартеры и то что, магии нет и "Core всему голова".
Книгу можно поставить в "жопецко" XD
Spring это уже про инженерию, а не про науку и лучше, чем официальная документация с примерами и пояснениями не найдешь. Тем более, в условиях динамически меняющихся обстоятельства, книга будет устаревать быстрее, чем ты ее читаешь и познаешь.
Ссылки в помощь:
docs.spring.io/spring-framework/docs/current/reference/html/
docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
З.Ы. скоро будет видео про обучающий гайд по Спрингу.
ИМХО, изучать новичку книгу проще, чем читать офф. доку (даже несмотря на то, что у спринга дока из палаты мер и весов - она практически идеальна), потому что в книжке подход более структурирован
но здесь есть опасность в том, что перевод будет некачественный или автор не всегда компетентен в вопросе (в отличие от разработчиков, которые пишут документацию)
@@OberonL Ну автор конкретно этой книги работает в Pivotal и входит в Spring Team, поэтому в принципе и выбрал эту книгу, тем более как раз вышло 6 издание, которое по Spring 5.3. Учитывая, что дальше будет только Spring 6, данная книга будет пару лет точно актуальна. Ну и плюс в копилку книги лично для меня то, что английский не на достаточно хорошем уровне у меня. Доки читаю, посматривая периодически в переводчик. Ну тут мне подтягивать язык надо)
Что такое толстые и худые контроллеры? Вопрос который определял будет ли челик принят или нет
Принцип единственной ответсвенности говорит: Класс должен иметь одну и только одну причину для изменения. Это достигается введением различных абстракций с патернами. И не стоит путать принцип единственной ответсвенности с декомпозицией, как основной принцип в программировании
вы применяете у себя transactional outbox?
На текущем проекте нет. Дело в том, что даже такой задачи для текущего проекта не стоит, что решает этот шаблон.
Однако, есть у меня другой проект, там всячески пытаюсь это протянуть, поскольку будут задачи для которых transactional outbox был создан.
Пожалуйста, убери провод type-c от монитора, где кабель мэнеджмент?😢😢😢
В процессе просмотра, ответил на ~80% всех вопросов. Взяли бы такого или нужно не менее 95 из 100.? Какой примерно "проходной процент" считаете приемлемым?
Дело не в проценте выполненных ответов. Тут важно смотреть на человека и разобраться насколько качественно он отвечает и понимает ли о чем идет речь. Очень часто кандидат отвечает на все теоретические вопросы. А когда доходит до разбора задач прикладных, то уже теряется и ничего путного сказать не может.
Но если говорить про ответы на «сухие» вопросы. Хотелось чтобы кандидата ответил как минимум 60%. А дальше будет видно, найдется ли место для него
У меня сложилось впечатление, что автор - теоретик программирования, но не практик. Вскользь проскочило, что проект, который пилят до сих пор в стадии разработки (если я правильно понял). Теоретическое познание - нет вопросов, в такой постановке я бы тоже много смущался и мазал бы в ответах, но, если приглядываться пристальнее к вопросами и, например, взять ответ, что WebFlux подходит для оптимизации или ускорения производительности при обращении к БД - становится понятно, что самому интервьюеру нужен интервьюер.
По третьему кандидату ответ на счет параметров для изолированного контейнера некорректный, либо вопрос составлен неочень. Как же secret storages по типу Vault, AWS KMS и прочие. И к тебе вопрос, разве только на уровне запуска контейнера в docker-е можно задавать переменные окружения? Да и в целом я за поход когда sensetive информация (такая как db url, username и pass) не зашивается в переменные окружения.
я словил себя на мысли что не хотел бы работать с таким самоуверенным разработчиком, как ты. Много уверенности в ответах над которыми есть над чем дискутировать. + отношение как к мясу, даже когда хвалил, отношение такое что еще тебе должны остались.
ИМХО: С тобой сложно заводить продуктивную дискуссию, у тебя диктаторский стиль :( Хотя канал классный! Можно учится на чужих ошибках
Я диктатор 😹
Вот же тебя зацепило, что делаешь вывод не зная человека.
Но право твоё, в интернетах все «спецы».
По поводу хранения данных в Vault речи не шло. Твои мысли правильные и даже оспаривать не буду, что секреты должны храниться в соответствующих местах/сервисах.
Однако в этом собеседовании вопрос так не стоял и даже близко не подходил к хранению секретов.
Это просто твои домыслы о том, что правильно, а что нет.
З.Ы. Поработай над управлением интернет-агрессией, может кусаться меньше станешь 😏
А почему нельзя использовать PagingAndSortingRepository(Pageable pageable)? Для решения с пагинацией
Можно всё.
Вопрос только насколько оно будет подходить и какую стратегию оно реализовывает.
6:10 можете кратко дать ответ на этот вопрос
Макс плиз больше видео с собеседованиями, очень интересно. Особенно с мидлами и сеньорами) Судя по ним, я сеньор, хотя считаю себя мидлом
Больше собеседований Богу собеседований)))
Скоро уже будут новые выпуски. Немного подождать надо))
@@Jetbulb 😆 я не бог, я только учусь) активно сейчас готовлюсь, твои видео отличаются от всех остальных, у тебя есть смысл и логика в отличие от сухих фактов у остальных. Нравится твоя подача👍
@@AlAnSer11 Спасибо за отзыв))
Хотелось бы видео, как из джуна стать мидлом, что лучше читать, на, что больше обратить внимание, что нужно знать на более глубоком уровне, чем всё остальное.
работать надо, опыт получать
по другому никак
@@Das.Kleine.Krokodil мы из видео видим, что многие работают и не вдумываются в то, что происходит под капотом. Так, что не только в количестве проработанных лет дело.
@@go-with-go можно как то по другому стать мидлом?
@@go-with-go а зачем знать то что бесполезно знать на практике?
@@Happy-s8l1cдля того чтобы пускать пыль в глаза на интервью, а потом с немалой вероятностью пиздрячить по велению своей конторы нечто типовое, что занимает только 5-10% из всех знаний необходимых для пыли интервьюшной.
в компании, где я работаю переодически проводится аттестация на внутренний уровень. Вот я был джун+ и меня гоняли по вопросам на миддл-. Как бы я хотел чтоб задавали такие вопросы как в этом ролике. На работе у нас гораздо жестче, я кстати на работе завалил)
Это senior кодер 👍Для работы же достаточно?
Я тоже свитчер, понимаю о чем говорит Макс, я учу сейчас java, потому что это осознанный мой выбор, а не рандомный выбор института и специальности )) И да, изучаю тему пока не смогу сам себе простым языком объяснить, что и где происходит. Это замедляет процесс, конечно. Зато фундамент железобетонный ))
06:25 - "как Java понимает, какой метод вызвать..." Тьфу блин)) Я думал здесь подразумевалось что-то вроде таблиц виртуальных функций в C++, то есть, как это устроено под капотом. Полез искать в интернете. А оказалось речь о банальном определении полиморфизма: правильно переопределенные методы вызываются исходя из типа объекта, а не типа ссылки.
Именно 😝
Добрый вечер, а можно у вас уточнить. На 45:12 на скрине, где вы говорили, чтобы инкапсулировать параметры нужно их сложить в dto и вот на скрине get запрос в который будет передаваться объект, а разве у нас так получится для этого же post запрос. Спасибо за видео, я возможно не до конца понял про dto.
Хороший вопрос.
Нет, POST для этого не нужен.
В целом, HTTP-метод технически не влияет на структуру запроса и/или структуру метода имплементцирующего этот запрос через язык программирования, он только рекомендует.
В нашем случае, это просто GET-запрос с параметрами, а Spring собирает эти параметры в виде объекта.
@@Jetbulb Понял, спасибо.
@@PitPRG
В зависимости от того, что мы решаем.
Но тогда мы теряем типизацию и сами занимаемся явной конвертацией.
Пусть за нас это делает Spring, только объясни ему как))
@@Jetbulb Про валидацию, использовал я POJO объект вместо параметров решил у нас на проекте попробовать, а валидировал с помощью библиотеки hibernate validator и все работает, думаю это будет удобнее чем использовать Map.
Наконец-то дисклеймер адекватный.
Про итераторы у меня на собесе еще спросили различие fail safe от fail fast
Тоже классные вопросы.
Респект 👍
@@Jetbulb кстати по поводу jwt и первого кандидата, самому приходилось реализовывать секьюрити через jwt без использования стороннего сервиса, мне кажется логичней было бы задать вопрос именно про oauth 2.0) Но конечно незнание entry pointoв и denied handlerов поразило )
@@gendzucuuu302 Тоже кейс, отличный пример. у меня тоже был проект, где такое приходилось реализовывать своими руками.
тот случай, когда oauth2.0 не по карману 😁
А еще был кейс, когда JWT использовали для передачи данных по запрашиваемому файлу, чтобы там хранить информацию и потом при ее помощи доставать соответствующий публичный файл.
Про SOLID я бы спрашивал, какие компоненты в Java его нарушают, например принцип Барбары
Спасибо за видео. А вот скажите, например, 1 кандидат: там говорилось, что "... человек за 5 лет непрерывной работы..." - подразумевается уже непосредственно работа в компании на коммерческих проектах?
Да, когда говорится про опыт работы, то ведётся речь именно о коммерческом опыте.
Это подразумевает: работа в команде, коммуникация, решение проблем, работа с документацией и др.
блин крутой видос. спасибо! собесы интересные пометил для себя список вопросов чтобы копнуть глубже) в целом по рассказам самое положительное впечатление сложилось о втором кандидате. такой вопрос - планируются ли какие-то видосы про реактивность? сейчас на проекте у нас оно есть и тяжело дается...
Реактивность зависит от роли и уровня кандидата.
Джуна я бы спросил только реактивный манифест и скоро начну это воплощать. Вероятно, попросил бы описать концепт проекта реактивщины.
А вот уже мидлов и выше гонять по деталям применения и проблемам.
@@Jetbulb я не про собеседования. Вопрос был в том, планируется ли какое-то видео-туториал по реактивщине
@@СэмФишер-х4д Хороший вопрос. Понял тебя.
В ближайшее время не запланировано, но будут посты про реактивный подход.
@@Jetbulb было бы очень в тему. спасибо!
Кто-то на проектах использует линкедлист и линкехашмап?
Зачем это знать тогда?
Я использовал 😼
Не надо знать наизусть, необходимо знать какие цели выполняет та или иная коллекция. Когда прийдет время, откроешь ее, почитаешь о ней детально и будешь принимать решение.
Наличие знаний (осознания) о чем-либо, повышает шанс его применения. И - Истина))
Очень актуально, спасибо
Вот это крутнйшее интервью!!! Целая пачка нестандартных вопросов и реально для честного мидла!!!
20:00 не перепутал человек IoC контейнер с принципом IoC.
«А потом я спросил ещё, тоже из нашего проекта»
«А затем ещё задал вопрос из моей практики»
«А кандидат не знает, а у нас в проекте это есть»
Кроме вашего проекта существуют, внезапно! и другие.
Не оправдывая, кандидатов - вероятно они действительно не супербизоны - но от интервьюера создаётся впечатление типичного начинающего, но очень гордого своей новой ролью.
Макс, а можно подробнее как ты реализуешь курсор пагинацию? Какую-то библиотеку используешь или кастомная реализация?
Чаще всего бывает кастомная.
Пока решения не нашел оптимального.
Инспирацию питаю по ссылке ниже.
phauer.com/2018/web-api-pagination-timestamp-id-continuation-token/
@@Jetbulb похоже третий интервипруемый про это чтото слышал "I presented the Timestamp_Offset_Checkum continuation token"
Чётко !
Полезный видос для подготовки к собесу
вспоминается мем - ты тааакой умный дядька!)
Очень интересно было послушать. Удивительно, как некоторые добравшись до мидла\сеньора не знают некоторые базовые вещи, которые спрашивают даже джунов.
Потому что базовыми вещами прямо не пользуются
Оставляю комментарий
Угарнул с того, что у нас татуха одинаковая на руке :3
Зови на собес, объясню в каких случаях yaml используется, а в каких local variable :3
Вызов принят.
Как будет место, всегда пожалуйста)))
Чем занимаешь, каков твой профиль в программировании?
Подключить файл как волюм при старте приложения, а потом, когда приложение поднялось - удалить волюм. И это будет более безопасно чем енв Вары.
У Спринга даже есть фича вычитать проперти из конкретного файла при старте
[00:58:35] Базюлька:D возьму на вооружение :D