uz
Feedback
Java Interview Tasks

Java Interview Tasks

Kanalga Telegram’da o‘tish

Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks

Ko'proq ko'rsatish
4 521
Obunachilar
-324 soatlar
-97 kunlar
-2730 kunlar
Postlar arxiv
Что произойдет при выполнении следующего кода на Java?
Anonymous voting

Что произойдет при выполнении следующего кода на Java?
Что произойдет при выполнении следующего кода на Java?

Оцените код по 10-ти бальной системе (10 - наилучший код в истории человечества)
Anonymous voting

photo content

🔍 Ответ на задачу про сравнение строк в 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_tasks

#реклама Друзья , топ-10 списков устаревают уже через неделю. Где найти актуальные имена и контакты тех, кто сейчас определяе
#реклама Друзья , топ-10 списков устаревают уже через неделю. Где найти актуальные имена и контакты тех, кто сейчас определяет развитие Искусственного Интеллекта? 🤔 Правильный ответ : Папка "AI Pulse" в закрепе канала. Здесь постоянное обновление ключевых игроков. Это не Wikipedia. Это твой личный шорт-лист для погружения в реальный мир AI. 👉 Убедись, что подписан – папка уже доступна

Друзья, нужна ваша поддержка! 🙌 Если контент вам нравится, проголосуйте за канал! Ваш голос очень важен, и он поможет каналу расти и продолжать делиться интересными задачами и полезными материалами. Пройдите по ссылке и отдайте свой голос за канал: https://t.me/boost/java_interview_tasks 🌟🌟🌟 Ваша поддержка — это мой самый сильный стимул становиться лучше. Большое спасибо каждому, кто уже подписался и активно участвует в жизни нашего канала! 💪❤️

Что напечатает код?👆👆👆
Anonymous voting

Что напечатает код?
Что напечатает код?

Яндекс создаёт продукты и сервисы для миллионов пользователей. Нейросетевой поиск, умные устройства, машинный перевод — задач
Яндекс создаёт продукты и сервисы для миллионов пользователей. Нейросетевой поиск, умные устройства, машинный перевод — задачи, где нет готовых решений. Поэтому нам нужны сильные бэкенд-разработчики! Если у вас от 5 лет опыта на C++, Python, Java или Go — участвуйте в Мультитреке. Как это работает • Подаёте заявку до 18 августа • Проходите технические секции 23 и 24 августа • Получаете офер 24 августа После найма мы предложим поработать в трёх командах несколько недель. Будет время погрузиться в работу, прочувствовать атмосферу и выбрать проект, который вам больше подходит. Узнайте подробности и оставьте заявку.

#реклама Смотрю сейчас на каналы с которыми мы объединились в папку и понимаю какой крутой контент у них. Очень разносторонние эксперты, советую тебе пойти их почитать. Если что, вот ссылка на экспертов еще раз: https://t.me/addlist/UhAsAWNh4E1mNTM6

Как тебе не проспать очередной год? Оглянуться не успеешь, а август уже будет подходить к концу. Это значит, что до выполнения твоих целей осталось всего 6 месяцев! Предлагаю включиться в работу прямо сейчас! Для этого мы собрались с экспертами из разных сфер и приготовили все необходимые материалы для прорыва в 2025 году! Тебе осталось просто изучить все и применить. Мы собрали пошаговые инструкции, связки, разборы, гайды и полезные инструкции в отдельных каналах. Для того, чтобы забрать все полезные материалы, нажми СЮДА и добавь себе в папку. В течение 1-3 дней каждый эксперт поделится в своем канале полезными материалами, поэтому подписывайся и внимательно следи. УСЛОВИЕ ПОЛУЧЕНИЯ ОДНО 🚀Жмите на этот текст и добавляй себе папку Такую информацию обычно дают на платных курсах или в закрытых сообществах. Мы поделимся ей просто так. 👉🏻Забрать весь материал можно по этой ссылке: https://t.me/addlist/UhAsAWNh4E1mNTM6 Главное, следи за каналами, которые появятся в папке. Там постоянно выходят новые связки и алгоритмы, которых еще нет на рынке.

Наверняка эта задачка входит в число хрестоматийных и встречается на собеседованиях по #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() её не подождёт. В этом случае решение должно быть другим. Мораль: пишите однопоточные приложения🤪

Вот такую задачу с собеседования нашел: Что думаете?)

Как вам такое?)
Как вам такое?)

🔍 Ответ на задачу про логические операторы Давайте разберем работу логических операторов в данном коде на 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_tasks

#реклама Уважаемые коллеги, представляю базу авторитетных каналов по направлению : Искусственный интеллект Что полезного для
#реклама Уважаемые коллеги, представляю базу авторитетных каналов по направлению : Искусственный интеллект Что полезного для вас? ✅самые свежие инструменты; ✅бесплатные курсы от гуру экспертов; ✅разборы кейсов; ✅Ии в повседневной жизни и бизнесе Забирай и используй

Что напечатает код?
Anonymous voting

Что напечатает код?
Что напечатает код?

VIP доступ к будущему, которое уже наступило: новая папка «IT & Технологии»! 💻 Мы собрали лучшие IT-каналы – это прямой доступ к актуальным новостям, трендам и экспертизе в мире технологий. Только самое ценное, без воды! 🌟 🔹 Техно-тренды: AI, Cybersecurity, Cloud и др. 🔹 Карьера: Найди работу мечты в IT. 🔹 Практика: Советы от профи. 🔹 Инструменты: Для эффективной работы. Один клик – и ты в IT-будущем! 🔥 👉 ЗАБРАТЬ ПАПКУ СЕБЕ