Тестовое собеседование Java разработчика #22 - Николай Оськин
Vložit
- čas přidán 3. 07. 2024
- Кандидат - будущий Java разработчик с большим опытом изучения и интересным путем в разработку - Николай Оськин.
Николай профессиональный музыкант и преподаватель, который много лет увлекается программированием и в последние годы активно занимается изучением Java стека.
Материалы для разработчиков:
proselyte.net/
Телеграмм канал для общения:
t.me/pse_club
00:00:00 Знакомство
00:10:30 Ключевое слово final, назначение и варианты использования?
00:15:50
Значения переменных по умолчанию - что это и как работает?
00:20:31 Иерархия Collections API
00:30:14 Класс TreeMap - какая структура данных и алгоритмические сложности базовых операций
00:35:07 Иерархия исключения в Java, их типы и способы их обработки.
00:41:51 Что делает ключевое слово volatile?
00:45:27 Что такое Future? Что такое CompletableFuture? Какие задачи они решают?
00:48:15 Решение алгоритмической задачи.
00:54:18 Что такое нормальная форма БД? Виды и мотивировки приведения БД к нормальной форме?
00:58:00 Что такое JDBC?
01:01:50 Что такое statement в контексте JDBC? Виды и отличия.
01:04:43 Что такое Hibernate? Что такое JPA?
Их отличия.
01:06:40 Что такое N+1 SELECT проблема?
01:09:44 Что такое REST API?
01:12:12 Ответы на вопросы кандидата.
01:21:21 Финал
Ссылка на страницу с разбором данного интервью:
proselyte.net/mock-interview-22/
Здравствуйте, я конечно НОЛЬ в программировании, но мне кажется в задачке со словами, а точнее в решении есть баг. Дважды встречается L. Там 3 строки в массиве, а если будет 10К?? По-моему быстрее будет работать решение, если сначала в первом слове убрать повторения(то есть L), а потом выполнить решение. Ибо второй проход по одной и той же букве займёт лишнее время! И плюс, после удаления повторений(буквы L), мы получим строку bela, а значит наш новый массив будет содержать 4 символа, то есть можно создавать пустой массив в 4 символа, а не в 100, так как в лучшем случае будет совпадение максимум по 4 буквам..
@@visalook убрать дубликаты получится только за линейное время. Поэтому прироста в производительности я не вижу. Спасибо ю.
result.add(Character.toString((char)('a' + i)));
можно написать проще:
result.add("a" + i);
Что-то у Вас странное описание N+1 проблемы.
Вы пишете, что эта проблема возникает только для Many-To-Many и заключается она в том, что для каждой из N сущностей с одного конца M-M связи выполняется один дополнительный запрос для сущностей с другого конца ММ связи.
Из того что я знаю об этой проблеме: она может возникнуть для любой связи, даже для 1-1 и возникает она когда fetch=EAGER, т.е. когда мы запрашиваем список сущностей с одного конца связи -- это первый запрос, а в довесок выполняется N дополнительных запросов - по одному для каждого результата из первого запроса.
Разница заключается в том, что в Вашей формулировке N - это количество данных, а 1 -- дополнительный запрос, в моей -- и N и 1 -- это количество запросов, а M-M является частным случаем.
Кроме того, Вы указали, что fetch=EAGER решает проблему, но на самом деле именно это ее и порождает (тем более, что EAGER вообще-то стоит по-умолчанию), а вот решает как раз таки LAZY.
Два других способа решения N+1 проблемы: EntityGraph и join fetch, оба способа "объединяют" основной и дополнительные запросы в один единственный запрос.
EntityGraph использует "left join", join fetch -- "inner join".
С EntityGraph не получится подгрузить несколько коллекций - хибернейт (проверено на версии 5.5.3) выбросит соответствующее исключение.
Здравствуйте!!! Узнаю себя. Мне 54 года. Джавой заболел в 2020 году. С тех пор почти 3 года день в день учусь этому гениальному языку программирования. Много чего умею и сделал..Даже удалось попасть в ЕПАМ в лабораторию, но ввиду войны, через полгода пришлось пока сесть на внешний бенч с неизвестным результатом..... Николай, Вы не одиноки.!!!!!!!!!! Есть еще такие же сумасшедшие.... Поставил бы 700 лайков, но пускает только поставить один.
Удачи вам!
@@EugeneSuleimanov Вам также удачи. Вы делаете очень хорошее дело. Кроме того, Вы очень грамотный специалист и довольно сильно отличаетесь от общего содержимого Ютюба.... 😀
Спасибо! Дорогу осиливает идущий!
ха-ха я в 36 годиков с 4 годами опьіта ( только на бумаге ) боюсь что старьій!
@@JavaDevOld Основна масса в ютубі не інженери, ось чому є відмінність
Евгений, спасибо за видео👍👍👍
Николай живое доказательство, что возраст вообще не помеха!!!
Спасибо за отзыв!
Ура! Новые видео! Спасибо, что не бросаешь канал)
Спасибо за отзыв!
Спасибо огромное за видео! Очень ждали! Не пропадайте, Евгений)
Спасибо за отзыв 😊
Постараюсь не пропадать
Спасибо огромное . Очень ждали нового видео.
Спасибо за отзыв!
Евгений, спасибо за видео, с возвращением!
Спасибо!
Очень интересно, спасибо Евгений, спасибо Николай
Спасибо за комментарий!
Евгений, спасибо за Ваш труд!
Спасибо за отзыв!
ооо, с возвращением!спасибо за видео!) Николаю удачи, должно все получиться.
Спасибо за отзыв :)
Евгений, с возвращением) Всегда интересны твои собеседования))
Спасибо за отзыв :)
Круто! Давно ждал нового видео! Спасибо!!!
Спасибо за комментарий!
Евгений, спасибо. Очень ждал собеседования от вас
Спасибо за отзыв :)
Ого, какая крутая рубрика к нам возвращается!
Ещё не смотрел, но уверен, что будет интересно. Лайк заранее. =)
Спасибо 😊
Евгений, добрый день.
Рад что вы вновь в строю :)
Спасибо :)
ураааа,давно хотел посмотреть новое мок собеседование с тобой,Женя спасибо)) Николай красавчик
Спасибо за отзыв :)
классно получилось! Николай молодец!
Лайк не глядя )))
Спасибо!
Легенда вернулась!
Спасибо за отзыв 😊
Особенно круто в Николае то, что он не зная некоторых вещей, доходит до правильного ответа логически, исходя из того, что он знает.
Да, это крайне важная черта.
Евгений вернулся! Ура 🙌
Спасибо за комментарий 😊
Ура, новый выпуск
Уже соскучился
Спасибо за отзыв!
Евгений! Безумно рад видеть!)
Спасибо за отзыв!
Евгений, спасибо большое за ваши видео! Они супер, одни из лучших на ютубе. Тоже столкнулась с большим разнообразием настроек security, впадаешь в ступор маленько. Настроила в основном по вашему видео, но попадали тесты контроллера. Теперь вот ищу как их настроить, все еще осложняется одной из последних версией spring boot у меня и отличиями в конфиге.
Спасибо за отзыв! Сейчас как раз в работе видео по SpringSecurity для версии 3.0.0 и выше с использованием SecurityFilterChain. Надеюсь, что смогу опубликовать в ближайшее время.
Евгений, классное видео. Снимайте побольше таких собеседований! Только вопросы задавайте, пожалуйста, разные в каждом выпуске.
Спасибо за отзыв!
Постараюсь :)
Спасибо за видео)
Спасибо за отзыв :)
Женя, рад твоему возвращению! Очень ценный контент у тебя. Где пропадал?
Спасибо, Юра!
Было чем заняться )
Работа, переезды и т.д.
Жека, респект за видео!)
Успехов тебе 😊
Спасибо за комментарий :)
Спасибо за видео! Помогает бороться со страхом собесов)
Спасибо за комментарий!
лайк лайк.
Спасибо, Женя.
Спасибо за комментарий, Серёга!
Спасибо большое
Спасибо за комментарий :)
Братан, хорош, контент в кайф! Давай, давай, так держать
Вижу Женю - ставлю лайк😎 спасибо за такие полезные видосы!
Спасибо за отзыв :)
1:08:50 отдельный респект Николаю за то что обратил внимание на то что, логичнее было бы называть проблему -- 1+N 😊
Ноги у названия этой проблемы, конечно, растут от того, что мы получаем не 1 запись, а N+1 записей, т.е. акцент на том, что сильно больше чем хотелось.
В общем, эта борьба формулировок из разряда: пока работаешь на уровне теории -- важно понимать что у от куда берется, а когда уже работаешь с практикой и есть понимание теории -- становятся более важными последствия этой проблемы.
Как следствие, опытные люди и новички разговаривают на разных языках, новички либо заучивают наизусть без понимания сути, либо разбираются сами и только со временем переучиваются "называть по взрослому".
Респект за терпение Евгению ❤
Спасибо за комментарий!
Крутой мужик!❤
Спасибо за комментарий!
Очень интересное видео👍
Спасибо за отзыв!
Ура 🎉🎉🎉!
Спасибо за комментарий!
наконец-то 👍👍👍
Спасибо за комментарий :)
Мужик молодец. Уважуха
Спасибо за комментарий!
О, собесы)
Спасибо, Женя)
Спасибо за отзыв :)
Евгению спасибо. Николаю могу посоветовать четко различать спецификацию и реализацию. В первую очередь изучать спецификации потенциально используемех в своем коде объектов, не закапываясь на первых порах в детали реализации. Изучить только плюсы и минусы конкретных реализаций. Это даст больше пользы для конкретной работы.
Большое спасибо за комментарий!
Евгений, спасибо вам, как всегда вас радьій видеть!
У меня к вам такой вопрос: Как получать на работе качественьій опьіт, какие я должен совершать действия, как должен думать? Потому как на бумаге опьіт естт а в голове нет, как будто штаньі протирал!
Спасибо!
Спасибо за отзыв!
Здесь крайне зависит от самого проекта. Если проект не позволяет выполнять сложные инженерные задачи, то стоит посвятить время самообразованию, а когда будете чувствовать себя более уверено - можно начинать искать другой проект.
Еси же проект сложный и на нем не дают комплексные задачи - стоит обратиться к руководителю проекта и обсудить план развития. Все сказанное выше - только мое мнение, основанное на моем опыте.
Ещё раз спасибо за отзыв!
это же Вассерман). У тебя Евгений отличное терпение. Николаю чуть java подучить и уже может быть senior
Спасибо за отзыв!
каааайф
Вот это восстание из пепла!!!
Спасибо за комментарий 😊
1:14:50 Евгений, поделитесь в описании. Всем интересно.
Конечно, так и планируется :)
Классный дядька, во многих аспектах понимает лучше зеленых выпускников Вуза, ещё одно подтверждение тому, что мозг не стареет)
Спасибо за комментарий!
Да, Николай достойный кандидат :)
Ну задачку решил. Правда через 2 for.Через collections не вышло. Филтр почему то не любит контаинс. Зато любит allMatch.
Через стримы - наиболее удобный вариант, ИМХО
О чувак, как и я - музыкант! Правда, у меня, все-таки, хоть какое-то айтишное образование, диплом о переподготовке имеется и математическая база))
А вообще многопоточка очень спорная тема для джуновского интервью) Если учитывать какие задачи будет решать джун
Краге зависит от проекта. Если весь проект завязан на многопоточности, то и задачи будут соответствующие.
дякую за цікаве інтерв'ю
Дякую за відгук!
Смотрю секцию рассказ о себе, это невыносимо
На 32:30 - про деревья есть отличное видео, в том числе и про красно-чёрное, с объяснением что такое левый/правый поворот:
czcams.com/video/0BUX_PotA4c/video.html
Спасибо за полезную ссылку!
Круто, но хотелось бы более опытных кандидатов. Хотя тогда наверное просмотров меньше будет
Спасибо за отзыв!
Людям с небольшим опытом тоже нужно давать возможность подготовиться :)
Но на будущее планируются собеседования и с более опытными.
На канале 20+ видео где есть иопытные ребята с коммерческим опытом )
@@voker8465 Они уже все давно просмотрены, хочется еще мидлов
Какой же велеречивый дядька. Выдает кучу словесного мусора, отвечает на вопросы, которые у него не спрашивают.
Евгений, преклоняюсь перед вашим терпением!
В общем было понятно по вступлению - интервью будет долгим и тяжелым)
В любом случае благодарю Николая за смелость, а Евгения за такой прекрасный контент
Функционально JPA первичен, Хибернейт - реализация. Но исторически JPA был списан с Хибернейта
Полностью согласен :)
thanks
Спасибо за комментарий!
В один прекрасный день в собеседования на Java разработчика будут включать разбор какого-нибудь класса, анализ его со стороны принципов чистого кода, а не сухую прогонку по джава кору или решение алго задачи по типу нахождению числа Фибоначчи. Но всё равно, спасибо за видео.
Спасибо за комментарий!
Ех, вот бы тоже попасть на интервью... А то с 1 годом опыта работы никто не зовет(
Сколько лет, если не секрет?
@@JohnDoe-km7ch 25, а почему спрашиваете?
Если интересует mock интервью - напишите не почту - обсудим детали.
Год коммерческого опыта - это уже немало
@@themistocies50 интереса ради. Я думал, вы возрастной и неопытный. Странно, что в 25 с годом опыта не предлагают. Я начинал в 32 и без опыта/3 мес опыта и не испытал сложностей. Если не зовут на собеседование, то ищите проблему в резюме.
@@JohnDoe-km7ch Можно с вами как-то связаться? Есть пара вопросов.
Придумал вопрос для собеседования: "почему abstract класс не может быть final" или "может ли абстрактный класс быть final" или "какой класс не может быть final и почему" 😁
Хорошо, что ковыряется в дебрях всего и имеет кучу заковыристых вопросов. Будет толк при желании. Спустя 13 лет java лично мне уже поднадоела, ушел в сторону веб/ангулара/к8с/девопса
вот это них*я себе
Реинкарнация интервьюера мечты
Пастор за комментарий :)
Люди старой школы изъясняются яснее. Не то, что мы) Николаю удачи!
Спасибо за комментарий!
а я жава разработчик и сижу сутками учу гармонический минор и обыгрывание альтерированого доминант септаккорда, вот такой вот круговорот музыкантов-джавистов в природе...
Да, превратности судьбы )
Хмык - этих аккордов просто учить - бесполезно. В музыке все наоборот- немного теории, и куча практики. И чем меньше думаешь - тем лучше получается)
@@oskinnick Пьяные рокеры рулят )
Канидат настолько хорошо держит планку, что иногда сказывается что это не собеседование, а диалог двоих программистов на интересующую тему. Спасибо за видео.
Спасибо за отзыв!
Доречі задача цікава. На літкоді вона позначена як easy, хоча я б її відніс до medium. Якщо не знати, що char 'a' це 97, а b 98 і т.д, і ти це не застосовував ніде, то швидко реалізувати ідею з int[26] не вдасться.
Да, одна из моих любимых задач - позволяет увидеть не только знание алгоритмов, но и понимание кодировок кандидатом.
Это видео было бы полезно еще хоть кому-то кроме интервьюируемого, если бы потом сам интервьюер ответил бы на эти вопросы. Именно не так что - прочитайте, а вот четко и идеально как он бы хотел услышать.
Так и сделано на большинство во вопросов, если не ошибаюсь. Также в течение 2-3 дней подготовлю список рекомендаций к изучению и ответы на вопросы.
@@EugeneSuleimanov я без претензий, давно вас смотрю и все мок интервью смотрел, но в целом такой тенденции нет. Я имею ввиду что я знаю где почитать, но чоткого ответа в два-три предложения ведь нету, это зачастую очень распространение вопросы, дискуссионные.
@@Gribozhuy спасибо
Не соглашусь. Я сам преподаватель. В таком деле намеки и/или подсказки учителя намного важней прямых ответов - полноценное усвоение материала может быть только самостоятельным. Если преподаватель не оставляет простора для маневра, дает полностью исчерпывающую инфу - материал не до конца усваивается учеником. Получается, что вы в итоге владеете показанным вам приемом, но этот прием не стал вашим собственным пережитым опытом.
Евгений очень хорошо знает свое дело.
Двоякое впечатление от данного собеседования. Надо отдать должное кандидату за старание и стремление, но курить на собеседовании - это неуважение к оппоненту и зрителям.
Николай, вероятнее всего, очень нервничал - поэтому и закурил :)
вообще странно видеть, что человек, изучающий джава с 20 года, не знает, что такое трисет
отакої
Привіт!) Радий бачити тебе, слава Україні! Гарних проектів і саме головне здоров’я !
Дякую за відгук!
Вам також :)
В составе России.
Кыш отсюда дурачок в окоп Артемовска