Собеседование Java Spring - Разбор вопросов с собеседований на Java Developer
HTML-код
- Опубликовано: 18 июл 2021
- Собрали самые интересные вопросы с собеседований на Java-разработчика. В видео две части. В первой рассказываем про Java: Коллекции, Hash Code & Equals Contract, Functional interfaces, Stream API, Garbage collector, устройство памяти, heap, concurrency.
Во второй - про Spring: Spring Beans, Spring Data Repository, Аннотации, Programmatic TM, Spring MVC
Стань частью команды MAD BRAINS!
madbrains.ru/java-vacancy?utm_...
Ссылки из наших видео, полезные статьи в телеграм-канале
t.me/skills_by_mad
Техно - это внутренний еженедельный митап Mad Brains, на котором мы делимся опытом, знакомимся с актуальными технологиями и темами в мобильной разработке и не только.
Очень хорошее видео для подготовки к собеседованиям. Мне сейчас отлично помогло вспомнить множество моментов, которые я подзабыл
Spring framework
28:00 Зачем нужен Spring
29:13 Компоненты Spring
31:26 скоупы бина: синглтон, прототайп
32:40 Цикл жизни бинов
35:18 Spring Data
39:39 Отличия компонентных аннотаций: @Component, @Service и т.д.
41:52 @Transactional
43:14 @Transactional Propagation
46:11 @Transactional проксирование
49:28 Транзакциями можно управлять и программно
50:18 Spring MVC
51:06 Отличия @Controller и @RestController
51:54 Spring Boot vs Spring
54:40 Совет по собеседованиям
Огромное спасибо автору за такой большой объём полезной информации в таком, казалось бы, небольшом промежутке времени!
Невероятно!
Успехов вам в карьере)
Огромное спасибо автору за такой большой объём полезной информации
Круто, отличный доклад!)
Жаль, что не могу поставить несколько лайков. Коротко и по делу. Спасибо!
ВООООООООООООот крутое видео, вот именно так надо отвечать, создается впечатление, что человек не зазубрил, а реально понимает о чем говорит
Потому что если ты будешь отвечать очень быстро и типа как из пулемета, то понятно что заучил. А так видно что человек говорит спокойно без спешки
А зачем создавать впечатление и тянуть время, если можно быстро и ясно сказать
@@aww8609 потому что мы живём в мире лицемерия и лжи, где главное не суть, а обёртка :)
привет я работал програмистом уже, мне это видео помогло все вспомнить для собеседования
Супер видео, очень познавательно
Крутое видое! Все по делу.
В описании стрима пример с стримом, внутри которого по каждой записи обращаются в БД, а потом фильтруют по зарплате. Не делайте так в реальных проектах. Сделайте один запрос к БД со списком айди и сразу в запросе отберите по нужной зарплате
что бы не выбирать лишнее и сразу отсеять ненужное на этапе выборки из бд?
@@alex0destroyer да, просто такой запрос сделать чтобы сразу отобрать из БД только то что нужно. Вообще надо аккуратнее с обращением в бд из стрима, можно заспамить базу. Мы так однажды положили проект, потому что были вложенные стримы, и получилось около миллиарда запросов при открытии страницы 😅
Супер, дал подписку
спасибо за видео
возникло ощущение, что автор сам плавает в темах, которые разбирает.
и если б кто-то задавал ему дополнительные вопросы, то он тут же посыпался бы
Макар макаром а макароны по расписанию)))
Мы на проекте заменили cms на g1. У нас много маленьких короткоживущих объектов.
PermGen уже нет в памяти, есть Metaspace
Спасибо
27:10 Нет, задачи начинают исполняться сразу после вызова submit
По-моему, автор допустил ошибку насчет многопоточки. Метод shutdown закрывает треды, которые выполнили свою таску. А submit как раз и вызывает метод Run, который оверрайдется через имплементации интерфейсов. Если не прав, поправьте, пожалуйста.
Да, вы правы, ошиблись, спасибо за конструктивное замечание! :)
В при вызове submit() мы передаем задачу в очередь на исполнение (и она исполняется по мере освобождения работников), а после метода shutdown() начинается прерывание простаиваемых работников, и возможности подтвердить новую задачу уже нет.
Также можно добавить, что без вызова shutdown() программа в примере не завершится до тех пор, пока не пройдет время, указанное в методе awaitTermination(). Но если мы выполним shutdown() и не вызовем awaitTermination(), то программа завершится сразу после выполнения всей работы. Если же метод awaitTermination() указан, а работа выполнилась раньше (и мы вызвали shutdown()), то программа так же успешно завершится по окончанию выполнения тасков.
Спасибо за детальное объяснение!
Но только не активных, а всех засабмиченных.
какой порядок итерирования в ЛинкСете?) Вообще-то порядок добавления.
11:08 HashMap не превратится в один большой связанный список, если количество элементов в корзине достигает определенного порога (обычно 8), то корзина преобразуется из списка в дерево
Про то что бывает с вырожденным списком в хэшмапе не рассказал и про то как настроить размер мапы
"Мидл и выше"
Мидлы и выше всем нужны!!!!!
Shutdown используется не для того, чтобы стартануть потоки, а чтобы их кильнуть по завершению.
java 8 release 2014! Да функциональные интерфейсы относительно недавно:)
Оч сумбурно
Тут сами почитаете, а это не спросят, а здесь ммммм.. ээээ.. ааааа
И ошибок куча
Много затупов от автора, такое чувство, что читает с листа бумаги, где написано от руки... и постоянно - таким макаром)
Спасибо за отзыв! Будем исправляться
По хешмапе еще, если хеши совпали, то перед эквалс сначала ключи на == проверяются, если на == ключи сопали, то смысла нет запускать прожорливый эквалс.
Открою секрет правильный икввлз как раз сначала проверяет по ==
В принципе всё более-менее так. Но один вопрос упустил. ИСКЛЮЧЕНИЯ. Что это, зачем мы обрабатываем исключения, типы, иерархия, вопросы нехватки памяти на обработку и т.д.
В целом... материал полезен, НО. С одним большим НО. Он полезен для тех, кто уже что-то смыслит во всех этих вопросах. Выучить вопросы по этому видео нереально. Если попадется вопрос, о котором ты не слышал (для меня это оказались прокси и Programmatic TM) то ничего не понятно от слова совсем.
Но как вариант для прогонки перед собесом - вполне себе нормас. Как ориентир служит неплохо. Всем советую.
Сейчас прохожу собеседования, за последнюю неделю было четыре, и ни на одном из них про исключения не спрашивали.
По поводу выучить вопросы по видео... Такие видео скорее для людей, которым нужно обратить внимание на темы, которые следует освежить перед подготовкой к интервью и держать в памяти "в особой готовности". Т.е. понимание этих тем как бы подразумевается.
@@1986sunlight как успехи на собеседованиях? взяли на работу?
@@Silver-Parallaxis нет, из 7 собеседований 0 офферов 🙂
@@1986sunlight, жаль(( но все будет норм)
@@Silver-Parallaxis да я особо не спешу )
HashSet нужно итерироваться?
автор ,промежуточные стрим операции не модифицируют стрим, а возвращают новый - это очень важный аспект
Я опытный, но стараюсь не говорить Не знаю. Наводящие вопросы обычно приводят к правильному ответу.
В HashSet нужно итерироваться??
Речь про стримы и джава 8, а потом внезапно permgen и привет 7я?
C java8 Perm Gen заменен на Metaspace, если я не ошибаюсь
не ошибаешься)
2:42 серьезно оборачивает, может даже укутывает,
нужно единственое сказать что есть статисеские масивы и динамичские и расказать в чес разница
Качество записи оставляет желать лучшего)) но за видео спасибо)
20:31 MetaSpace с 8 джавы
Вектор это деприкейтед класс
Зуб даете что деприкейтед?
С Чего это ArrayList медленнее ?
Это, скорее, синтетический вопрос, который могут задать на собеседованиях для выяснения понимания работы коллекции ArrayList под капотом.
Так как ArrayList является классом, внутри экземпляра которого хранится обыкновенный массив Object[], то доступ к коллекции через метод get() добавляет в стек вызовов еще несколько методов, прежде чем получится объект по индексу из внутреннего массива, что ТЕОРЕТИЧЕСКИ накладывает доп расходы на процессорное время.
+ Обычные массивы, хранящие примитивные типы, хранят значения в памяти последовательно, в то время как ArrayList оперирует только со ссылками на объекты (включая обертки над примитивами).
perm gen заменили давно уже на metaspace
12:36 функциональные интерфейсы появились в жаве относительно недавно ) народ массово переходит на java 17 в проде. А для кого-то java 8 это "недавно"
А что не на 21? Отстаете однако. Java существует очень-очень давно. Еще до твоего рождения. и прикинь с 8 по 21 версию весь этот гиперпрыжок произошел за последние 8-10 лет. Каждый год новая версия. Пока пишется один проект (а для ентерпрайз это 5 лет легко), выходит с десяток версий java.
2:26 Что-то сильно сомневаюсь что будет вообще какая-то разница. А если и будет, то на какие-нибудь тысячные доли процента и то будет пропадать когда jit заинлайнит вызовы методов ArrayList'а. Крч надо мерить. Чаще разницу можно будет увидеть на массивах с примитивами и и коллекциях, там да, там боксинг. Но опять-таки возможно jit на столько умён, чтобы выбросить массив объектов и заменить него примитивным.
А вообще переходите на скалу)) Там можно инстанцировать массив generic типа и если наша самопальная коллекция будет специфицирована Int'ом, то мы получим прям реально jvm'ный int[].
Но вообще, конечно, этим на скале никто не занимается.
Качество звуковой дорожки ниже всякой критики
Макар макаров
Каждый раз когда кто-то пытается мне на ютубе рассказать с умным видом, то что уже было разжевано до него "эээкая и ааакая через слово" В мире грустит один грамма-котэ. >.
аэаэа эааэаа ааааэаэаэ
А почему о паттернах то не поговорили
Не совсем к Java относится, можно отдельно обговаривать касательно всех языков. Возьмем на заметку в будущих видео
Квалификация разработчика НЕ определяется на техническом собеседовании. Когда я бьіл мидлом у меня в менторинге бьіл один конь, которьій бьіл синиором. Уже стремно, не правда ли? Он без смазки на полированном легке прошел собеседование (если что - собеседование проводил не я) лишь только потому что преподавал всю єту премудрость в какой-то платной школе it-альянских технологий. Даже после окончания испьітательного срока он не смог толком закрьіть ни одну таску без посторонней помощи. И ушел (ок его поросили уйти, кароч его ушли) с проекта через месяц после окончания испьітательного срока. Если что - єто не мой гєп: другие миддл и джун чуваки после того как я вводил их в курс дела прикладной области без проблем решали проектньіе задачи на 3-й месяц работьі в тиме. После того как заказчик решил вьіпендрится и устроил рамп-даун - вся тима разбежалась, разбежался и я. Я подсмотрел вопросьі на собеседование для синиоров в сети и прошел собеседование в другую компанию на синиора лишь только потому, что знал ответьі на те вопросьі. Я уже четвертьій год работаю синиором в єтой компании, хотя по сути им не являюсь.
Прошел собес + выполняешь таски = похеру всем кем ты себя считаешь, а кем нет. Маржа с тебя просто космическая. Я в своей конторе знаю сколько стоят мои рабочие часы - я будучи никем с зп 60к заработал конторе порядка ляма чистыми, с учетом моей зп и налогов за примерно полгода. Мое обучение и все прочее окупилось за 2 года работы 10+ раз. Не знаю какие затраты на все остальное у них, но как минимум 2 раза моя зп точно окупается, даже когда моя зп уже не 60к совсем.
В этой области из воздуха берется польза. Даже если тебе переплачивают на 30-40% это не мешает им окупать тебя 2-3-5 раз, в зависимости от прикладной области.
Вы не понимаете, как устроен hashmap, то что вы рассказываете - неправильно.
Для 7 джавы всё верно. В чём он ошибся?
очень раздражает мычание "ааа", "мммм"
Довольно слабо. Не хватает глубины изложения материала. Автор либо владеет материалом не достаточно глубоко, либо просто не подготовился хорошо для записи данного видео.
Я извиняюсь. Но формирование высказываний настолько кривое и не полное, что смысла в ролике нет.
Все равно польза есть. Можно использовать как план вопросов. Где пробелы, заполнять из других источников. Рассчитывать на такие видео, как полноценный источник информации не стоит. Это же не лекция, а в первую очередь пример вопросов и потом уже пример ответов.
Материал полезный, но как же ты заколебал мычать, чвяркать и кряхтеть. Прописывай сценарий себе заранее, чтобы каждые 5 секунд не слушать "ааа" "ммм"