Java Interview Tasks
Open in Telegram
Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Show more4 521
Subscribers
-124 hours
-107 days
-2330 days
Posts Archive
4 521
Оцените код по 10-ти бальной системе (10 - наилучший код в истории человечества)
4 521
🔍 Ответ на задачу про сравнение строк в Java
Давайте разберемся, что напечатает приведённый код! 🚀
String a = "ab";
String b = "a" + "b";
String c = "a";
String d = c + "b";
System.out.println(a == b);
System.out.println(a == d);
System.out.println(a.equals(d));
Этот код выводит на экран:
true — В первом сравнении (a == b), оба операнда являются строковыми литералами, и компилятор оптимизирует их, так что они указывают на один и тот же объект в строковом пуле.
false — Во втором сравнении (a == d), d создается путем конкатенации на этапе выполнения, из-за чего она не будет указывать на тот же объект в строковом пуле, что и a.
true — В третьем сравнении (a.equals(d)), метод equals сравнивает содержимое строк, а не их ссылки, потому этот результат будет true, так как содержимое одинаково.
Интересно, правда? 😄 Не забудьте, что использование оператора == для сравнения строк может привести к неожиданным результатам. Для проверки эквивалентности строк на уровне содержимого всегда используйте equals. ✅
Ставьте лайк, подписывайтесь на канал и оставляйте комментарии! 💬👉
#Java #StringComparison #ИзучаемJava #java_interview_tasks4 521
#реклама
Друзья , топ-10 списков устаревают уже через неделю. Где найти актуальные имена и контакты тех, кто сейчас определяет развитие Искусственного Интеллекта? 🤔
Правильный ответ : Папка "AI Pulse" в закрепе канала. Здесь постоянное обновление ключевых игроков.
Это не Wikipedia. Это твой личный шорт-лист для погружения в реальный мир AI.
👉 Убедись, что подписан – папка уже доступна
4 521
Друзья, нужна ваша поддержка! 🙌
Если контент вам нравится, проголосуйте за канал! Ваш голос очень важен, и он поможет каналу расти и продолжать делиться интересными задачами и полезными материалами.
Пройдите по ссылке и отдайте свой голос за канал: https://t.me/boost/java_interview_tasks 🌟🌟🌟
Ваша поддержка — это мой самый сильный стимул становиться лучше. Большое спасибо каждому, кто уже подписался и активно участвует в жизни нашего канала! 💪❤️
4 521
Яндекс создаёт продукты и сервисы для миллионов пользователей. Нейросетевой поиск, умные устройства, машинный перевод — задачи, где нет готовых решений.
Поэтому нам нужны сильные бэкенд-разработчики! Если у вас от 5 лет опыта на C++, Python, Java или Go — участвуйте в Мультитреке.
Как это работает
• Подаёте заявку до 18 августа
• Проходите технические секции 23 и 24 августа
• Получаете офер 24 августа
После найма мы предложим поработать в трёх командах несколько недель. Будет время погрузиться в работу, прочувствовать атмосферу и выбрать проект, который вам больше подходит.
Узнайте подробности и оставьте заявку.
4 521
#реклама
Смотрю сейчас на каналы с которыми мы объединились в папку и понимаю какой крутой контент у них. Очень разносторонние эксперты, советую тебе пойти их почитать. Если что, вот ссылка на экспертов еще раз:
https://t.me/addlist/UhAsAWNh4E1mNTM6
4 521
Как тебе не проспать очередной год?
Оглянуться не успеешь, а август уже будет подходить к концу. Это значит, что до выполнения твоих целей осталось всего 6 месяцев!
Предлагаю включиться в работу прямо сейчас!
Для этого мы собрались с экспертами из разных сфер и приготовили все необходимые материалы для прорыва в 2025 году!
Тебе осталось просто изучить все и применить.
Мы собрали пошаговые инструкции, связки, разборы, гайды и полезные инструкции в отдельных каналах.
Для того, чтобы забрать все полезные материалы, нажми СЮДА и добавь себе в папку.
В течение 1-3 дней каждый эксперт поделится в своем канале полезными материалами, поэтому подписывайся и внимательно следи.
УСЛОВИЕ ПОЛУЧЕНИЯ ОДНО
🚀Жмите на этот текст и добавляй себе папку
Такую информацию обычно дают на платных курсах или в закрытых сообществах. Мы поделимся ей просто так.
👉🏻Забрать весь материал можно по этой ссылке:
https://t.me/addlist/UhAsAWNh4E1mNTM6
Главное, следи за каналами, которые появятся в папке.
Там постоянно выходят новые связки и алгоритмы, которых еще нет на рынке.
4 521
Repost from Верхняя полка📝
Наверняка эта задачка входит в число хрестоматийных и встречается на собеседованиях по #Java, но поскольку я по ним не хожу, пришлось убить часок на разбирательство с ней. Поделюсь с вами; вдруг кто-то тоже встретит.
🎓 Дано
Ванильный пул потоков на голом JDK (аналоги из класса
Executors не подходят):
var threadPool = new ThreadPoolExecutor(
corePoolSize, // 3
maxPoolSize, // 30
keepAliveTime, // 60
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(maxQueueLength), // 100
Executors.defaultThreadFactory(),
new DiscardPolicy()); // could also be a logging implementation
И некий метод, который сначала просто напихивает задачки в этот пул:
List<Future> futures = new ArrayList<>();
futures.add(threadPool.submit(task));
, потом идёт по своим делам, а когда заканчивает с ними, проверяет готовность задачек и, если надо, дожидается завершения каждой, чтобы продолжить работу дальше:
for (Future future : futures) {
try {
future.get();
}
catch (Exception e) {
log.error("Failed to get task result from future", e);
}
}
🔍 Найти
Какого _🙊_ в некоторых случаях метод намертво зависает на вызове future.get()?
При этом в дампе потоков нет никаких следов задач, которые бы зависли/зациклились/заблокированы.
🔑 Решение
Вариант 1. Добавить таймаут в метод future.get(). Да, это решит проблему, но не даст понять, почему она появилась.
Вариант 2. Извернуться как-нибудь так, чтобы прийти к вызову вида CompletableFuture.allOf(c1, c2, c3).join(). Наверняка так можно (не проверял), но выглядит избыточно сложно, должно же работать и так.
Вариант 3. Обернуть вызов future.get() вот в такое условие:
if (future.isDone()) {
future.get();
}
Казалось бы, смысла в нём нет, ведь если задача не завершена (isDone() == false), то мы просто дождёмся её завершения при вызове get(). Но нет. Когда мы имеем дело с ThreadPoolExecutor, то при вызове submit() он в качестве имплементации Future возвращает экземпляр FutureTask, у которого метод isDone() выглядит так:
public boolean isDone() {
return state != NEW;
}
, то есть "сделанной" считается любая не новая задача (в том числе когда она ещё в работе).
А метод FutureTask.get() устроен так:
public V get() throws InterruptedException, ExecutionException {
int s = state;
if (s <= COMPLETING)
s = awaitDone(false, 0L);
return report(s);
}
, то есть ожидание наступит для любого состояния, предшествующего завершению, в том числе для вышеупомянутого NEW (на самом деле только для NEW и COMPLETING).
Но если бы задача, на которой завис наш поток, была в состоянии COMPLETING, мы наверняка увидели бы соответствующий ей поток в дампе, а раз его нет, значит, она в NEW.
А как она могла оказаться NEW, если все задачи вроде как были переданы пулу на исполнение? Видимо, он её не взял. А почему не взял? Правильно — из-за переполнения очереди, ведь она ограничена (new LinkedBlockingQueue<>(maxQueueLength)). А почему тогда это не привело к ошибкам и прерыванию всего процесса? Верно, из-за с виду безобидной new DiscardPolicy(), которая просто дропает не влезшие задачки (и логирует их, как было в нашем случае).
✅ Вся цепочка кратко:
— не влезающие в очередь задачи молча отбрасываются политикой пула, оставляя им статус NEW;
— видя этот статус, метод future.get() впадает в бесконечное ожидание;
— исключить ожидание можно добавлением проверки на NEW в виде вызова future.isDone().
⚠️ Если очередь будет большой, а задачи — долгоиграющими, можно нарваться на случай, когда задача уже в очереди и имеет шанс быть выполненной, но цикл с вызовом get() её не подождёт. В этом случае решение должно быть другим.
Мораль: пишите однопоточные приложения🤪4 521
🔍 Ответ на задачу про логические операторы
Давайте разберем работу логических операторов в данном коде на Java. У нас есть три логические переменные: a, b, и c, со значениями true, false, и false соответственно. В условии if используется комбинация операторов (логическое "ИЛИ") и && (логическое "И").
Стоит помнить, что оператор && имеет более высокий приоритет, чем оператор . Поэтому выражение b && c будет вычислено первым. Но поскольку b равно false, а c также false, это выражение дает в результате false.
Далее, выражение a false будет всегда истинным, так как a равно true. Следовательно, полное условие в if равно true, и будет выполнена первая ветка блока:
1
Когда дело касается вложенных логических операторов в условных выражениях, расстановка скобок может значительно упростить понимание кода и избежать путаницы. В данном случае, добавим скобки для ясности:
boolean a = true;
boolean b = false;
boolean c = false;
if (a (b && c)) {
System.out.println("1");
} else {
System.out.println("2");
}
Скобки вокруг выражения (b && c) четко определяют, что это будет вычислено в первую очередь. Это не только делает код более понятным, но и исключает возможность неправильной интерпретации, особенно если у вас большой и сложный условный оператор.
Используйте скобки в логических выражениях, чтобы код был читаемым как для вас, так и для вашей команды! Рекомендуется всегда группировать логические операции скобками, если существует вероятность появления неоднозначности.
✍️ Научитесь писать чистый и понятный код! Поддержите эту идею, поставив лайк, подписывайтесь на канал и оставляйте комментарии с вашими мыслями об использовании скобок в коде.
#java #logicaloperators #boolean #clean_code #java_interview_tasks4 521
#реклама
Уважаемые коллеги, представляю базу авторитетных каналов по направлению :
Искусственный интеллект
Что полезного для вас?
✅самые свежие инструменты;
✅бесплатные курсы от гуру экспертов;
✅разборы кейсов;
✅Ии в повседневной жизни и бизнесе
Забирай и используй
4 521
VIP доступ к будущему, которое уже наступило: новая папка «IT & Технологии»! 💻
Мы собрали лучшие IT-каналы – это прямой доступ к актуальным новостям, трендам и экспертизе в мире технологий. Только самое ценное, без воды! 🌟
🔹 Техно-тренды: AI, Cybersecurity, Cloud и др.
🔹 Карьера: Найди работу мечты в IT.
🔹 Практика: Советы от профи.
🔹 Инструменты: Для эффективной работы.
Один клик – и ты в IT-будущем! 🔥
👉 ЗАБРАТЬ ПАПКУ СЕБЕ
Available now! Telegram Research 2025 — the year's key insights 
