Спасибо Евгений за твое время и труд! Было интересно пройти у тебя собеседование, оценить себя со стороны и узнать много нового. Присутствовало волнение, но листок и ручка помогают, когда начинаешь нервничать, просто записывай вопрос, так легче!) Буду работать над своими пробелами, и пополнять знания. Надеюсь это видео поможет таким же ищущим работу как и я!)
@@user-uf1gt9ys4r Уровень на JR никогда не являлся прямо пропорциональным знаниям учащихся там. Литературу читал,задачи решал, проходил я его в 2018. Если у тебя есть годная статья или другой ответ, скинь. А так, что это один из принципов ООП, и реализуется с помощью интерфейсов, ну и перегрузок - это основное что везде и пишут.
крутые видео. я после вопроса Евгения, если не знаю уверенный ответ, ставлю на паузу и читаю инфу. и только затем продолжаю просмотр. буст самообучения крайне высокий благодаря таким видео )
Спасибо за видео:) Сам готовлюсь стать разработчиком и такие видео очень помогают - как в том, к каким вопросам готовиться , так и просто перебороть свой страх и отвечать уверенно на собеседовании
Ну тут за тебя уже реализован метод sqrt и если ты так решишь, то это будет говорить о том что ты знаешь такой метод и все. А если решишь как в видео то скорее оффер именно тебе кинут
Спасибо огромное за такой полезный и интересный контент! Несмотря на то, что работаю java разработчиком около года, в каждом интервью подмечаю для себя важные моменты, которые со временем забылись.
Женя, спасибо за выпуск, как всегда супер!!! Через неделю открываю резюме для поиска работы Java Junior и твои видео как раз кстати)) СПАСИБО ОГРОМНОЕ!
Яркий пример =) когда читал там и там - но сугубо практике не уделял внимание. Отличный questions map - очередной! Но кандидат не промах - когда о LinkedList вопрос был, явно ощущается таймгеп на поиск ответа;)
вот всегда было интересно, все кто записывался на собес, не смотрели ранее вышедшие тестовые собеседования? вопросы более чем схожие, особенно про сложности Big O notation
Извечно холиварная тема полиморфизма в контексте переопределения и перегрузки методов. :) ИМХО: • Переопределение метода - динамический полиморфизм; • Перегрузка метода - статический полиморфизм. Теперь можете меня пинать ногами за перегрузку :)
Скажите пожалуйста( я даже близко не программист, но эта тема интересна) касаемо алгоритмической задачи: Мог бы я допустим, использовать свойство экспонентов, что корень числа - число возведённое в степень 1/2. То есть, тупо реализовать функцию степени и возводить число в эту степень, или это не допустимо в условиях задачи?
Особенность данного кандидата - он на каждый вопрос, на который не знает ответ, вываливает все что знает из области вопроса. Напоминает как нам когда-то в универе говорили: если на экзамене не знаете что отвечать - рассказывайте все что знаете. Евгений, с Вашей точки зрения, как собеседующего: нужно ли так делать или лучше сразу говорить, что не знаешь ответ на вопрос, или истина где-то посредине? В данном случае, будь я на месте собеседующего, я бы сделал вывод, что кандидат не имеет представления о чем он рассказывает, а просто выполняет пересказ заученной информации, что не так уж и здорово.
В целом, если ответа на вопрос не было, то это и будет отмечено :) Обычно, попытки уйти от прямого ответа воспринимаются нормально, но на общую «оценку» кандидата видео именно ответ на оставленный вопрос.
Вы не учли что максимальное число может быть например 30. И ближайшее число в квадрате - это 25. Не хватает ещё одного if. И да, лучше условия задавать через else if. Тогда производительность метода будет выше тут вы верно подметили.
Здравствуйте, если я понял правильно задачу, решение можно записать в таком виде: public static int calculateSqrt(int input){ int output = 0; while (input >= Math.pow(output,2)){ output++; } return --output; }
Про бинарный полезно, спасибо :) В плане того, что его тут вообще надо использовать (вообще наверное можно не только его) и про его сложность. Артемию совет посмотреть на www.codingame.com/
Возникла небольшая дискуссия по поводу Вашего собеседования) Что имелось ввиду под перегрузкой методов 11:40? Overload или Override? Если имелась именно перегрузка, а не переопределение. Могли бы дать несколько аргументов почему?
@@EugeneSuleimanov Это конечно, но все вопросы же не станешь гуглить, и тогда в памяти откладывается ответ, который дал собеседник, а он не всегда правильный.
@@EugeneSuleimanov Хороший подход, я все вопросы гуглил, и курил стаковерфлоу)) много нового узнал. И да, я лично запоминаю так лучше, когда гуглишь ты находишь разные ответы, и самое главное разные нюансы данного вопроса.
Всегда считал, что есть четыре основных операции для оценки сложности (по времени или по памяти) - индексация, поиск, вставка и удаление. И вставка подразумевает, что мы уже стоим на нужном элементе, иначе непонятно надо до вставки выполнять поиск или индексацию, и тут уже есть варианты. Представим себе подъезд дома - коллекцию квартир, на каждом ровно одна квартира и нужна на N этаже. Курьер Arraylist поехал на лифте на N этаж, а курьер LinkedList пошел пешком на этот же N этаж . А в случае поиска оба пешедралят по всем этажам до N и сравнивают номер этажа с искомым (коллекцию условно считаем неотсортированной)
Окей. Вопрос - какая сложность в терминах, что вставка = добраться до места (поиск или индексация) + вставка? Говорим про общий случай несортированный. Распишу... Поиском: Массив = o(n) + o(n) = o(n) Список = o(n) + o(1) = o(n) Индексацией: Массив = o(1) + o(n) = o(n) Список = o(n) + o(1) = o(n) Т.е. всегда o(n). Теперь объясните джунам - где же преимущество одной коллекции над другой в практическом применении? Везде o(n). Отвечу, вставка - это вставка. Равно как и удаление - это удаление. А сложность нескольких операций - это сложность нескольких операций.
@@alexandernikolaev174 Все эти вопросы уже давно разобраны в любой базовой книжке по алгоритмам/структурам данных. "в практическом применении" - асимптотическая сложность не учитывает скрытую константу в алгоритме
если хотите простых решений, то простой перебор типа: for (int i = 0; ; i++) { if (i * i == value) { return i; } else if (i * i > value) { return i - 1; } }
Лайкнул. Подписался. Но спрошу. Какая идея такого формата? Список вопросов - есть в описании, да и в сети их легко найти, ответы - лучше не слушать: даже если человек отвечает правильно, чаще всего это звучит как "Рабинович мне напел". Было бы полезно, если бы в итоге по каждому вопросу был дан ответ, который предполагалось услышать.
Книга java concurrency in practice. "Есть" ее надо по маленьким кускам тщательно переваривая, чтобы понимание пришло. Только так. Пара статей на хабре еще есть обзорных.
@@caffeinejavacode1475 раньше начнешь, раньше закончишь) Если прочитаете хотя бы половину, то уже очень и очень хорошо. Там во второй половине уже про более специфичные инструменты рассказывают.
@@caffeinejavacode1475 этот вариант правда самый действенный и пользы будет гораздо больше, если бы прочтете первые 100 страниц, чем охватите все и сразу по статьям и видео-урокам.
@@eleias.singer Вот только про многопоточность на 8 из 10 собеседований зададут пару вопросов. Гораздо эффективнее потратить это время на те же коллекции.
Здравствуйте а нельзя сделать так? int input = new Scanner(System.in); int х=1; boolean flag = true; while(flag){ if(x*x>input) { sout(x-1); flag=false;} x++;}
Немного странновато выглядит. counter переменная объявлена и не используется. Чему равен x вначале? Нету return значения. Если я правильно понял изначальную идею, то просто идём от единицы и проверяем все квадраты. Так можно, но это менее эффективно. Чем больше будет инпут, тем затратнее будет выполнение метода. Бинарное дерево намного меньше операций возведения в квадрат произведёт. Разделяй и властвуй во всей красе)
Хм, полностью не посмотрел как он решал задачу, потому что там какая-то жесть, но решение мне кажется должно быть типо: return (int) Math.sqrt(input); ну мб еще проверку что не отрицательное число добавить максимум) и все))
@@alexfisher9679 класс Math -стандартная библиотека джава, это даже не сторонняя либа) Поэтому это самое логичное решение поставленной задачи, чем мудрить свою какую-то логику по вычислению корня на фиг знает сколько строк))Имхо)
Привет Евгений, был бы признателен за возможность пообщаться с тобой Сейчас ищу работу на позицию Джуниор разработчика на джаве. Был бы рад за обратную связь. Готов заплатить за твое время. Хорошего дня.
А я вначале подумал, что спросил бы: 1) валидация на инпут нужна? 2) Потом сходу (int) Math.sqrt(input) предложил бы) 3) А на бинарном поиске глядишь и завалился бы=) Полтора года коммерческого опыта работы на java, только недавно первый раз за всё время понадобились знания алгоритмов... А вообще, конечно, у кандидата серьёзный путь впереди. Желаю ему удачи, дисциплины и терпения! Без этого никак.
"Решение алгоритмической задачи ": Пытался найти иное, краткое и стабильное, решение посредством побитового сдвига вправо, где каждый сдвиг +1 к искомому результату, но потерпел фиаско :)
static public int calculatorSqrt (int input){ if (input 0) return 1; for (int i=2; i input) return i-1; else if (i*i == input) return i; else if (i*i< input) continue;} return -1; }
Зачем Вы говорите что всё не плохо? 1:02:29 Сегодня у Вас даже не хватило терпения осилить алгоритмическую задачу. В предыдущих 2 собеседованиях Вы тоже по моему говорили что всё неплохо. На мой взгляд на последних 3 собеседованиях ребята реально слабые. Что Вы вкладываете в понятия "всё не плохо"? Почему им не сказать что они LowSkill'ы. На мой взгляд ребятам ещё учиться и учиться до java junior.
Честно, не пойму, зачем писать столько лишнего кода да ещё и столько времени, прибегая к рекурсии. public int calculateSqrt(int n) { int r = n; while (r*r > n) r = (r + n/r) / 2; return value; }
с каких это пор перегрузка метода стала реализацией полиморфизма? если класс с перегруженными методами может ни наследовать, ни реализовать интерфейс. а?
@@EugeneSuleimanov ключевое слово даже по твоей ссылке, это EXTENDS (то есть наследование) перегрузка методов, не требует ни extends, ни implements. они вообще не связаны между собой. причем там 1) вариант это наследование в чистом виде, 2) вариант это делегирование а где перегрузка
@@EugeneSuleimanov ты меня видимо не читаешь. а как ты тогда ответишь на это, что можно перегрузить метод без наследования и реализации интерфейса, какое тогда это имеет отношение к полиморфизму? если класс ни реализовывает интерфейс, ни наследует класс. он вообще автономный. тоже скажешь что это полиморфизм?
@@NummeSpnet я уже писал выше, что статический полиморфизм уже давно является темой споров. И та и другая стороны приводят свои аргументы. Это как пробелы против табуляции. Я всего лишь привёл ссылку на 1 из многочисленных источников, не пытаясь сказать, что ты не прав.
Тоже показалось странным, что отвечает не сразу, но может у него память так работает. У меня есть специальная папка с картинками- например все коллекции на одной картинке с иерархией, слои clean architecture, жизненный цикл activity и тд, чтобы можно было быстро подсмотреть)) и так лучше запоминается
Привет, касательно задачи, если сделать так?: public long calcSqrt (int a){ double temp=(double) Math.sqrt(a); if (temp%1==0){ return (long)temp; } else return calcSqrt(a-1); }
Поставил лайк, но задачка бессмысленная. Для получения квадратного корня есть библиотечный метод "из коробки". Она скорее проверяет избыточное знание математики, а не умение думать.
Она проверяет 1. Алгоритмическое мышление 2. Может ли человек вообще что-то решить, или просто выучил спецификации. 3. Способ, как человек решает задачу (уточняет ли он условия, стиль кодирования, скорость написание кода...) 4. Да много еще что проверяет. Для знания теории есть другие вопросы.
Насчет final String не понял: String name = "scott"; name = "tiger"; // OK final String gender = "male"; gender = "female"; // won't compile you cannot reassign gender cause it's final
@@user-fi7ih1yg5n видео не смотрел, но какая разница String или не String финализированная переменная? Вы не сможете её переопределить после того, как уже присвоили ей значение. С таким же успехом вы можете использовать любые примитивы, которые будут константами и объекты, при том, что сам объект сможет меняться, а вот ссылка на него будет жестко закреплена за вашим полем.
Ну что сложно загуглитЬ? *Для тех кто в танке:* это записи примеров собеседований, а не обучающие видео (хотя их можно использовать с этой целью самостоятельно), т.е. чтобы зрители имели представление как происходит процесс собеседования, чтобы получить опыт собеседования не проходя его лично. В дополнение к этому, зритель получает опыт самостоятельного заполнения собственных пробелов, поскольку после реального собеседования полагается свои пробелы заполнять самостоятельно.
Спасибо Евгений за твое время и труд! Было интересно пройти у тебя собеседование, оценить себя со стороны и узнать много нового. Присутствовало волнение, но листок и ручка помогают, когда начинаешь нервничать, просто записывай вопрос, так легче!) Буду работать над своими пробелами, и пополнять знания. Надеюсь это видео поможет таким же ищущим работу как и я!)
Удачи тебе, есть над чем поработать, но все в твоих руках!) Главное их(руки) не опускать)
@@robmoor7992 Спасибо!
А как ты так дошел до 25 ур в JR и так мало знаешь про полиморфизм? Ты не читал параллельно литературу? Все задачи решал?
@@user-uf1gt9ys4r Уровень на JR никогда не являлся прямо пропорциональным знаниям учащихся там. Литературу читал,задачи решал, проходил я его в 2018. Если у тебя есть годная статья или другой ответ, скинь. А так, что это один из принципов ООП, и реализуется с помощью интерфейсов, ну и перегрузок - это основное что везде и пишут.
молодец, так держать!!!
крутые видео. я после вопроса Евгения, если не знаю уверенный ответ, ставлю на паузу и читаю инфу. и только затем продолжаю просмотр. буст самообучения крайне высокий благодаря таким видео )
Спасибо за отзыв :)
Я записываю вопросы которые не знаю, и потом гуглю сразу все, делая конспект. CAP теорема, идемпотентный метод впервые услышал.
Тоже поставил на паузу и быстро набросал функцию sqrt на Python, чтобы убедиться, что задача не сложная для меня.
Спасибо что исправили монтаж. Намного приятней смотреть, когда видеоряд и звук не прерывается объявлением подтемы собеседования.
Спасибо за видео:) Сам готовлюсь стать разработчиком и такие видео очень помогают - как в том, к каким вопросам готовиться , так и просто перебороть свой страх и отвечать уверенно на собеседовании
Спасибо за видео! Хорошая задачка была дана, показалась сначала сложной, но немного подумав решил.
Евгений, спасибо за ваше терпение направлять джунов в нужное русло мышления, не каждый человек выдержит такое без нервов!
Очень круто. И для тех,кто начинает собеседовать,что бы вспомнить что было бы слишком жёстким. Отличный формат)
return (int) Math.sqrt(n)
Не нужно усложнять)
Тоже сразу об этом подумал))) и имхо на собеседовании это будет правильным решением)))
@@dooskrit самое простое решение, при прочих равных, является лучшим
Ну тут за тебя уже реализован метод sqrt и если ты так решишь, то это будет говорить о том что ты знаешь такой метод и все. А если решишь как в видео то скорее оффер именно тебе кинут
@@podsvinokSatani ну если очень хочется выделится можно сказать что знаешь 2 способа)
@@monarch8188 ну а если не знаешь, то лучше не выделяться)
Спасибо огромное за такой полезный и интересный контент! Несмотря на то, что работаю java разработчиком около года, в каждом интервью подмечаю для себя важные моменты, которые со временем забылись.
Спасибо за отзыв!
Женя, спасибо за выпуск, как всегда супер!!! Через неделю открываю резюме для поиска работы Java Junior и твои видео как раз кстати)) СПАСИБО ОГРОМНОЕ!
Спасибо за отзыв!
Ну что, как успехи с работой?
Спасибо за труд! Видео так и прут.
Видимо заявок очень много =) Спасибо за отзывчивость!
Спасибо за отзыв!
Спасибо за труд. Интересные вопросы...
Спасибо за отзыв!
Евгений, спасибо вам за ваш труд и этот контент
Спасибо за отзыв, Арина!
супер. побольше таких выпусков делайте.
Спасибо :)
Спасибо! Очень полезно!
Спасибо :)
За все 13 эпизодов этого захватывающего сериала, уже и самому захотелось попасть на кастинг актеров и сдебютировать на голобом экране ютуба)))
Спасибо тебе чувак из Питера что взял весь позор на себя при всех. Это достойно уважения.
А в чем позор то? Пробелы есть, но держится бойко, это важно. Да и в принципе - если не пытаться, то ничего и не достичь
Мое почтение! Про неизменяемые классы аж подвис. Record можно назвать неизменяемым классом.
Яркий пример =) когда читал там и там - но сугубо практике не уделял внимание. Отличный questions map - очередной! Но кандидат не промах - когда о LinkedList вопрос был, явно ощущается таймгеп на поиск ответа;)
Спасибо, Евгений)) терпение тебе не занимать ))
Спрашивать про CAP-теорему у джуна на мой взгляд жестковато
Таски с лит кода это круто)
вот всегда было интересно, все кто записывался на собес, не смотрели ранее вышедшие тестовые собеседования? вопросы более чем схожие, особенно про сложности Big O notation
Извечно холиварная тема полиморфизма в контексте переопределения и перегрузки методов. :)
ИМХО:
• Переопределение метода - динамический полиморфизм;
• Перегрузка метода - статический полиморфизм.
Теперь можете меня пинать ногами за перегрузку :)
пурум-пурум
есть такое..
Блин, я орнул с того, что типа подсказок больше не будет, потом про середину заходит вопрос, Евгений встаёт и уходит)))
:)
Нормальные такие вопросы для "будущего разработчика". Что такое идемпотентность, например, я сам пару месяцев назад узнал, спустя 1.5 года работы)
я про неё узнал, когда изучал Ansible :)
Я узнал, когда изучал Spring)
@Ali Zhumagaliev действительно, что это ты про это вспомнил?
@@arthurfonzerelli6484 Уахахахахахха)
Скажите пожалуйста( я даже близко не программист, но эта тема интересна) касаемо алгоритмической задачи:
Мог бы я допустим, использовать свойство экспонентов, что корень числа - число возведённое в степень 1/2. То есть, тупо реализовать функцию степени и возводить число в эту степень, или это не допустимо в условиях задачи?
39:58 я подумал, ты решил что с тебя хватит на сегодня
)))
Женя, спасибо за видео и твой труд! Очень полезный материал!)
А как можно попасть к тебе на тестовое собеседование?
Спасибо за отзыв! Напишите мне на почту - proselytear@yahoo.com -
обсудим
> какие состояния объекта есть в Hibernate
> уровни пропагации транзакций в Spring Data
> жизненный цикл Bean в Spring
Спасибо, что не про WebLogic!
Всегда пожалуйста)
Да...Java и весь энтерпрайз стек такое поле для вопросов на собеседованиях.
Кааааеф!
Особенность данного кандидата - он на каждый вопрос, на который не знает ответ, вываливает все что знает из области вопроса. Напоминает как нам когда-то в универе говорили: если на экзамене не знаете что отвечать - рассказывайте все что знаете.
Евгений, с Вашей точки зрения, как собеседующего: нужно ли так делать или лучше сразу говорить, что не знаешь ответ на вопрос, или истина где-то посредине?
В данном случае, будь я на месте собеседующего, я бы сделал вывод, что кандидат не имеет представления о чем он рассказывает, а просто выполняет пересказ заученной информации, что не так уж и здорово.
В целом, если ответа на вопрос не было, то это и будет отмечено :)
Обычно, попытки уйти от прямого ответа воспринимаются нормально, но на общую «оценку» кандидата видео именно ответ на оставленный вопрос.
Решила задачу таким образом: if(input1){ if(mid*mid
Вы не учли что максимальное число может быть например 30. И ближайшее число в квадрате - это 25. Не хватает ещё одного if. И да, лучше условия задавать через else if. Тогда производительность метода будет выше тут вы верно подметили.
Здравствуйте, если я понял правильно задачу, решение можно записать в таком виде:
public static int calculateSqrt(int input){
int output = 0;
while (input >= Math.pow(output,2)){
output++;
}
return --output;
}
Если уже использовать библиотеку, то лучше использовать метод sqrt
Да можно еще проще :)
return (int)Math.sqrt(input);
Ай да Евгений! В задачке с бинарным поиском такая интрига) Последнее условие то не дописал)
а как самому попасть на собеседование к Евгению?
как попасть на интервью?
Про бинарный полезно, спасибо :) В плане того, что его тут вообще надо использовать (вообще наверное можно не только его) и про его сложность. Артемию совет посмотреть на www.codingame.com/
Спасибо, я не знал что такие проекты для учебы есть!
@@Artemey94 и там есть бинарный поиск и не только, главное не закапываться :)
@@ram0973 Круто!
Возникла небольшая дискуссия по поводу Вашего собеседования) Что имелось ввиду под перегрузкой методов 11:40? Overload или Override? Если имелась именно перегрузка, а не переопределение. Могли бы дать несколько аргументов почему?
Перегрузка- overloading
Этот тип полиморфизма, насколько мне известно, еще называют статическим.
Хорошо бы было, если бы вы говорили правильные ответы после вопросов, чтобы они запоминались
По опыту, запоминается тогда, когда человек сам ищет ответ на вопрос. Это наиболее эффективный способ, с моей точки зрения.
@@EugeneSuleimanov Это конечно, но все вопросы же не станешь гуглить, и тогда в памяти откладывается ответ, который дал собеседник, а он не всегда правильный.
Eugene Suleimanov если можно, лучше говорить верно или не верно. Так будет понятней нужно ли искать ответ.)
@@EugeneSuleimanov Хороший подход, я все вопросы гуглил, и курил стаковерфлоу)) много нового узнал. И да, я лично запоминаю так лучше, когда гуглишь ты находишь разные ответы, и самое главное разные нюансы данного вопроса.
Всегда считал, что есть четыре основных операции для оценки сложности (по времени или по памяти) - индексация, поиск, вставка и удаление. И вставка подразумевает, что мы уже стоим на нужном элементе, иначе непонятно надо до вставки выполнять поиск или индексацию, и тут уже есть варианты.
Представим себе подъезд дома - коллекцию квартир, на каждом ровно одна квартира и нужна на N этаже. Курьер Arraylist поехал на лифте на N этаж, а курьер LinkedList пошел пешком на этот же N этаж . А в случае поиска оба пешедралят по всем этажам до N и сравнивают номер этажа с искомым (коллекцию условно считаем неотсортированной)
Об этом я и говорил в видео. Есть теория, а есть практика. И вопрос был именно практический, как к будущему разработчику.
"И вставка подразумевает, что мы уже стоим на нужном элементе" - нет
Окей. Вопрос - какая сложность в терминах, что вставка = добраться до места (поиск или индексация) + вставка? Говорим про общий случай несортированный.
Распишу...
Поиском:
Массив = o(n) + o(n) = o(n)
Список = o(n) + o(1) = o(n)
Индексацией:
Массив = o(1) + o(n) = o(n)
Список = o(n) + o(1) = o(n)
Т.е. всегда o(n). Теперь объясните джунам - где же преимущество одной коллекции над другой в практическом применении? Везде o(n).
Отвечу, вставка - это вставка. Равно как и удаление - это удаление. А сложность нескольких операций - это сложность нескольких операций.
@@alexandernikolaev174 Все эти вопросы уже давно разобраны в любой базовой книжке по алгоритмам/структурам данных. "в практическом применении" - асимптотическая сложность не учитывает скрытую константу в алгоритме
решение задачки:
private static int sqrt(int value){
return Double.valueOf(Math.sqrt(value)).intValue();
}
но не через методы стандартной библиотеки. Я так понял нужна реализация без Math.sqrt
если хотите простых решений, то простой перебор типа: for (int i = 0; ; i++) {
if (i * i == value) {
return i;
} else if (i * i > value) {
return i - 1;
}
}
@@user-b0b1 ну получается если Integer.MAX_VALUE то время выполнения будет очень долгое. По сравнению с бинарным поиском
@@user-qx5kl9tb9x я разве писал, что это оптимальное решение? я написал что это самое простое.
@@user-qx5kl9tb9x охуенно
А Math.sqrt можно было использовать в первом задании?)))
Нет ))
Лайкнул. Подписался. Но спрошу. Какая идея такого формата? Список вопросов - есть в описании, да и в сети их легко найти, ответы - лучше не слушать: даже если человек отвечает правильно, чаще всего это звучит как "Рабинович мне напел". Было бы полезно, если бы в итоге по каждому вопросу был дан ответ, который предполагалось услышать.
Ха!
Slack на панели задач! :)
Если это Slack, то возникает вопрос, на сколько правильно стажировать Джунов, Мидлов и Сеньоров в одном потоке?
Решение задачи
public static int calculateSqrt(int value) {
public static int calculateSqrt(int value) {
int sqrt = value / 2;
while (sqrt > 0) {
if (sqrt * sqrt == value) {
return sqrt;
}
if ((sqrt + 1) * (sqrt + 1) < value) {
return sqrt + 1;
}
sqrt--;
}
return 1;
}
if ((sqrt + 1) * (sqrt + 1) < value) {
return sqrt + 1;
}
мне кажется или это условие никогда не выполнится?
Евгений подскажите как подготовиться по Многопоточности для собеседования!
Книга java concurrency in practice. "Есть" ее надо по маленьким кускам тщательно переваривая, чтобы понимание пришло. Только так. Пара статей на хабре еще есть обзорных.
@@eleias.singer ну 450 страниц можно долго читать, плюс код переписывать
@@caffeinejavacode1475 раньше начнешь, раньше закончишь) Если прочитаете хотя бы половину, то уже очень и очень хорошо. Там во второй половине уже про более специфичные инструменты рассказывают.
@@caffeinejavacode1475 этот вариант правда самый действенный и пользы будет гораздо больше, если бы прочтете первые 100 страниц, чем охватите все и сразу по статьям и видео-урокам.
@@eleias.singer Вот только про многопоточность на 8 из 10 собеседований зададут пару вопросов. Гораздо эффективнее потратить это время на те же коллекции.
13 воин из Питера :)
Здравствуйте а нельзя сделать так?
int input = new Scanner(System.in);
int х=1;
boolean flag = true;
while(flag){
if(x*x>input)
{ sout(x-1); flag=false;}
x++;}
Я понял основную идею вашего подхода, но, сложность будет линейной, а не логарифмической
Немного странновато выглядит. counter переменная объявлена и не используется. Чему равен x вначале? Нету return значения. Если я правильно понял изначальную идею, то просто идём от единицы и проверяем все квадраты. Так можно, но это менее эффективно. Чем больше будет инпут, тем затратнее будет выполнение метода. Бинарное дерево намного меньше операций возведения в квадрат произведёт. Разделяй и властвуй во всей красе)
@@SleePokeR ахахах, да я думал и писал одновременно, сори за такой шлак, там х вместо каунтера)
@@EugeneSuleimanov а почему линейной, а не О(корняКвадратногоИзN)?
Хм, полностью не посмотрел как он решал задачу, потому что там какая-то жесть, но решение мне кажется должно быть типо: return (int) Math.sqrt(input); ну мб еще проверку что не отрицательное число добавить максимум) и все))
Ёмко :)
@@EugeneSuleimanov Я думал что return input^0.5; :))
Хаха, пока рановато использовать готовые методы))
@@alexfisher9679 класс Math -стандартная библиотека джава, это даже не сторонняя либа) Поэтому это самое логичное решение поставленной задачи, чем мудрить свою какую-то логику по вычислению корня на фиг знает сколько строк))Имхо)
Тож задачка не понравилась.
мда.....слабоват собеседник, самый сильный за последнее время был бывший медик(
для джуниора по core нормально
@@tolyaaniskevich763до джуна далековато
Привет Евгений, был бы признателен за возможность пообщаться с тобой
Сейчас ищу работу на позицию Джуниор разработчика на джаве.
Был бы рад за обратную связь.
Готов заплатить за твое время.
Хорошего дня.
int mid = low + (high - low) / 2, а зачем это? Если можно int mid = high / 2? low = 0 ведь.
Попробуйте пройтись дебаггером по вашему решению, если не ошибаюсь, то если мы пойдём вправо от середины, то получим не корректную работу алгоритма.
В реляционных базах данных есть связи. Между таблицами? Нет. О_о
return (int)Math.floor(Math.sqrt(input)); не прошло бы?
Заработало бы, конечно :) Но, здесь хотелось увидеть иной подход к реализации.
Math.floor лишнее, (int) double и так кастит в нижнюю сторону
А я вначале подумал, что спросил бы: 1) валидация на инпут нужна? 2) Потом сходу (int) Math.sqrt(input) предложил бы) 3) А на бинарном поиске глядишь и завалился бы=) Полтора года коммерческого опыта работы на java, только недавно первый раз за всё время понадобились знания алгоритмов... А вообще, конечно, у кандидата серьёзный путь впереди. Желаю ему удачи, дисциплины и терпения! Без этого никак.
@@EugeneSuleimanov вы бинарный пойск не по полной использовали
public int calculateSquare(int number){
int i = 0;
for ( i = 1; i
видосики тема
Спасибо за комментарий!
"Решение алгоритмической задачи ":
Пытался найти иное, краткое и стабильное, решение посредством побитового сдвига вправо, где каждый сдвиг +1 к искомому результату, но потерпел фиаско :)
не слишком ли сложно?
while (true) {
for (int i = 0; i < input; i++) {
if (i * i == input) {
return i;
}
}input--;
}
Сложность линейная , Это не гуд
На какую должность его бы взяли или не взяли бы?
Думаю нет
static public int calculatorSqrt (int input){
if (input 0) return 1;
for (int i=2; i input) return i-1;
else if (i*i == input) return i;
else if (i*i< input) continue;}
return -1; }
Лебедев? ;)
Нет :) Фамилию уже добавил в название видео
Зачем Вы говорите что всё не плохо? 1:02:29 Сегодня у Вас даже не хватило терпения осилить алгоритмическую задачу. В предыдущих 2 собеседованиях Вы тоже по моему говорили что всё неплохо. На мой взгляд на последних 3 собеседованиях ребята реально слабые. Что Вы вкладываете в понятия "всё не плохо"? Почему им не сказать что они LowSkill'ы. На мой взгляд ребятам ещё учиться и учиться до java junior.
Мне кажется, вы несколько переоценивать требования к trainee. Пробелы, безусловно, есть, но я бы не сказал, что они фатальные.
Надеюсь ты не руководитель проектов и не работаешь с людьми, никогда не работай с людьми пожалуйста
Мне показалос, что Артемий пытался несколько раз уходить от вопросов,на который он не знал точного ответа.
А ты бы как поступил, если бы не получил нормального образования по it?
Честно, не пойму, зачем писать столько лишнего кода да ещё и столько времени, прибегая к рекурсии.
public int calculateSqrt(int n) {
int r = n;
while (r*r > n)
r = (r + n/r) / 2;
return value;
}
с каких это пор перегрузка метода стала реализацией полиморфизма? если класс с перегруженными методами может ни наследовать, ни реализовать интерфейс. а?
beginnersbook.com/2013/03/polymorphism-in-java/
Но, споров на эту тему много :)
@@EugeneSuleimanov ключевое слово даже по твоей ссылке, это EXTENDS (то есть наследование)
перегрузка методов, не требует ни extends, ни implements. они вообще не связаны между собой.
причем там
1) вариант это наследование в чистом виде,
2) вариант это делегирование
а где перегрузка
@@NummeSpnet 1. Method Overloading in Java - This is an example of compile time (or static polymorphism)
Это цитата из статьи
@@EugeneSuleimanov ты меня видимо не читаешь. а как ты тогда ответишь на это, что можно перегрузить метод без наследования и реализации интерфейса, какое тогда это имеет отношение к полиморфизму? если класс ни реализовывает интерфейс, ни наследует класс. он вообще автономный. тоже скажешь что это полиморфизм?
@@NummeSpnet я уже писал выше, что статический полиморфизм уже давно является темой споров. И та и другая стороны приводят свои аргументы.
Это как пробелы против табуляции.
Я всего лишь привёл ссылку на 1 из многочисленных источников, не пытаясь сказать, что ты не прав.
Странный заголовок
исправлено
явно же видно, кандидат читает со шпор, или скорей даже гуглит с телефона((
Евгений А не факт! Он вроде сидел с листиком и ручкой.
Лично я не заметил, но, могу ошибаться
Тоже показалось странным, что отвечает не сразу, но может у него память так работает. У меня есть специальная папка с картинками- например все коллекции на одной картинке с иерархией, слои clean architecture, жизненный цикл activity и тд, чтобы можно было быстро подсмотреть)) и так лучше запоминается
yest takoye, na 49:35 sli6no kak klikayet mi6koy, no on uje plaval tak 4to kak to prostitelno
за шо так душишь. вопросы явно не джуновские)
По моему опыту, именно то, что спрашивают )
На галерах по жёстче спрашивают
Привет, касательно задачи, если сделать так?:
public long calcSqrt (int a){
double temp=(double) Math.sqrt(a);
if (temp%1==0){
return (long)temp;
}
else
return calcSqrt(a-1);
}
public int calcSqrt (int a ) {
return (int) Math.sqrt(a);
}
Вайти вайтишник одним словом:) Лучше бы во фронтенд без бэкграунда идти...
Поставил лайк, но задачка бессмысленная. Для получения квадратного корня есть библиотечный метод "из коробки". Она скорее проверяет избыточное знание математики, а не умение думать.
Она проверяет 1. Алгоритмическое мышление 2. Может ли человек вообще что-то решить, или просто выучил спецификации. 3. Способ, как человек решает задачу (уточняет ли он условия, стиль кодирования, скорость написание кода...) 4. Да много еще что проверяет. Для знания теории есть другие вопросы.
Насчет final String не понял:
String name = "scott";
name = "tiger"; // OK
final String gender = "male";
gender = "female"; // won't compile you cannot reassign gender cause it's final
public final class String
@@LionKing-qp1lk Если класс final, то от него нельзя наследоваться, они говорили про переменную насколько я понял.
@@user-fi7ih1yg5n видео не смотрел, но какая разница String или не String финализированная переменная? Вы не сможете её переопределить после того, как уже присвоили ей значение. С таким же успехом вы можете использовать любые примитивы, которые будут константами и объекты, при том, что сам объект сможет меняться, а вот ссылка на него будет жестко закреплена за вашим полем.
Интервью начинается с 45-й минуты, до этого "угадайка" ничего общего с разработкой не имеющая.
Ну что сложно пояснять неверные ответы для людеЙ?
Ну что сложно загуглитЬ?
*Для тех кто в танке:* это записи примеров собеседований, а не обучающие видео (хотя их можно использовать с этой целью самостоятельно), т.е. чтобы зрители имели представление как происходит процесс собеседования, чтобы получить опыт собеседования не проходя его лично. В дополнение к этому, зритель получает опыт самостоятельного заполнения собственных пробелов, поскольку после реального собеседования полагается свои пробелы заполнять самостоятельно.
Беспалевный чувак.