Что напечатает код?
Anonymous Quiz
41%
3
21%
4
3%
0
18%
будет ексепшн
3%
будет что-то другое
13%
узнать ответ
🔥5😁3🤯3👍2
🔍 Ответ на задачу про преобразование List в Map в Java
Давайте разберём, что произойдёт в этом коде:
🔸 Мы превращаем список строк в Map, где ключ — длина строки, а значение — сама строка.
📌 Важно: toMap по умолчанию выбрасывает исключение, если встречает дубликаты ключей (а у нас ключи — длины строк).
При первом попадании строки длины 3 ("one") всё ок. Но когда попадётся "two" — возникнет конфликт ключей!
❗️ Результат: Код выбросит исключение типа IllegalStateException: Duplicate key
То есть ничего не напечатает, а программа упадёт с ошибкой.
✅ Если хотите избежать ошибки — добавьте в toMap третий аргумент (как решать конфликт):
🔔 Было полезно? Ставь лайк, подписывайся и пиши свои вопросы или комменты!
#java #stream #map #interview #toMap #java_interview_tasks
Давайте разберём, что произойдёт в этом коде:
List<String> list = Arrays.asList("one", "two", "three", "four");
Map<Integer, String> size2Str = list.stream()
.collect(Collectors.toMap(String::length, Function.identity()));
System.out.println(size2Str.size()); 🔸 Мы превращаем список строк в Map, где ключ — длина строки, а значение — сама строка.
📌 Важно: toMap по умолчанию выбрасывает исключение, если встречает дубликаты ключей (а у нас ключи — длины строк).
При первом попадании строки длины 3 ("one") всё ок. Но когда попадётся "two" — возникнет конфликт ключей!
❗️ Результат: Код выбросит исключение типа IllegalStateException: Duplicate key
То есть ничего не напечатает, а программа упадёт с ошибкой.
✅ Если хотите избежать ошибки — добавьте в toMap третий аргумент (как решать конфликт):
.collect(Collectors.toMap(String::length, Function.identity(), (s1, s2) -> s1))
// Этот вариант оставит первое значение.
🔔 Было полезно? Ставь лайк, подписывайся и пиши свои вопросы или комменты!
#java #stream #map #interview #toMap #java_interview_tasks
Telegram
Java Interview Tasks
Что напечатает код?
👍21❤4🔥4 1
🔥6👍2❤1 1
🔍 Ответ на задачу про рекурсию, try-catch и counter:
Что там происходит?
Каждый раз в try печатается "do" и выбрасывается исключение. Затем в catch, если counter <= 3 (а это true до значения 3 включительно), снова вызывается doWithCounter, увеличивая counter при этом!
⚠️ Но! Используется counter++, а не ++counter. Это значит, что в рекурсивный вызов идёт старое значение (а counter увеличится уже после передачи в функцию).
То есть вы всегда передаёте "0" в рекурсию, и создаётся бесконечная рекурсия.
❗️Первый вызов поймает исключение, зайдёт в catch и вызовет doWithCounter(0). Этот вызов опять напечатает "do" и опять вызовет doWithCounter(0), и так далее, пока не случится StackOverflowError. "do" будет выводиться до переполнения стека.
📢 Правильный ответ: "do" напечатается более 4-х раз.
👉 Было интересно? Ставь лайк, подписывайся и пиши вопросы в комментарии!
#java #recursion #exception #interview #стек #java_interview_tasks
Что там происходит?
Каждый раз в try печатается "do" и выбрасывается исключение. Затем в catch, если counter <= 3 (а это true до значения 3 включительно), снова вызывается doWithCounter, увеличивая counter при этом!
⚠️ Но! Используется counter++, а не ++counter. Это значит, что в рекурсивный вызов идёт старое значение (а counter увеличится уже после передачи в функцию).
То есть вы всегда передаёте "0" в рекурсию, и создаётся бесконечная рекурсия.
❗️Первый вызов поймает исключение, зайдёт в catch и вызовет doWithCounter(0). Этот вызов опять напечатает "do" и опять вызовет doWithCounter(0), и так далее, пока не случится StackOverflowError. "do" будет выводиться до переполнения стека.
📢 Правильный ответ: "do" напечатается более 4-х раз.
👉 Было интересно? Ставь лайк, подписывайся и пиши вопросы в комментарии!
#java #recursion #exception #interview #стек #java_interview_tasks
Telegram
Java Interview Tasks
Сколько раз напечатается "do"?
👍8🔥7❤1
Какой интерфейс в Java используется для сортировки?
Anonymous Quiz
6%
CompareTo
74%
Comparator
7%
Sort
13%
Sortable
🔥5❤1👍1
🔍 Друзья, разберёмся, какой интерфейс в Java используется для сортировки объектов! (Ответ на вопрос про интерфейсы для сравнения)
Правильный ответ: Comparator и Comparable.
Но из списка в впоросе верный вариант — Comparator!
Интерфейс Comparator используется для задания порядка сортировки объектов, когда нельзя или не хочется изменять сам класс объекта.
Для справки:
CompareTo, Sort и Sortable — таких интерфейсов в стандартной библиотеке Java нет.
👀 Пример применения Comparator:
Если было полезно — ставьте лайк, подписывайтесь на канал и пишите в комментариях, что бы ещё разобрать! 😉
#java_interview_tasks #java #интервью #собеседование #сортировка #Comparator #Comparable
Правильный ответ: Comparator и Comparable.
Но из списка в впоросе верный вариант — Comparator!
Интерфейс Comparator используется для задания порядка сортировки объектов, когда нельзя или не хочется изменять сам класс объекта.
Для справки:
CompareTo, Sort и Sortable — таких интерфейсов в стандартной библиотеке Java нет.
👀 Пример применения Comparator:
List<String> list = Arrays.asList("Java", "Python", "C++");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
System.out.println(list); // [Java, C++, Python]Если было полезно — ставьте лайк, подписывайтесь на канал и пишите в комментариях, что бы ещё разобрать! 😉
#java_interview_tasks #java #интервью #собеседование #сортировка #Comparator #Comparable
Telegram
Java Interview Tasks
Какой интерфейс в Java используется для сортировки?
CompareTo / Comparator / Sort / Sortable
CompareTo / Comparator / Sort / Sortable
👍10🔥5🤗2❤1
Forwarded from Spring АйО
This media is not supported in your browser
VIEW IN TELEGRAM
Теперь можно вызывать действия прямо из окна автодополнения. А если дважды нажать точку (..), появится список всех доступных действий.
Если зайдёт — добавят и в другие IDE. Выглядит удобно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5 2👍1🔥1
Что напечатает код?
Anonymous Quiz
9%
2000000000
35%
2000000000.0
4%
0
21%
будет ошибка
29%
будет что-то другое
2%
узнать ответ
🔍 Ответ на задачу про среднее двух чисел 💡
2_000_000_000 + 2_000_000_000 = 4_000_000_000
Но тут будет переполнение int 😱
Потому что тип int в Java ограничен максимумом в 2_147_483_647
4_000_000_000 выходит за пределы, результат сложения будет ОТРИЦАТЕЛЬНЫЙ (из-за переполнения)!
На деле (x + y) станет:
4000000000 - 2*2147483648 = -294967296
Дальше происходит деление -294967296 / 2 = -147483648
🔹 Ответ:
В консоль будет выведено: -147483648.0
❗️Тут ошибка в логике: надо было привести к long, либо double ДО сложения.
Понравилось объяснение? 👍
Ставьте лайк, подписывайтесь и пишите в комментариях, сталкивались ли вы с похожими проблемами!
#java #переполнение #арифметика #middlejava #интервью #java_interview_tasks
static double average(int x, int y) {
return (x + y) / 2;
}2_000_000_000 + 2_000_000_000 = 4_000_000_000
Но тут будет переполнение int 😱
Потому что тип int в Java ограничен максимумом в 2_147_483_647
4_000_000_000 выходит за пределы, результат сложения будет ОТРИЦАТЕЛЬНЫЙ (из-за переполнения)!
На деле (x + y) станет:
4000000000 - 2*2147483648 = -294967296
Дальше происходит деление -294967296 / 2 = -147483648
🔹 Ответ:
В консоль будет выведено: -147483648.0
❗️Тут ошибка в логике: надо было привести к long, либо double ДО сложения.
Понравилось объяснение? 👍
Ставьте лайк, подписывайтесь и пишите в комментариях, сталкивались ли вы с похожими проблемами!
#java #переполнение #арифметика #middlejava #интервью #java_interview_tasks
Telegram
Java Interview Tasks
Что напечатает код?
🔥8❤2 2