Макс,ты лучший,спасибо ! Как раз на этапе собесов и твой канал очень помогает и поддерживает ! С наступающим Новым Годом,пусть все мечты сбываются,цели строятся и достигаются,аудитория канала растет и здоровье с богатством никогда не покидают твой дом !
Сейчас собес на джуна - это редкий собес, на который ты попал, потому что уже имеешь коммерческий опыт. И тебя половину собеса спрашивают именно про опыт на проекте. И как минимум в 3 из 10 собесах за этот год я отвечал превосходно и меня не взяли за небольшую сложность выполняемых задач на работе - то есть явно нужен был джун+/мидл.
@@sergenine Нет. Есть часть теоретическая, джунские вопросы - отвечаю на всё. Часть по функциям на проекте - ну если у меня опыт к примеру полгода и соответствующие выполняемые функции, то я это и говорю "это делал, это то-то, это щупал в таком-то объёме". Меня могут как минимум: а) перебить по знаниям какой-то мидл или джун с 1,5 годами б) перебить по бабкам какой-нить талантливый студент, живущий у родителей.
Не знаю чего на парня наезжают, да местами проседал, но скидочка на стрес должна быть, главное не молчать а показать что ты думаешь а лайвкодинг сессии это просто мой ночной кошмар😢
По моему все хорошо) на половину вопросов ответил, направление решения задачи было верным. Подучить Спринг и коллекции и будет норм. Это часов 20 обучение
Интервьюер отличный! Всем бы таких. А то разные интервьюеры бывают.... А респондента можно брать на любую должность! Дополню. На какую позицию было собеседование?
Миша, ты молодец, все получится! У тебя уже есть хороший бэкграунд, поэтому продолжай в том же духе. Я бы посоветовал в каждую тему погрузиться чуть глубже, т.к. когда начинаешь понимать, что откуда берется - у тебя формируется общая картина, где все друг с другом согласуется, как "пазл складывается". Удачи! Макс, как всегда, красава!
Я с тестов не могу, мне глаза прям резало, когда он сравнивал, то значение, которое получил с тем значением, которое заапендил в стрингбилдер, вообще не понимаю, почему использовал StringBuilder, можно было просто String и обошлись бы без каста к стрингу, но я думаю, что человек просто волновался. Также странно, что вопросов про многопоточность не было или я где-то пропустил
Такой вопрос, в других мок-интервью на джуна вопросы обычно сложнее, иногда значительно, часто требуется знание тонкостей в работе. Да и область вопросов обычно шире, могут спросить про git, maven. Это у вас простые интервью или там сложные? :)
Нет сложных или простых интервью. Есть люди, которые знают или не знают ответы))) Любое порядочное интервью драйвится от потенциала и возможностей кандидата. Рекомендую посмотреть различные интервью с нашего канала. Там сложности и легкости хоть отбавляй))
@@Jetbulb Кстати, Макс, по поводу сложности, сейчас заканчиваю обучение на трейни, но никогда не видел в собесах вопросы про Кафку, Спринг Секьюрити, Докер, и другие сопутствующие сервисы. Или это я уже слишком глубоко копаю и джунам эти технологии пока не нужны?
@@Mr_Cats Хороший вопрос) - Как по мне вопросы по докеру нужны, это то с чем регулярно работаем - Spring Security опционально, поскольку там нечего делать и любой без опыта с задачей разберется за неделю. - Кафка, разве что общие вопрос (гарантии доставки, принцип работы, альтернативные решения, причины применения, масштабирование)
В продолжении вашего обсуждения - забавная ситуация сложилась в моем пет-проекте, когда в качестве ключа hashmap у меня используется mutable класс, который я по идее должен сделать final и соответственно immutable, но этот класс одновренно является @entity сущностью хайбернета, и по требованиям хайбернета не может быть final.
В таком случае надо переопределить метод hashCode() так, чтобы изменяемые поля не участвовали в генерации хэшкода. Как минимум, поле, помеченное аннотацией @Id, у вас неизменно и, скорее всего, оно генерируется у вас автоматически, не забудьте убрать на него сеттер.
Единственное я пока не понимаю. Вот у нас есть Бин синглтон, его класс должен быть потокобезопасный? Я так понимаю в спринге есть паттерн запрос на поток
Как будто современная java ни разу не про парадигму ООП, если не рассматривать DDD и прочий оверинжениринг. Среднестатистический java-проект как раз и представляет из себя классы-хранилища процедур, обрабатывающие данные, и всё, что в них(классах) инкапсулируется - это такие же классы процедур и адаптеры доступа к внешним интеграциям, хранилищам данных и т.д. Состояния не то, чтобы нет, - оно статично, неизменяемо. А данные у нас лежат в отдельных классах-моделях, которые редко имеют логику, потому что для реализации самых примитивных операций, даже между объектами-моделями одного типа, java-разработчики взяли привычку писать отдельную процедуру или целый класс, содержащий набор таких процедур, тем самым нарушая information expert, low coupling, high cohasion и т.д. ООП во всей красе.
Бро совсем на задаче потерялся. Я бы рекомендовал сначала написать как знаешь, лишь бы работало. А потом уже можно и рефактор (но зачем :D) Функция три ифа а чел ретерны на рандоме засовывает ( тоесть мысыль поетрял и делает уже сам не понимает что). Тут лучше выдохнуть и еще раз прочитать задание
Видно, человек, которого ты собеседуешь, как минимум, уже работал джуном, а может и не джуном, видно, где то...мое мнение, требования на собеседованиях к джунам сильно... завышены.
это точно на джуна???? как человек который сам по себе учит джаву - ради учит джаву (цели у самурая нет), очень удивлен что дал 90% правильных ответов и еще и задачку решил минут за 10... мне кажется что тут да же не стажер.
Никогда не понимал юнит-тесты. Вы меня хоть убейте. Говорят, что пока ты не напишешь тестики - ты не уверен, что всё работает правильно. ДжЮнит использую только чтобы запустить данные в метод и там уже дебагером прохожу и смотрю что происходит. Потому что если написать тут правильно логику и тестики эти сраные - всё равно нельзя сказать, что всё работает. ну вот банальные пример: мы ассёртим отправляя туда число 3 - всё ок. Но если написать в условие, там где (value % 3 == 0 && value != 9) тестик же пройдёт. Но в коде явная ошибка. Короче опять-таки - что с меня взять со свитчера с 1С, но юниты - это просто какое-то успокоение для самого себя и самообман. Ладно ещё интеграционные - там есть смысл. Но юнит - чисто чтобы было что затрекать в джиру. Типа целый день писал тестики. Итого делаешь работу и ещё тестики под неё подгоняешь. А потом, когда изменяется логика метода - ещё и переделываешь их. Всё при деле. Бабки в конце месяца на счёт упали. Наверняка я не прав, но пример выше даёт мне повод сомневаться.
Для меня тесты полезные, чтобы ничего не забыть. Т.е. в начале пишешь тесты под метод, а потом реализуешь. Но опять же, если забыл в методе проверку, то забыл и в тестах) Особенно если не уметь писать тесты, то очень просто сделать, чтобы они все прошли.
Есть же такое понятие, как процент покрытия тестами. в Вашем примере он будет критически низкий. Этот показатель так же можно проверить в IDE. IDE даже выделит Вам цветом те участки кода, которые не были задействованы в проверке. Доведите тест до 99% покрытия и будет Вам счастье понимания :) И, конечно, всегда проверки на крайние и нулевые, пустые случаи.
@@CatBlack-p2h Наверное это вы не поняли что я имею в виду. В конкретном коде процент покрытия будет 100%. Он затронет и проверку деления на 15 и на 5 и на 3 и исключение. И проверка на крайние нулевые вам не поможет если в первом условии есть логическая ошибка срабатывающая в каком-то отдельном случае.
Я вижу следующим образом. Взглянув на тесты, можно сразу сказать как работает класс или программа, то есть не обязательно лезти и разбираться в чужом коде. Тесты также позволяют проверить всевозможные варианты передачи параметров. Например написан метод, логика которого завязана с работой только с положительным числами, а что будет если передать отрицательное? Тесты полезны как для коллег, так и для себя смотрящего этот код через год.
@@mrpikls124 некоторые люди очень инертны) Можно сидеть годами на одном месте и не знать, что уровень зп на рынке уже совсем другой. А джуны более-менее жадные и знают рынок)
Ну в примере уже реализован dependency inversion: модули взаимодействуют через интерфейсы. В вопросе прозвучало три интерфейса и два поля - это задача на обобщение поведения. То есть предлагается создать контракт, который обобщает все три интерфейса, и типизировать поля по нему. Если мы говорим про контракт, то это Лисков.
зачем устраивать часовые проверки на собеседованиях, если проверил универ когда выдавал диплом? нечем заняться? на собеседовании нужно обсуждать вакансию и коллег, а не теорию лол
Для того, чтобы вы с этими коллегами на данной вакансии ХОТЯ-БЫ на одном языке говорили, и ты понимал процентов 60-70, о чём они там разговаривают. + Очевидно, что если ты знаешь - ты знаешь, и вряд-ли будешь сильно против того, чтобы у тебя уточнили лишний раз)
Вы из советского союза что-ли? Не знаю как сейчас в Украине и других странах совка, но по личному опыту могу сказать, что никогда бы не нашёл работу, если бы получал знания только из программы российского вуза. Да и оценка знаний это такая себе, тк большинству преподов пофиг и лишь бы закрыть семестр
Про проксю было бы неплохо добавить, что она должно именно менять логику поведения класса. Например, отменять вызов какого-то метода проксируемого класса, если пользователю меньше 18 (условно). А то иначе это уже не прокси, а декоратор, который просто навешивает доп. логику (например, логирование), а саму логику класса не меняет (то есть, если вызвать определенный метод у класса-декоратора, то мы уверенно можем сказать, что вызвался такой же метод с такими же аргументами у класса, который мы декорируем)
По ответам и тону видно, что парень чувствует в себе "мастера", но Макс так легко и с улыбкой вернул его на землю😄 Хороший видос получился
странно, такого не заметил
Тоже не заметил))
Самый крутой канал по джаве! Желаю всем встречать на собесах только таких доброжелательных интервьюеров как Макс :) Спасибо за видео!
Спасибо за видео, с таким интервьюером не отпадает желание учиться)
это точно
Уровень интервьюера как всегда на уровне, Михаил же пока сильно плавает , что-то слышал , что-то видел , но пока еще в самом начале пути, успехов!
Макс,ты лучший,спасибо ! Как раз на этапе собесов и твой канал очень помогает и поддерживает ! С наступающим Новым Годом,пусть все мечты сбываются,цели строятся и достигаются,аудитория канала растет и здоровье с богатством никогда не покидают твой дом !
собесы это ужас
Братан рановато пришёл конечно. Первый раз за все интервью Макса, когда реально подучиться нужно... и нехило так.😊
Сейчас собес на джуна - это редкий собес, на который ты попал, потому что уже имеешь коммерческий опыт. И тебя половину собеса спрашивают именно про опыт на проекте. И как минимум в 3 из 10 собесах за этот год я отвечал превосходно и меня не взяли за небольшую сложность выполняемых задач на работе - то есть явно нужен был джун+/мидл.
Если бы отвечал превосходно, взяли бы тебя на джуна+/мидла, не?
@@sergenine Нет. Есть часть теоретическая, джунские вопросы - отвечаю на всё. Часть по функциям на проекте - ну если у меня опыт к примеру полгода и соответствующие выполняемые функции, то я это и говорю "это делал, это то-то, это щупал в таком-то объёме". Меня могут как минимум: а) перебить по знаниям какой-то мидл или джун с 1,5 годами б) перебить по бабкам какой-нить талантливый студент, живущий у родителей.
@@sergenine а на собеседовании можно отвечать превосходно?)
Не знаю чего на парня наезжают, да местами проседал, но скидочка на стрес должна быть, главное не молчать а показать что ты думаешь а лайвкодинг сессии это просто мой ночной кошмар😢
Ну все ж умнее (в своей фантазии) , а тут джун😂
По моему все хорошо) на половину вопросов ответил, направление решения задачи было верным. Подучить Спринг и коллекции и будет норм. Это часов 20 обучение
Спасибо, Максим. Спасибо, Миша
Интервьюер отличный! Всем бы таких. А то разные интервьюеры бывают.... А респондента можно брать на любую должность! Дополню. На какую позицию было собеседование?
Intern/Junior Dev
@@Jetbulb можно на мидла сразу брать
Хороший формат
Спасибо за комментарий 🙏🏻
Максим, вначале проверяется hashCode а потом equals(), только если hasCode одинаковый!
Миша, ты молодец, все получится! У тебя уже есть хороший бэкграунд, поэтому продолжай в том же духе. Я бы посоветовал в каждую тему погрузиться чуть глубже, т.к. когда начинаешь понимать, что откуда берется - у тебя формируется общая картина, где все друг с другом согласуется, как "пазл складывается". Удачи!
Макс, как всегда, красава!
мне б такого препода в универе, Я б всё вообще на отлично слал)))
59:23
"Доступа иерархии ветки"
У парня наивысший уровень абстрагирования
- Сколько раз в видео было сказано "ОКЭЙ"
- ОКЭЙ
1:32:08
Я с тестов не могу, мне глаза прям резало, когда он сравнивал, то значение, которое получил с тем значением, которое заапендил в стрингбилдер, вообще не понимаю, почему использовал StringBuilder, можно было просто String и обошлись бы без каста к стрингу, но я думаю, что человек просто волновался. Также странно, что вопросов про многопоточность не было или я где-то пропустил
Такой вопрос, в других мок-интервью на джуна вопросы обычно сложнее, иногда значительно, часто требуется знание тонкостей в работе. Да и область вопросов обычно шире, могут спросить про git, maven. Это у вас простые интервью или там сложные? :)
Нет сложных или простых интервью. Есть люди, которые знают или не знают ответы)))
Любое порядочное интервью драйвится от потенциала и возможностей кандидата. Рекомендую посмотреть различные интервью с нашего канала. Там сложности и легкости хоть отбавляй))
@@Jetbulb Кстати, Макс, по поводу сложности, сейчас заканчиваю обучение на трейни, но никогда не видел в собесах вопросы про Кафку, Спринг Секьюрити, Докер, и другие сопутствующие сервисы. Или это я уже слишком глубоко копаю и джунам эти технологии пока не нужны?
@@Mr_Cats Хороший вопрос)
- Как по мне вопросы по докеру нужны, это то с чем регулярно работаем
- Spring Security опционально, поскольку там нечего делать и любой без опыта с задачей разберется за неделю.
- Кафка, разве что общие вопрос (гарантии доставки, принцип работы, альтернативные решения, причины применения, масштабирование)
@@Jetbulb а докер не любой за неделю осилит?🤔
@@Serge86210
На базовом уровне вполне возможно. Это вопрос очень относительный )
Если я когда-нибудь попаду к вам на ревью, прошу не быть со мной таким лояльным :D
В продолжении вашего обсуждения - забавная ситуация сложилась в моем пет-проекте, когда в качестве ключа hashmap у меня используется mutable класс, который я по идее должен сделать final и соответственно immutable, но этот класс одновренно является @entity сущностью хайбернета, и по требованиям хайбернета не может быть final.
В таком случае надо переопределить метод hashCode() так, чтобы изменяемые поля не участвовали в генерации хэшкода. Как минимум, поле, помеченное аннотацией @Id, у вас неизменно и, скорее всего, оно генерируется у вас автоматически, не забудьте убрать на него сеттер.
Единственное я пока не понимаю. Вот у нас есть Бин синглтон, его класс должен быть потокобезопасный? Я так понимаю в спринге есть паттерн запрос на поток
Должен, так как несколько потоков при параллельных запросах могут взаимодействовать с 1 синглтоном
Как будто современная java ни разу не про парадигму ООП, если не рассматривать DDD и прочий оверинжениринг. Среднестатистический java-проект как раз и представляет из себя классы-хранилища процедур, обрабатывающие данные, и всё, что в них(классах) инкапсулируется - это такие же классы процедур и адаптеры доступа к внешним интеграциям, хранилищам данных и т.д. Состояния не то, чтобы нет, - оно статично, неизменяемо. А данные у нас лежат в отдельных классах-моделях, которые редко имеют логику, потому что для реализации самых примитивных операций, даже между объектами-моделями одного типа, java-разработчики взяли привычку писать отдельную процедуру или целый класс, содержащий набор таких процедур, тем самым нарушая information expert, low coupling, high cohasion и т.д. ООП во всей красе.
Бро совсем на задаче потерялся. Я бы рекомендовал сначала написать как знаешь, лишь бы работало. А потом уже можно и рефактор (но зачем :D) Функция три ифа а чел ретерны на рандоме засовывает ( тоесть мысыль поетрял и делает уже сам не понимает что). Тут лучше выдохнуть и еще раз прочитать задание
Почему груви вдруг стал прцедурным? А как же груви классы и интерфейсы?
так там жеж можно без классов и всего прочего лабать скрипты, с этой точки зрения он и является процедурным, хотя можно использовать ООП
Видно, человек, которого ты собеседуешь, как минимум, уже работал джуном, а может и не джуном, видно, где то...мое мнение, требования на собеседованиях к джунам сильно... завышены.
Очень сложно...
это точно на джуна???? как человек который сам по себе учит джаву - ради учит джаву (цели у самурая нет), очень удивлен что дал 90% правильных ответов и еще и задачку решил минут за 10... мне кажется что тут да же не стажер.
В скорости 1,5 норм кста
Сам смотрю на х2 😅
а как к вам можно попасть на тестовый собес?)
Напиши мне в ЛС @maksymdobrynin
А что это там одинакового у мэйла и фимейла? Вообще ничего общего нету! Дети не умеют ходить? Пойду проверю вроде мои бегают быстрее меня.
Здравствуйте. Для чего нужен Котлин? Он идёт вместе в джава сейчас в комплекте?
Kotlin - java здорового человека
Работать лучше на Котлине, но собесят на Java.
Никогда не понимал юнит-тесты. Вы меня хоть убейте. Говорят, что пока ты не напишешь тестики - ты не уверен, что всё работает правильно. ДжЮнит использую только чтобы запустить данные в метод и там уже дебагером прохожу и смотрю что происходит. Потому что если написать тут правильно логику и тестики эти сраные - всё равно нельзя сказать, что всё работает. ну вот банальные пример: мы ассёртим отправляя туда число 3 - всё ок. Но если написать в условие, там где (value % 3 == 0 && value != 9) тестик же пройдёт. Но в коде явная ошибка. Короче опять-таки - что с меня взять со свитчера с 1С, но юниты - это просто какое-то успокоение для самого себя и самообман. Ладно ещё интеграционные - там есть смысл. Но юнит - чисто чтобы было что затрекать в джиру. Типа целый день писал тестики. Итого делаешь работу и ещё тестики под неё подгоняешь. А потом, когда изменяется логика метода - ещё и переделываешь их. Всё при деле. Бабки в конце месяца на счёт упали. Наверняка я не прав, но пример выше даёт мне повод сомневаться.
Для меня тесты полезные, чтобы ничего не забыть. Т.е. в начале пишешь тесты под метод, а потом реализуешь. Но опять же, если забыл в методе проверку, то забыл и в тестах)
Особенно если не уметь писать тесты, то очень просто сделать, чтобы они все прошли.
Есть же такое понятие, как процент покрытия тестами. в Вашем примере он будет критически низкий. Этот показатель так же можно проверить в IDE. IDE даже выделит Вам цветом те участки кода, которые не были задействованы в проверке. Доведите тест до 99% покрытия и будет Вам счастье понимания :)
И, конечно, всегда проверки на крайние и нулевые, пустые случаи.
@@CatBlack-p2h Наверное это вы не поняли что я имею в виду. В конкретном коде процент покрытия будет 100%. Он затронет и проверку деления на 15 и на 5 и на 3 и исключение. И проверка на крайние нулевые вам не поможет если в первом условии есть логическая ошибка срабатывающая в каком-то отдельном случае.
Я вижу следующим образом. Взглянув на тесты, можно сразу сказать как работает класс или программа, то есть не обязательно лезти и разбираться в чужом коде. Тесты также позволяют проверить всевозможные варианты передачи параметров. Например написан метод, логика которого завязана с работой только с положительным числами, а что будет если передать отрицательное? Тесты полезны как для коллег, так и для себя смотрящего этот код через год.
@@twobeerornottwobeer5973 вот это самая дельная мысль
поплыл пацан
Дэм над физбазом тупить это сильно
парень несет непонятно что, набор знакомых слов, на 20 минуте я бы уже закончил собес
Макс красавчик всегда на позитиве и даже когда кандидат ошибается говорит не расстраивайся и находит хорлшие в жтом стороны❤❤
Чел к собесу явно не готов, мягко говоря...
Да, иногда ловил испанский стыд, особенно на этапе написания кода
Готов, не готов - а оффер может получить на больше золота, чем получают некоторые мидлы😆
@@Serge86210 это врятли)
@@mrpikls124 некоторые люди очень инертны) Можно сидеть годами на одном месте и не знать, что уровень зп на рынке уже совсем другой. А джуны более-менее жадные и знают рынок)
Мне кажется по SOLID все перепутали. Говорили про LSP а описывали D - Depend upon abstractions, [not] concretes
Ну в примере уже реализован dependency inversion: модули взаимодействуют через интерфейсы. В вопросе прозвучало три интерфейса и два поля - это задача на обобщение поведения. То есть предлагается создать контракт, который обобщает все три интерфейса, и типизировать поля по нему. Если мы говорим про контракт, то это Лисков.
на счет сравнения, я бы сказал, что вначале сравнение делаем по хешу, так как это быстрее и если они равны, тогда и проводим по икволсу.
для филолога, огонь)
досмотрел до задания - рука-лицо) надо конечно ещё по практиковаться
Вопрос есть у java библиотеки или фреймворк позволяющий не использовать JS и его библиотеки и фреймворки для fronted
Посмотри Vaadin. Вероятно то, что ты ищешь
вступление записано с петличкой и норм звук, а само интервью на встроенный мик мака или почему такая разница?
Главная проблема при тесте была не в незнании java, а в слабом понимании прикладной составляющей. В трёх соснах запутался в конце 😮
Принцип Барбары Лисков не про то, что нужно зависеть от интерфейсов, а не конкретных реализаций
есть протокольно ориентированное программирование
Ближе к середине поплыл паренек
На джуна...это очень сложно
На джуна это очень просто
зачем устраивать часовые проверки на собеседованиях, если проверил универ когда выдавал диплом? нечем заняться?
на собеседовании нужно обсуждать вакансию и коллег, а не теорию лол
Для того, чтобы вы с этими коллегами на данной вакансии ХОТЯ-БЫ на одном языке говорили, и ты понимал процентов 60-70, о чём они там разговаривают. + Очевидно, что если ты знаешь - ты знаешь, и вряд-ли будешь сильно против того, чтобы у тебя уточнили лишний раз)
Вы из советского союза что-ли?
Не знаю как сейчас в Украине и других странах совка, но по личному опыту могу сказать, что никогда бы не нашёл работу, если бы получал знания только из программы российского вуза. Да и оценка знаний это такая себе, тк большинству преподов пофиг и лишь бы закрыть семестр
Вижу видос в рекомендациях, захожу и сразу ставлю лайк
Про проксю было бы неплохо добавить, что она должно именно менять логику поведения класса. Например, отменять вызов какого-то метода проксируемого класса, если пользователю меньше 18 (условно). А то иначе это уже не прокси, а декоратор, который просто навешивает доп. логику (например, логирование), а саму логику класса не меняет (то есть, если вызвать определенный метод у класса-декоратора, то мы уверенно можем сказать, что вызвался такой же метод с такими же аргументами у класса, который мы декорируем)