02:21 Java хэш-мап: устройство и использование 06:23 Понимание операций со связанными списками имеет решающее значение для оптимизации производительности. 08:13 Оптимизация макета интервью в Java middle+ с использованием собственных вызовов функций 11:50 Начинать с микросервисов оправдано при определенных условиях 13:34 Рассмотрите возможность разбиения монолита на микросервисы для минимальных накладных расходов. 16:55 Высокий уровень абстракции приводит к сложности кода 18:23 Нетворкинг и обмен данными 21:36 Синхронное взаимодействие в Java 23:15 Понимание алгоритма и его практическая реализация на собеседованиях по Java 26:37 Производительность и интеграция 27:56 Обсуждение асинхронного кодирования на Java 32:29 Использование двоичного поиска для поиска среднего элемента массива 36:59 Понимание того, как перемещаться и корректировать границы во время двоичного поиска. 44:51 Попытка кодировать 47:08 Реализация рекурсивной функции 53:42 Обсуждение базового алгоритма двоичного поиска 55:42 Эффективность работы с базовыми коллекциями - ключевой навык
27:00 так парень все про это как раз и рассказал. Главное ему быть более уверенным и не говорить, что мало практики. Так как он все грамотно отвечал. И видно, что не просто заучил, а есть понимание как это все работает. Мне понравилось. Интереснее смотреть именно собеседование middle и senior. Сам как раз сейчас собираюсь проходить собеседование, и надо именно подтянуть теорию. Подписка
(right + left) / 2 -> можем получить переполнение по инту. Середина в бинарном поиске ищется через left + (right - left) / 2 В рекурсии также не учтен вариант когда мы должны получить -1 В целом собес понравился, подписка😄
Рекурсивный бинарный поиск так реализованный имеет сложность O(n). Т.е. почти так же, как в лоб на неотсортированном да еще и память берет. Обязательно bsearchRec(int a[], int val, int left, int right) { .. } и только тогда будет логарифмическая сложность. Но сейчас надо быстро писать, хот клавиши использовать, а эффективность на втором плане. Если n = 2млд. - макс. инт, то O(n) - это около 2 млд, а O(log n) - это 31 шаг, 31 и 2 млд. сравните! Сложность из-за копирования массивов внутри рассмотренной рекурсивной реализации! Я это сразу вижу. А вот пишу я медленно, медленнее в 2-3 раза чем в видео, хотя хорошо знаю и много раз писал этот алгоритм и его модификацию. Можно ведь спросить найти самый правый или самый левый элемент равный данному в отсортированном массиве, или найти место, куда вставить. Но тогда еще больше времени на программирование потребуется. А ценится не алгоритм, а что быстро пишешь! Неэффективно, но быстро. Да, сейчас ценится не эффективность, а быстрота написания кода и уверенность в себе. Хорошо бы знать, в каких задачах требуется хорошая эффективность, хорошее знание алгоритмов. Говорят, что в основном там, где речь идет о высоко нагруженных системах. Так ли это?
Специфика интервью к сожалению в том что у кандидата и собеседующего ограниченное время, поэтому если проверяют формально то человек который пишет медленно не пройдет( Но к счастью много и таких фирм где ребята подходят к отбору ответственно и смотрят больше на понимание чем на быстрый результат. Эффективность алгоритмов и мат аппарат часто требуется где есть высокие нагрузки (реальные). Как пример таких направлений - HFT, Crypto, Gambling, Dating, близкие к железу (computer vision, hard realtime)
Кандидат интересный, но многое ещё необходимо структурировать ему. А так да, ощущение что рабочий опыт имеется, а навык прохождения интервью только приобретается. Тяжеловато было слушать, как он писал и рассуждал над бинарным поиском. Возможно, несмотря на возраст, тоже волновался, но параллельно я сам написал алгоритм. Вопросы хорошие, над некоторыми вещами сам не задумывался: а почему делаем так, а не иначе? В целом спасибо за видео, было познавательно!)
Спасибо за видео. Потратили половину времени интервью на написание бинарного поиска. Зачем это здесь, какую информацию об опыте соискателя может вынести из этого работодатель? Что человек на позицию mid может писать код на уровне студента первого курса? Не лучшее использование времени, imho.
Это задача для разминки, делается за условные 5-10 минут, что бы "размять пальцы". Иногда даже она не получается, так что нет большого смысла в таком случае давать более сложные алгоритмы
@@digital_train та говно это бесполезное, любая современная ллмка тебе его за 5 секунд напишет тот алгоритм, и скажет еще какой лучше имплементироватьв данной конкретной ситуации, имплементация классических алгоритмов уже бесполезна в качестве важного скилла. Лучше просто задачу на подумать без привязки к алгоритмам, что то что не решается как по учебнику, но не слишком сложное.
Про линкед лист вообще что-то странное. Линкедлист СЛИШКОМ специфичная структура данных, в первую очередь линкедлист слаб тем, что данные по памяти разбросаны, соответственно даже банальная итерация в нем происходит дольше
Та он вообще душный, по теории мужчина ответил на все!!!, что потом ведущий перечислил, что это не сказал. Конкретно тел про взаимодействие между мткросервисами.
На заметку мужичку, если тебя интервьюер перебивает, значит он услышал твой ответ и хочет уточнить еще что-то, не стоит повышать голос с целью «не перебивайте меня, я договорить хочу»
public static int name(int[] array, int target) { boolean res = false; int index = 0; for (int i = 0; i < array.length; i++) { if (target == array[i]) { index = i; res = true; break; } } if (!res) { index = -1; } return index; } }
02:21 Java хэш-мап: устройство и использование
06:23 Понимание операций со связанными списками имеет решающее значение для оптимизации производительности.
08:13 Оптимизация макета интервью в Java middle+ с использованием собственных вызовов функций
11:50 Начинать с микросервисов оправдано при определенных условиях
13:34 Рассмотрите возможность разбиения монолита на микросервисы для минимальных накладных расходов.
16:55 Высокий уровень абстракции приводит к сложности кода
18:23 Нетворкинг и обмен данными
21:36 Синхронное взаимодействие в Java
23:15 Понимание алгоритма и его практическая реализация на собеседованиях по Java
26:37 Производительность и интеграция
27:56 Обсуждение асинхронного кодирования на Java
32:29 Использование двоичного поиска для поиска среднего элемента массива
36:59 Понимание того, как перемещаться и корректировать границы во время двоичного поиска.
44:51 Попытка кодировать
47:08 Реализация рекурсивной функции
53:42 Обсуждение базового алгоритма двоичного поиска
55:42 Эффективность работы с базовыми коллекциями - ключевой навык
27:00 так парень все про это как раз и рассказал. Главное ему быть более уверенным и не говорить, что мало практики. Так как он все грамотно отвечал. И видно, что не просто заучил, а есть понимание как это все работает. Мне понравилось. Интереснее смотреть именно собеседование middle и senior. Сам как раз сейчас собираюсь проходить собеседование, и надо именно подтянуть теорию. Подписка
(right + left) / 2 -> можем получить переполнение по инту. Середина в бинарном поиске ищется через left + (right - left) / 2
В рекурсии также не учтен вариант когда мы должны получить -1
В целом собес понравился, подписка😄
Требуем больше таких видео!
Хорошее интервью, молодцы
Рекурсивный бинарный поиск так реализованный имеет сложность O(n). Т.е. почти так же, как в лоб на неотсортированном да еще и память берет. Обязательно bsearchRec(int a[], int val, int left, int right) { .. } и только тогда будет логарифмическая сложность. Но сейчас надо быстро писать, хот клавиши использовать, а эффективность на втором плане. Если n = 2млд. - макс. инт, то O(n) - это около 2 млд, а O(log n) - это 31 шаг, 31 и 2 млд. сравните! Сложность из-за копирования массивов внутри рассмотренной рекурсивной реализации! Я это сразу вижу. А вот пишу я медленно, медленнее в 2-3 раза чем в видео, хотя хорошо знаю и много раз писал этот алгоритм и его модификацию. Можно ведь спросить найти самый правый или самый левый элемент равный данному в отсортированном массиве, или найти место, куда вставить. Но тогда еще больше времени на программирование потребуется. А ценится не алгоритм, а что быстро пишешь! Неэффективно, но быстро. Да, сейчас ценится не эффективность, а быстрота написания кода и уверенность в себе. Хорошо бы знать, в каких задачах требуется хорошая эффективность, хорошее знание алгоритмов. Говорят, что в основном там, где речь идет о высоко нагруженных системах. Так ли это?
Специфика интервью к сожалению в том что у кандидата и собеседующего ограниченное время, поэтому если проверяют формально то человек который пишет медленно не пройдет( Но к счастью много и таких фирм где ребята подходят к отбору ответственно и смотрят больше на понимание чем на быстрый результат.
Эффективность алгоритмов и мат аппарат часто требуется где есть высокие нагрузки (реальные). Как пример таких направлений - HFT, Crypto, Gambling, Dating, близкие к железу (computer vision, hard realtime)
Меня одного смущает, что видео о Java, а на превью код на JavaScript?
@@aau8 пасхалка
Я правильно понимаю что на мидл такие вопросы не задают ?
Не все, но задают)
@@digital_train хочу добавить, что видео очень интересное получилось
Кандидат интересный, но многое ещё необходимо структурировать ему.
А так да, ощущение что рабочий опыт имеется, а навык прохождения интервью только приобретается.
Тяжеловато было слушать, как он писал и рассуждал над бинарным поиском.
Возможно, несмотря на возраст, тоже волновался, но параллельно я сам написал алгоритм.
Вопросы хорошие, над некоторыми вещами сам не задумывался: а почему делаем так, а не иначе?
В целом спасибо за видео, было познавательно!)
public static int name(int[] array, int target) {
// return IntStream.range(0, array.length)
// .filter(i -> array[i] == target)
// .findFirst()
// .orElse(-1);
// }
//}
Сто это за новый синтаксис -> ?
@@hostvi человек из 2012, эта лямбда из джава 8. Появилась 10 лет назад...новый синтаксис блин)))
Спасибо за видео.
Потратили половину времени интервью на написание бинарного поиска. Зачем это здесь, какую информацию об опыте соискателя может вынести из этого работодатель? Что человек на позицию mid может писать код на уровне студента первого курса? Не лучшее использование времени, imho.
Это задача для разминки, делается за условные 5-10 минут, что бы "размять пальцы". Иногда даже она не получается, так что нет большого смысла в таком случае давать более сложные алгоритмы
@@digital_train та говно это бесполезное, любая современная ллмка тебе его за 5 секунд напишет тот алгоритм, и скажет еще какой лучше имплементироватьв данной конкретной ситуации, имплементация классических алгоритмов уже бесполезна в качестве важного скилла. Лучше просто задачу на подумать без привязки к алгоритмам, что то что не решается как по учебнику, но не слишком сложное.
Про линкед лист вообще что-то странное. Линкедлист СЛИШКОМ специфичная структура данных, в первую очередь линкедлист слаб тем, что данные по памяти разбросаны, соответственно даже банальная итерация в нем происходит дольше
@@Ополз ArrayList наше все
ммм алгоритм бинарного поиска на несколько минут дольше писал и хоткеи не использует. боже дай сил окружающим интервьюера)))
Та он вообще душный, по теории мужчина ответил на все!!!, что потом ведущий перечислил, что это не сказал. Конкретно тел про взаимодействие между мткросервисами.
На заметку мужичку, если тебя интервьюер перебивает, значит он услышал твой ответ и хочет уточнить еще что-то, не стоит повышать голос с целью «не перебивайте меня, я договорить хочу»
согласен
public static int name(int[] array, int target) {
boolean res = false;
int index = 0;
for (int i = 0; i < array.length; i++) {
if (target == array[i]) {
index = i;
res = true;
break;
}
}
if (!res) {
index = -1;
}
return index;
}
}
@@vollkovfamilly это полный перебор O(n)
Бинарный поиск дает лучший результат на отсортированных данных O(log n)
щас бы в 2024 году на собеседовании просить бинарный поиск рекурсивно написать...
@@SarkhanTakhirov а какие задачи стоит давать для разогрева?
@@digital_train кодревью, лайвкод зашквар
Ну про микросервисы и монолит ответ слабый был.
@@AfromA-bu1bh хй у тебя слабый ))
@@MrRomanvideo боюсь спросить откуда инфа?)))
нормально он ответил на этот вопрос
Больше полезных материалов и видео на моем канале, telegram: t.me/digital_train