Тестовое собеседование Java разработчика #24 - Никита Ким

  Рет қаралды 9,646

Eugene Suleimanov

Eugene Suleimanov

Күн бұрын

Кандидат - будущий Java разработчик - Никита Ким.
Никита изучает Java стек и планирует в ближайшее время стать backend инженером.
Материалы для разработчиков:
proselyte.net/
Телеграмм канал для общения:
t.me/pse_club
00:00:00 Знакомство
00:01:33 Что мы знаем о методе main?
00:04:18 Что такое массивы в Java?
00:06:14 Какой класс реализует динамический массив в Java, и что мы можем про него рассказать?
00:12:22 За счет чего NIO обеспечивает неблокируемый доступ к ресурсам?
00:14:00 Как работает CopyOnWriteArrayList
00:15:00 Что такое Stream в контексте Stream API?
00:16:18 Какие отличия между методами map и flatMap?
00:19:15 Что такое функциональный интерфейс?
00:20:03 Что такое лямбда?
00:24:00 Что такое ExecutorService, для чего он нужен и какие реализации у нас есть?
00:25:45 Что “скрывается под” буквой O в SOLID?
00:27:19 Какие отличия между шаблонами ООП Стратегия и Состояние?
00:28:13 Решение алгоритмической задачи
00:41:33 Что такое группировка в БД? Примеры.
00:49:00 Что такое ORM и какие есть реализации?
00:50:14 Какие уровни кэширования есть в Hibernate?
00:53:05 Как происходит запуск Spring Boot приложение?
00:55:10 В чем разница между юнит и интеграционными тестами?
00:57:07 Что такое Docker?
00:58:02 В чем отличия между Docker и виртуальной машиной?
00:58:49 Ответы на вопросы кандидата.
00:59:23 Финал.

Пікірлер: 84
@ibraim3197
@ibraim3197 Жыл бұрын
не бывает сортировки за log(n), лучший алгоритм как раз n*log(n)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Да, вы правы - здесь ошибка. Сложность по времени - N log N Сложность по памяти log N Спасибо за уточнение.
@LacqueredNoCap
@LacqueredNoCap Жыл бұрын
Уточнение. За O(n*log(n)) отрабатывают сортировки сравнением. Есть такие алгоритмы сортировки подсчетом, как Counting Sort и Radix Sort, которые могу отработать за O(n) при определенных ограничениях на входные данные (диапазон значений, символьная длина значений). Буду рад уточнению на свой комментарий
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
@@LacqueredNoCap Спасибо за комментарий :) Если мы говорим про числа, и конечно radix sort будет лучше. В то время, как тот же quickSort - универсальный алгоритм.
@user-bn9wc8db6s
@user-bn9wc8db6s Жыл бұрын
Евгений, спасибо за Ваш труд👍👍👍 Хотел бы пожелать всем удачи и терпения💪👍👍
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
@@user-bn9wc8db6s спасибо за отзыв!
@user-lx4dc1ls3e
@user-lx4dc1ls3e Жыл бұрын
Не успел посмотреть ролик!!! Но нет сомнений в качестве!!! Просто Евгению с ходу ЛАЙКОС👍👍👍
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за комментарий :)
@user-mt2if1ht8n
@user-mt2if1ht8n Жыл бұрын
Главная страница на ютюбе в роликах Евгения - это прекрасно, значит ролики идут стабильно. В целом у меня это проф деформация какая то. когда на главной только видео по жаве и расту чувствую себя комфортно )) Евгений, вы знаете,что делаете большое дело. Спасибо! Не пропадайте пожалуйста
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Большое спасибо за отзыв :)
@voker8465
@voker8465 Жыл бұрын
Спасибо большое, Евгений, что снова начали делаеть видео и писать статьи на сайте . Очень понравилось про jvm и volatile 😊
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@user-yt6vv9vf3x
@user-yt6vv9vf3x Жыл бұрын
Евгений, в очередной раз спасибо. Классные вопросы подбираешь. Есть что мне нужно повторить и более детально разобрать.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@Batyrbala
@Batyrbala Жыл бұрын
Каждое видео - на вес золота для начинающих! Спасибо за труды, сенсэй!)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@JavaDevOld
@JavaDevOld Жыл бұрын
Евгений, здравствуйте. Готов снять свою шапку, скажу более - свой мозг, перед Вашим терпением...... Парнишка очень волновался, но все-таки думаю, что ему нужно больше решать логических задач на смекалку и упорядочение мышления..... И еще раз убеждаюсь, что не все очевидное является целесообразным. Понимание того, как работает комп необходимо..... Благодарю Вас за Ваше потраченное время. получил удовольствие от Вашего урока...
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@askhat1654
@askhat1654 6 ай бұрын
И операционные системы и модель OSI тоже не помешает
@SvetlanaCapri
@SvetlanaCapri Жыл бұрын
Спасибо большое за отличные ролики.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@user-mx8cs7ox9m
@user-mx8cs7ox9m Жыл бұрын
Интервью очень понравилось) Никита крут Также было видно эмоции/реакции Евгения, в этот момент понимаешь, правильно ли отвечает Никита. Особенно с вопросом про docker, что это виртуальная машина. Ведь у Евгения есть отдельное видео посвящённое Docker'у, где он специально подчеркивал, что Docker - не виртуальная машина =) Спасибо за видео, жду новое)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@nikitakhmileuski3639
@nikitakhmileuski3639 Жыл бұрын
Спасибо за видео!Видно было что Никита переживал) особенно на sql.Сразу вспомнил себя на первых собеседованиях.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@alexanderkomanov4151
@alexanderkomanov4151 Жыл бұрын
Спасибо вам большое!
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@alenache1
@alenache1 Жыл бұрын
огонь 🔥🔥🔥
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо
@alevadnaya
@alevadnaya Жыл бұрын
Спасибо за видео!
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@user-wd3zb7bb6x
@user-wd3zb7bb6x Жыл бұрын
Спасибо за видео :)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@user-og2ti2wd5o
@user-og2ti2wd5o Жыл бұрын
гарне інтерв'ю. Дякую за роботу
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Дякую за коментар!
@axelrod4840
@axelrod4840 Жыл бұрын
дякую за відео, освіжають память та можна дізнатись прогалини в своїх заннях)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Дякую за відгук :)
@divergenny
@divergenny Жыл бұрын
Спасибо большое
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@flatmapper
@flatmapper Жыл бұрын
Спасибо
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за комментарий!
@floydzxc
@floydzxc Жыл бұрын
Интересно и познавательно смотреть. Парень неплохо отвечал, но очень сильно посыпался на SQL, там надо либо подучить я думаю, тема не такая сложная, либо просто освежить память т к он хорошо давал ответы на другие более сложные вопросы)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@ioanntrapeznikov
@ioanntrapeznikov Жыл бұрын
Реакция на ответ на 42:26 топ )))
@MrSashaZykov
@MrSashaZykov Жыл бұрын
На 27:16. Можете пояснить почему мы нарушаем принцип Лисков, ведь класс другой и метод новый (не наследуемый). В этом классе же все методы родителя остаются и можно подставлять объект класса вместо родителя, не пойму в чем потенциальная опасность. Да и в чем тогда смысл наследования если не могу метод добавить)
@LacqueredNoCap
@LacqueredNoCap Жыл бұрын
Если в данном примере мы обращаемся к объекту класса В по интерфейсу класса А, то LSP не нарушается. Потенциально может быть нарушен SRP, если новый метод будет предназначен для взаимодействия с другим актором
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Мы не нарушаем - мы потенциально можем его нарушить, но для этого нужно очень постараться. Пример, есть 3 класса A B extends A C extends A В класс C мы добавляем публичный метод test100500 и в классе-клиенте "завязываемся" на него. После этого - заменить C классом B без рефакторинга мы уже не сможем.
@MrSashaZykov
@MrSashaZykov Жыл бұрын
@@EugeneSuleimanov Спасибо за пояснение. Я вроде так и представлял, что в задании имелось в виду. Представлял принцип Лисков, как вместо родителя пихаем наследника, а вместо наследника пихать родителя это ваще что-то другое и так не надо никогда)
@LacqueredNoCap
@LacqueredNoCap Жыл бұрын
@@EugeneSuleimanov Пример хороший, но он не относится к LSP, т.к. B и C не связаны между собой иерархией наследования, а LSP как раз про это
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
@@LacqueredNoCap но они связаны с классом А, если я не ошибаюсь - это относится к LSP
@user-qr4uy2dt5z
@user-qr4uy2dt5z Жыл бұрын
Вопрос: каков ваш фидбек? На момент интервью вы бы взяли такого инженера на позицию Junior, если нет то что нужно подтянуть, мне почему то кажется что до февраля 2022 с таким уровнем и на junior+ можно было устроиться, сейчас требования растут постоянно.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
На позицию trainee-junior позицию вполне можно брать кандидата. Немного подтянуть некоторые моменты - и можно было бы ставить на проект.
@user-hedonist2020
@user-hedonist2020 Жыл бұрын
Евгений, частные уроки даёте?
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
"Ответил в ЛС" © :) Если серьезно - напишите. пожалуйста, на почту proselytear@yahoo.com или telegram: @proselyte Сможем обсудить более детально.
@engend3405
@engend3405 Жыл бұрын
Топ ) 20:24:00 поправь плз )
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Сделано, спасибо за исправление :)
@overdrive5772
@overdrive5772 Жыл бұрын
Спасибо за видео, кину мою реализацию алгоритма) public static boolean isPalindrome(String s) { for (int i = 0; i < s.length() / 2; i++) if (s.charAt(i) != s.charAt(s.length() - i - 1)) return false; return true; }
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв :)
@LacqueredNoCap
@LacqueredNoCap Жыл бұрын
Еще нужно не забыть добавить исключение всех небуквенных значений из строки и приведение ее к одному регистру. Я бы сделал стандартно через Java API: String generalizedString = s.toLowerCase().replaceAll("[^a-z]", "");
@famouSNatan
@famouSNatan Жыл бұрын
@@LacqueredNoCap Вообще написано, что эти чары содержат как буквы, так и числа. Objects.requireNonNull(s); String result = s.toLowerCase() .replaceAll("[^a-z0-9]", ""); if (result.isEmpty() || result.length() == 1) { return true; } return new StringBuilder(result) .reverse() .toString() .equals(result); Ну или можно сделать с циклом, первое решение с ним и сделал. Я когда решение парня увидел, подумал, что может я чего-то не понял и нагородил xD Ан нет)
@user-qy2ik8ju3s
@user-qy2ik8ju3s Жыл бұрын
Есть пара вопросов к реализации проверки на палиндром. Или я чего-то не понимаю, или нет перехода к единому регистру, ведь по условию 'f' и 'F' -- одинаковые буквы, но в вашей реализации они будут считаться различными. Также, по первому примеру видно, что пробельные символы вообще учитываться не должны, но в вашей реализации это не учитывается, т.е., я предполагаю, что на первый пример будет выведено false даже если бы в нём все буквы были одного регистра
@user-qy2ik8ju3s
@user-qy2ik8ju3s Жыл бұрын
Также, условие в цикле while можно сделать строгим
@MrRomanvideo
@MrRomanvideo Жыл бұрын
А почему тогда в хешмапе при 0.75 увеличиваем по той же логике, что остальные будут простаивать!? Типа запас на неточность хэшкода!?
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Потому что при большом количестве заполненных бакетов мы начинаем терять время на поиск бакета для нового хешкода. Поэтому имеет смысл расширять при заполнении 75%. В динамическом массиве такой необходимости просто нет :)
@MrRomanvideo
@MrRomanvideo Жыл бұрын
@@EugeneSuleimanov а разве индекс банкета не однозначно определяется хэшкодом?
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
@@MrRomanvideo да, вы правы. Нужно было написать - новый хеш-код :)
@shluhogon_42
@shluhogon_42 Жыл бұрын
Так тут же вопрос производительности. Если делать лод фактор, равный 1, то к моменту заполнения всех корзин мы все чаще будем поучать коллизии. И наоборот, если сделать это значение, например 0,5, то будем терять время на неоправданно частом перестроении структуры. 0,75 - оптимальный коэффициент
@JavaDevOld
@JavaDevOld Жыл бұрын
Евгений, простите за беспокойство. У меня есть вопрос по многопоточности... Никто не смог на него определенно ответить. Если не будете против, хотел бы задать его Вам..... СПС))))))
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Конечно - пишите сюда иди в ТГ - попробую помочь :)
@JavaDevOld
@JavaDevOld Жыл бұрын
@@EugeneSuleimanov СПС. Вопрос будет длинный
@maxmus91
@maxmus91 Жыл бұрын
это собеседование джуна :?
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Да, верно
@AlejandroFedorov
@AlejandroFedorov 11 ай бұрын
Жень, вот совсем не круто записывать видео с русскими в то время, когда война в твоей стране. Я понимаю, что они могут никакого отношения не иметь к происходящему и вообще "протиф путина", но все же это слегка аморально и цинично с твоей стороны помогать им в данный момент.
@fara0n333
@fara0n333 Жыл бұрын
Hi! Good job 👍 It’s interesting 😎
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Thank you :)
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Thank you :)
@ktotam8913
@ktotam8913 Жыл бұрын
мое убогое решение😪 class Palindrome { public static boolean isPalindrome(String str) { Pattern pattern = Pattern.compile("\\w"); Matcher matcher = pattern.matcher(str); StringBuilder stringBuilder = new StringBuilder(); while (matcher.find()) { String newStr = matcher.group().toLowerCase(); stringBuilder.append(newStr); } String s = stringBuilder.toString(); for (int i = 0, k = s.length()-1; i < s.length() / 2; i++, k--) { if (s.charAt(i) != s.charAt(k)) return false; } return true; } public static void main(String[] args) { System.out.println(isPalindrome("A car, A plan: A Panama")); //false System.out.println(isPalindrome("A c, A")); //true System.out.println(isPalindrome(" ")); //true } } ps. нет времени учить теорию наизусть, ментор задачами заваливает. когда смотрю, как ребята отвечают на вопросы, типа буква О в SOLID грусть, тоска, депрессия подкрадывается, времени не хватает на это учить пока что, но чтобы поднять настроение, вспоминаю, что опытные программисты создавали RUTUBE ))))))
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за комментарий! Если мы выделяем StringBuilder - проще просто вызвать у него reverse и сравнить строки после удаления «лишних» символов :)
@ktotam8913
@ktotam8913 Жыл бұрын
@@EugeneSuleimanov сорян, стараюсь руку набить на Pattern/Matcher)
@a.e.9880
@a.e.9880 Жыл бұрын
Странное ощущение когда со всем этим работаешь а территорию знаешь хуже😂.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Это норма :)
Super gymnastics 😍🫣
00:15
Lexa_Merin
Рет қаралды 107 МЛН
Luck Decides My Future Again 🍀🍀🍀 #katebrush #shorts
00:19
Kate Brush
Рет қаралды 8 МЛН
Жайдарман | Туған күн 2024 | Алматы
2:22:55
Jaidarman OFFICIAL / JCI
Рет қаралды 1,1 МЛН
Children deceived dad #comedy
00:19
yuzvikii_family
Рет қаралды 6 МЛН
Docker и Kubernetes глазами разработчика
2:46:22
Eugene Suleimanov
Рет қаралды 6 М.
Ключевые структуры данных
50:39
Eugene Suleimanov
Рет қаралды 6 М.
Super gymnastics 😍🫣
00:15
Lexa_Merin
Рет қаралды 107 МЛН