Макс, спасибо за твои видео! На этой неделе прошел ассесмент на мидла у себя в компании. Огромную часть инфы для подготовки брал с твоего канала и нехило так прокачался
Можешь записать гайд по поиску работы и идеальном резюме для junior разработчика так, как одно дело собеседование, а другое каким то не понятным образом ты должен попасть на него. Поддержите лайками данный пост для его реализации. Заранее всех благодарю.
@@СкандерКхемири-о8п я прошел по всему ит. Я вошел как тех поддержка, работал на 1, 2 и 3 линии (сис админ) занимался devops, работал в отделе по анализу данных и наконец-то в разработке Очень печально и смешно смотреть на тот как все отчаянно пытаются стать программистами хотя бы за кусок хлеба, когда в других вакансиях специалистов не хватает. Хотя ИТ это не только программирование
А можете подробнее рассказать про ваш путь? Я пытаюсь попасть в разработку и очень заинтересовал ваш путь из тех поддержки в разработчики, раньше я такого не слышал@@katacode
с фейл фаст как будто бы задушил парня)он по началу так и сказал что будет странно если во время итерации будут изменения)) а так все круто, надеюсь парень нашел работу
Бомба. Уже сам начинаю искать работу. Было очень интересно послушать. Останавливал после каждого вопроса и перед каждым ответом и сам вслух проговаривал. Вроде ощущаю себя уверенно, но про тригеры забыл напрочь)
50:00 странное какое-то рассуждение у интервьюера по поводу применение интерфейсов и абстрактных классов. Т.е. с ваших рассуждений получается только применение из-за модификатора доступа? Надо вопрос лучше уже задавать ни чем отличаются, а когда лучше применять. Первое, абстрактный класс мы применяем, когда будет наследование и дочерние класс будет отвечать на вопрос "B является А"(is a ), например Vehicle, Animal. А интерфейс дает классу способность - Cloneable, Drawable Comparable или контракт Sender, Notifierи т.д. И второе основное отличие - это наличие состояния, т.е. наличие приватной переменной, состояние которое будет в дальнейшем меняться. Так же абстрактный класс имеет конструктор. Поэтому лучше если и начинать этот вопрос, то узнать именно понимание, когда использовать интерфейс, а когда абстрактный класс
Было бы прикольно ещё какие-нибудь изи лвл задачки с литкода подкинуть парню, на бинарный поиск хотя бы, чтобы не заняло много времени и в тоже время немного разнообразия добавило, тем более парень алгоритмы изучает)
Че то наворотил с передачей по ссылке и по значению, и сам в итоге не правильно сказал. Парень правильно ответил. Все передается по значению, в том числе ссылки. Да, мы можем манипулировать теми же данными, потому что мы ссылку, переданную в метод, скопировали, и она указывает на тот же участок памяти. Но если мы присвоим новое значение этой ссылке, мы не изменим ссылку снаружи метода, потому что это две разные ссылки (ссылка же тоже где то в памяти хранится). Если уж спрашивать этот вопрос, то нужно опираться на то, как это работает в C/C++.
Ссылки у нас в java хранятся в стеке, как это у вас в с++, не знаю 😅 Макс ответил правильно, он не рассказал только дотошно всё подробности работы при передачи ссылки в метод. Когда мы передаем в java ссылочные типы, это относится и к collection тоже, передаётся значение ссылки в метод, в методе значение ссылки копируется в ново созданную стековую переменную и у нас в той переменой хранится значение нашей ссылки переданной в метод. Поэтому в java всё передаётся по значениям, а ссылочные типы передают значение ссылки. Почему же мы можем изменить ссылочную переменную? Потому что ссылаются они на один участок памяти, при этом мы не сможем изменить значение ссылки нашего ссылочного класса, но значения его можем менять уже в методе. Поделитесь, как это работает в с++ Или я не прав?
Макс ответил верно, а парень хоть правильно ответил, но не знал почему именно так, те знания поверхностные, поэтому и поплыл. Он вообще ответил, что не будет изменяться старое значение в массиве, а новое будет в иной какой-то переменной. И юношеский максимализм и хитропопость, когда поправил его Макс, он начал путать свои 'показания', но в итоге всё равно ошибся, поэтому Макс его поправил. Но в конце парень косвенно признал ошибку, сказал, что 'не задумывался'. Чтож... Это положительный вектор.
@@yanslow9083 в С++ объекты в функции можно передавать 3 способами: - по значению, т.е., инициализируем объект в мейне, передаем его в функцию (void func(Person person){}), в таком случае создается копия этого объекта в области видимости функции и потом копия самоуничтожается при выходе из неё, все это происходит на стеке; - по ссылке, т.е., инициализируется ссылка на какой-либо объект (она не может быть null) и передается как есть в область видимости функции (void func(const Person& personRef){}), где через неё можно этим объектом оперировать, тут уже не важно, где находится сам объект; - по указателю, т.е., когда мы создаем объект в хипе через оператор new, к нему присваевается указатель (объект на стеке, у которого там есть свой адрес и значением которого является ссылка на объект в хипе, на который он указывает), этот указатель передается в функцию, из которого можно достать адрес (ссылку) объекта и им уже оперировать (void func(Person* personPtr){}), указатель может быть nullpointer (не указывать на какой либо объект), что может быть полезно в некоторых случаях; Если объект создан на стеке, то он сам уничтожается по мере выхода из области видимости функции, а если на хипе через указатель, то его нужно через него удалять вручную (оператор delete) (или использовать умные указатели современных стандартов языка, в которых этот процесс инкапсулирован) p.s. я мало писал на плюсах, поэтому могу ошибаться, может опытные товарищи меня тут поправят в чем-то :)
Просто много курсовиков развелось, которых готовят к типовым вопросам на собесах, вот и стали добавлять нестандартные вопросы, чтобы выявить твои слабы стороны )
Спасибо. Невероятно интересно и узнал много нового для себя. Я сам сейчас готовлюсь к собесам поэтому хотел задать несколько вопросов (не сочтите за критику): 1. Почему так много внимания многопоточности? На сколько я знаю на веб проектах всю работу с потоками берет на себя хиккари пул и знакомый сеньер говорит что многопоточку особо не нужно знать в деталях 2. Почему в базах данных не было вопросов по JPA и слою DAO плюс виды раскаток БД 3. про виды конфигурации бинов и предназначении Spring boot
Я бы наоборот сказал что по многопоточности мало вопросов. Детально рассматривается только ReadWriteLock, volatile и happens before вообще не упоминается (или может я прослушал) но это намного важнее часть java core, а ведь именно основы важнее всего для джуна. Касаемо веб приложений - да, верно, за "приемку" запросов может отвечать внешний пул, но что дальше выполняется потоками лежит на плечах программиста, и проблемы могут начаться сразу же при появлении общих ресурсов. Банально - реализовать переменную для счётчика запросов. Касаемо почему не было каких-то конкретных вопросов - а кто тебе их обещал ? Хороший интервьюер никогда не проводит одинаковых интервью, и всегда отталкивается от ответов собеседника. К тому же интервью без того длилось полтора часа, что порядком изматывает и дольше интервьюировал мало смысла т.к мозги плывут
многопоточность нужна. представим, что тебе необходимо написать какой-то нотификационнный сервис, который будет отправлять сообщения пользователям и у тебя пользователей миллион, например, делать рассылку по ним надо будет. Ты как будешь в одном цикле это все обрабатывать?
Что значит "непроверяемые исключения я не должен был обрабатывать"? Ты должен обрабатывать все исключения, о возникновении которых ты подозреваешь. Просто проверяемые исключения носят предсказуемый характер, поэтому их возникновение легко предсказать и заранее обеспокоиться их обработкой, а непроверяемые исключения носят более случайный характер, поэтому сразу их все не отследить, но это не значит, что если у тебя прсередине метода стоит выброска непроверяемого исключения, то стоит просто забить - и пусть этот метод всегда валится с ошибкой
мне кажется ты намудрил с описанием - что значит носит случайный характер? т.е. ошибка рандомно возникает? а RuntimeException мы кидаем, чтобы его уже отобразить на уровне выше, например, как сообщение на фронтенде, что данные переданы некорректные(например null передаешь). Это делается для того , чтобы сразу проверить параметр и кинуть исключение, чем пускать дальше на выполнение логики и она свалится с ошибкой и нет смысла поэтому ее перехватывать и потом сообщать, что была такая-то ошибка
@@SergeySvotin я выше писал уже что вообще не понял твой вопрос. Фраза стоит исключение и метод всегда валится. Ну если ты 0 летишь постоянно то да рантайм будет падать или на null не проверяешь.
В Java параметры передаются ТОЛЬКО по значению (и примитивы, и ссылки). Ещё раз: ссылки передаются по значению. Собеседуемый правильно ответил! Передачи параметров по ссылке в Java нет. В Java есть передача ссылок по значению.
Если создать два стринга и инициализировать одинаковой строкой, то второй объект будет ссылкой на первый. То есть при изменении второй строки меняется первая.
Щас изучаю java. Разбираю темы бинарных деревьев, двусвязных списков, красно-чёрных деревьев. Но все очень сложно. Можете накинуть ссылок, где хорошо это объясняют
Столько учиться и всё ради чего, ради 30к, все говорят что в разработке зп 100 - 150к, но ведь это не так, это раздутый мыльный пузырь, на деле работодатеоь дает 15-30к но не больше, чтобы зарабатывать большие деньги, нужно знать стек технолргий, английский, такие бабки не реально, ни кто не будет алатить за красивые глазки, а чтобы выучить всё это нужно не менее года полутора, просто тратить время и ресурсы.
Именно полтора года минимум, это если уже английский на уровне эдвансд. Рынок поменялся и требования выросли, сейчас уже начали даже по многопоточности джунов гонять.
Парень просто пересказывает заученные фразы, но по его попыткам объяснять видно, что сам он эти фразы еще не осмыслил. Необязательно располагать блоки catch по иерархичности, можно как угодно расположить, просто нужно понимать, что ты делаешь. Даю предпочтительным является расположение от более узкого к более широкому классу, но это просто потому что нужен некий общий порядок, чтобы не каждый писал по-своему, и чтобы допускать меньше ошибок. Однако, если ты реально шаришь, то для себя ты можешь как угодно накидать блоки, подкрутив их логику под конкретные нужды
резонно-резонно
тобишь
Резотто
Это резонно
Сам уже постоянно начал говорить это слово)))
То бишь, как?
Макс, спасибо за твои видео! На этой неделе прошел ассесмент на мидла у себя в компании. Огромную часть инфы для подготовки брал с твоего канала и нехило так прокачался
Поздравляю 🥳
Это крутое достижение. Не останавливайся на достигнутом!
В епаме?))
Плюсую к вопросу про Эпам! ты упомянул ключевое слово, которое знают все кто там работает.
@@Wise___Man не, не в епаме) работаю в неофлексе. А словцо это приклеилось от ВРа, который раньше в штатах работал)
Очень интересно и познaвательно, на каждый вопрос ставлю на паузу и отвечаю самостоятельно. Остаётся ждать реальную собеседованию)
Можешь записать гайд по поиску работы и идеальном резюме для junior разработчика так, как одно дело собеседование, а другое каким то не понятным образом ты должен попасть на него. Поддержите лайками данный пост для его реализации. Заранее всех благодарю.
Идешь работать инженером тех поддержки. Там находишь отдел ращработки и дружишь с ними
@@katacode Ты по своему опыту говоришь или как пришел к такому заключению?
@@СкандерКхемири-о8п я прошел по всему ит. Я вошел как тех поддержка, работал на 1, 2 и 3 линии (сис админ) занимался devops, работал в отделе по анализу данных и наконец-то в разработке
Очень печально и смешно смотреть на тот как все отчаянно пытаются стать программистами хотя бы за кусок хлеба, когда в других вакансиях специалистов не хватает. Хотя ИТ это не только программирование
@@katacodeчто за х.. ты ..
А можете подробнее рассказать про ваш путь? Я пытаюсь попасть в разработку и очень заинтересовал ваш путь из тех поддержки в разработчики, раньше я такого не слышал@@katacode
"Проблема заключается в том, что ты прав". Надо запомнить, ахаха
пожалуйста не прекращай делать эти видео! лайк заслужено!
Максим, спасибо за видео, смотрю каждый выпуск, жду новых)
Интересное и очень познавательное собеседование!
Спасибо большое за ваш труд! 🤝
спасибо большое за труд, "резонно" конечно много)
с фейл фаст как будто бы задушил парня)он по началу так и сказал что будет странно если во время итерации будут изменения)) а так все круто, надеюсь парень нашел работу
Отличное собеседование, было очень интересно
Дякую, як завжди якісно та інформативно 🚀
Бомба. Уже сам начинаю искать работу. Было очень интересно послушать. Останавливал после каждого вопроса и перед каждым ответом и сам вслух проговаривал. Вроде ощущаю себя уверенно, но про тригеры забыл напрочь)
Нашел?
Ну что, как успехи?
Это таки резонно, господа)
Лучший собес что я видел, куча вопросов по теме
50:00 странное какое-то рассуждение у интервьюера по поводу применение интерфейсов и абстрактных классов. Т.е. с ваших рассуждений получается только применение из-за модификатора доступа? Надо вопрос лучше уже задавать ни чем отличаются, а когда лучше применять. Первое, абстрактный класс мы применяем, когда будет наследование и дочерние класс будет отвечать на вопрос "B является А"(is a ), например Vehicle, Animal. А интерфейс дает классу способность - Cloneable, Drawable Comparable или контракт Sender, Notifierи т.д. И второе основное отличие - это наличие состояния, т.е. наличие приватной переменной, состояние которое будет в дальнейшем меняться. Так же абстрактный класс имеет конструктор. Поэтому лучше если и начинать этот вопрос, то узнать именно понимание, когда использовать интерфейс, а когда абстрактный класс
Было бы прикольно ещё какие-нибудь изи лвл задачки с литкода подкинуть парню, на бинарный поиск хотя бы, чтобы не заняло много времени и в тоже время немного разнообразия добавило, тем более парень алгоритмы изучает)
Че то наворотил с передачей по ссылке и по значению, и сам в итоге не правильно сказал. Парень правильно ответил. Все передается по значению, в том числе ссылки. Да, мы можем манипулировать теми же данными, потому что мы ссылку, переданную в метод, скопировали, и она указывает на тот же участок памяти. Но если мы присвоим новое значение этой ссылке, мы не изменим ссылку снаружи метода, потому что это две разные ссылки (ссылка же тоже где то в памяти хранится). Если уж спрашивать этот вопрос, то нужно опираться на то, как это работает в C/C++.
Пришёл проверить наличие этого комментария. Как я заметил Максим часто ошибается.
@Николай Бобров да, часто.
В частности, про lost update и durability как-то странно объяснил.
Ссылки у нас в java хранятся в стеке, как это у вас в с++, не знаю 😅
Макс ответил правильно, он не рассказал только дотошно всё подробности работы при передачи ссылки в метод.
Когда мы передаем в java ссылочные типы, это относится и к collection тоже, передаётся значение ссылки в метод, в методе значение ссылки копируется в ново созданную стековую переменную и у нас в той переменой хранится значение нашей ссылки переданной в метод. Поэтому в java всё передаётся по значениям, а ссылочные типы передают значение ссылки.
Почему же мы можем изменить ссылочную переменную?
Потому что ссылаются они на один участок памяти, при этом мы не сможем изменить значение ссылки нашего ссылочного класса, но значения его можем менять уже в методе.
Поделитесь, как это работает в с++
Или я не прав?
Макс ответил верно, а парень хоть правильно ответил, но не знал почему именно так, те знания поверхностные, поэтому и поплыл. Он вообще ответил, что не будет изменяться старое значение в массиве, а новое будет в иной какой-то переменной.
И юношеский максимализм и хитропопость, когда поправил его Макс, он начал путать свои 'показания', но в итоге всё равно ошибся, поэтому Макс его поправил.
Но в конце парень косвенно признал ошибку, сказал, что 'не задумывался'.
Чтож... Это положительный вектор.
@@yanslow9083 в С++ объекты в функции можно передавать 3 способами:
- по значению, т.е., инициализируем объект в мейне, передаем его в функцию (void func(Person person){}), в таком случае создается копия этого объекта в области видимости функции и потом копия самоуничтожается при выходе из неё, все это происходит на стеке;
- по ссылке, т.е., инициализируется ссылка на какой-либо объект (она не может быть null) и передается как есть в область видимости функции (void func(const Person& personRef){}), где через неё можно этим объектом оперировать, тут уже не важно, где находится сам объект;
- по указателю, т.е., когда мы создаем объект в хипе через оператор new, к нему присваевается указатель (объект на стеке, у которого там есть свой адрес и значением которого является ссылка на объект в хипе, на который он указывает), этот указатель передается в функцию, из которого можно достать адрес (ссылку) объекта и им уже оперировать (void func(Person* personPtr){}), указатель может быть nullpointer (не указывать на какой либо объект), что может быть полезно в некоторых случаях;
Если объект создан на стеке, то он сам уничтожается по мере выхода из области видимости функции, а если на хипе через указатель, то его нужно через него удалять вручную (оператор delete) (или использовать умные указатели современных стандартов языка, в которых этот процесс инкапсулирован)
p.s. я мало писал на плюсах, поэтому могу ошибаться, может опытные товарищи меня тут поправят в чем-то :)
Макс, как всегда - очень познавательно.
Интересно было бы увидеть зеркальное интервью, когда друг друга будут собеседовать
Будет собес-батл)
Уже думаем про это))
Классные собесы пошли ,раньше как то легче было на мой взгляд, отличный подход , а то джависты расслабились совсем))
🧐🤨
Просто много курсовиков развелось, которых готовят к типовым вопросам на собесах, вот и стали добавлять нестандартные вопросы, чтобы выявить твои слабы стороны )
Интересное и очень познавательное собеседование) Спасибо 👍
спасибо!
Почему так мало подписчиков при качественном познавательном контенте?
глупый вопрос
@@лалала-к8о аргументы на вышесказанное
@@maks10110 очевидный ответ. подумаешь
@@лалала-к8о грубо с вашей стороны так общаться с незнакомыми
@@maks10110 Ваш собеседник просто не очень умный. Контент действительно качественный, просто java комьюнити не очень большое
Спасибо, Макс
Привіт, ти ще викладаєш в школі Hillel, як потрапити до тебе на навчання?
Хай! Вже бiльше року там не викладаю))
Пiшов на свiй хлiб. Якщо щось потрiбно, пиши до @maksymdobrynin
Так конечно сложнее, перепрыгивать по разным темам и областям, нежели постепенно идти от лёгкого к сложному 😊
У всех разное легкое/сложное. И зачастую зависит от знаю/не знаю 🙃
супер мега ультра топ
Так в итоге Никита прошел собеседование или нет?)
Спасибо. Невероятно интересно и узнал много нового для себя. Я сам сейчас готовлюсь к собесам поэтому хотел задать несколько вопросов (не сочтите за критику):
1. Почему так много внимания многопоточности? На сколько я знаю на веб проектах всю работу с потоками берет на себя хиккари пул и знакомый сеньер говорит что многопоточку особо не нужно знать в деталях
2. Почему в базах данных не было вопросов по JPA и слою DAO плюс виды раскаток БД
3. про виды конфигурации бинов и предназначении Spring boot
Я бы наоборот сказал что по многопоточности мало вопросов. Детально рассматривается только ReadWriteLock, volatile и happens before вообще не упоминается (или может я прослушал) но это намного важнее часть java core, а ведь именно основы важнее всего для джуна. Касаемо веб приложений - да, верно, за "приемку" запросов может отвечать внешний пул, но что дальше выполняется потоками лежит на плечах программиста, и проблемы могут начаться сразу же при появлении общих ресурсов. Банально - реализовать переменную для счётчика запросов.
Касаемо почему не было каких-то конкретных вопросов - а кто тебе их обещал ? Хороший интервьюер никогда не проводит одинаковых интервью, и всегда отталкивается от ответов собеседника. К тому же интервью без того длилось полтора часа, что порядком изматывает и дольше интервьюировал мало смысла т.к мозги плывут
многопоточность нужна. представим, что тебе необходимо написать какой-то нотификационнный сервис, который будет отправлять сообщения пользователям и у тебя пользователей миллион, например, делать рассылку по ним надо будет. Ты как будешь в одном цикле это все обрабатывать?
У Никиты на фоне карта от гта 5 или мне так кажется 🧐
не кажется)
Что значит "непроверяемые исключения я не должен был обрабатывать"?
Ты должен обрабатывать все исключения, о возникновении которых ты подозреваешь. Просто проверяемые исключения носят предсказуемый характер, поэтому их возникновение легко предсказать и заранее обеспокоиться их обработкой, а непроверяемые исключения носят более случайный характер, поэтому сразу их все не отследить, но это не значит, что если у тебя прсередине метода стоит выброска непроверяемого исключения, то стоит просто забить - и пусть этот метод всегда валится с ошибкой
мне кажется ты намудрил с описанием - что значит носит случайный характер? т.е. ошибка рандомно возникает?
а RuntimeException мы кидаем, чтобы его уже отобразить на уровне выше, например, как сообщение на фронтенде, что данные переданы некорректные(например null передаешь). Это делается для того , чтобы сразу проверить параметр и кинуть исключение, чем пускать дальше на выполнение логики и она свалится с ошибкой и нет смысла поэтому ее перехватывать и потом сообщать, что была такая-то ошибка
@@ВасилийГоловко-д9и для этого пишутся свои классы исключений, и не наследуются от непроверяемых
@@SergeySvotin я выше писал уже что вообще не понял твой вопрос. Фраза стоит исключение и метод всегда валится. Ну если ты 0 летишь постоянно то да рантайм будет падать или на null не проверяешь.
В Java параметры передаются ТОЛЬКО по значению (и примитивы, и ссылки). Ещё раз: ссылки передаются по значению. Собеседуемый правильно ответил! Передачи параметров по ссылке в Java нет. В Java есть передача ссылок по значению.
Если создать два стринга и инициализировать одинаковой строкой, то второй объект будет ссылкой на первый. То есть при изменении второй строки меняется первая.
1) стринги являются immutable объектами, их нельзя поменять
2) какое отношение это имеет к способу передачи параметров в функцию?
Ты так написал, как будто собеседующий сказал что то противоположное. Оба говорили о том, что передача параметров передается по значению.
Щас изучаю java. Разбираю темы бинарных деревьев, двусвязных списков, красно-чёрных деревьев. Но все очень сложно. Можете накинуть ссылок, где хорошо это объясняют
👍🏻
Я так понял, он занимается backend разработкой?
Да
Так ведь собеседуют junior, а не trainee. Junior это специалист с опытом
Можно к вам на такое интервью записаться?
За деталями можно по ссылке ниже написать
t.me/iPrody_Online
@@maksdobrynin Сколько по времени среднее ожидание ответа?
@@speliy_как повезет
43:15 - работа потоков
не я думаю то, что. а я думаю, что
Это точно Junior?((((
Вітаю. Дякую за відео. Я все ж не зрозумів чому "транзакції" не забезпечують цілісність даних?
Столько учиться и всё ради чего, ради 30к, все говорят что в разработке зп 100 - 150к, но ведь это не так, это раздутый мыльный пузырь, на деле работодатеоь дает 15-30к но не больше, чтобы зарабатывать большие деньги, нужно знать стек технолргий, английский, такие бабки не реально, ни кто не будет алатить за красивые глазки, а чтобы выучить всё это нужно не менее года полутора, просто тратить время и ресурсы.
А что ты хотел? За пару месяцев нахвататься и грести бабло лопатой? Наивные
Где за 15к в айти? Столько даже в пятерочке не платят
@@alias_5800бывает такое. В пятерочке платят как полноценным джунам в принципе)
Именно полтора года минимум, это если уже английский на уровне эдвансд. Рынок поменялся и требования выросли, сейчас уже начали даже по многопоточности джунов гонять.
@@konstantinrudnitskiy7168они уже с ума сходят от количества джунов, проще вскочить мидлом выдумав опыт
Парень просто пересказывает заученные фразы, но по его попыткам объяснять видно, что сам он эти фразы еще не осмыслил.
Необязательно располагать блоки catch по иерархичности, можно как угодно расположить, просто нужно понимать, что ты делаешь. Даю предпочтительным является расположение от более узкого к более широкому классу, но это просто потому что нужен некий общий порядок, чтобы не каждый писал по-своему, и чтобы допускать меньше ошибок. Однако, если ты реально шаришь, то для себя ты можешь как угодно накидать блоки, подкрутив их логику под конкретные нужды
Чё? Менее глобальные исключения будут недостижимы, какую логику ты крутить собрался)
@archimg1221 да что ты говоришь) а я сделаю catch (Exception e), а внутри проверю e instanceof NullPointerException, шах и мат
Порадьте першу книгу для Java
Гербрерт Шилдт - Повний посібник Java
Обирай останню версію
@@maksdobrynin дякую
@@maksdobrynin У Шилдта ще є посібник для початківців, краще з нього почати, чи з повного?
@@west8663 Коли скажуть, можеш мене відмітити? Просто самому цікаво.
@@west8663 Повний. Перший просто скорочений
не надо больше джунов, го мидл +
Го синьеров тестировать. Думаю окажется что половина еле на мидлов тянут.
Сервлеты в 2023....дизлайк
Отписаться не забудь
тоже удивлен этому вопросу, за всю историю ни разу такое не спрашивали (проходил сотни собеседований за 20+ лет)
не готовился школотрон. юлил такую чушь, начиная с иммутабельного класса.. хитрец