Почему
Thread.sleep()
не освобождает монитор блокировки?Ответ:
Это происходит потому, что sleep() просто переводит поток в состояние ожидания (TIMED_WAITING), но не влияет на механизмы синхронизации. Пока поток “спит”, другие потоки не могут получить доступ к заблокированному ресурсу, так как монитор остается занятым.
Чтобы освободить монитор и дать другим потокам возможность выполнить код, необходимо использовать wait(), join(), Lock или Condition, которые позволяют явно управлять блокировкой и ожиданием.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥7👍4
В статье рассказывается, чем занимаются инженеры, которые не пишут на Java, а разрабатывают саму JVM.
Автор делится опытом работы над внутренностями виртуальной машины — от JIT-компиляции до сборщика мусора — и объясняет, почему новые возможности языка требуют времени и тонкой инженерной работы.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣45❤9
🤔11❤2🔥1
В статье разбирается, почему сохранение обратной совместимости в Java — это не только про стабильность, но и про необходимость тянуть за собой старые ошибки и ограничения.
На реальных примерах автор показывает, как мелкие изменения ломали код, и какие инструменты помогают контролировать API и автоматизировать миграции.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3
Что такое Redis и зачем он используется?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7🔥3👨💻2
Репозиторий best-system-design-resources — это аккуратно собранная подборка ресурсов по системному дизайну: книги, статьи, видео, курсы и разборы архитектур.
Что внутри:
▶ Основы: CAP-теорема, масштабирование, консистентность▶ Разбор ключевых компонентов: кэш, балансировка, шардирование, очереди▶ Примеры реальных систем: поисковики, видеохостинги, мессенджеры▶ Курсы и гайды: System Design Primer, Grokking, Gaurav Sen▶ Задачи и кейсы с интервью
Хорошая база, чтобы структурировать знания и увереннее разбираться в архитектуре крупных систем.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
Что такое брокер сообщений и какие из них обычно используются в проектах на Java?
Ответ:
В Java-проектах наиболее часто используют Apache Kafka — для высоконагруженной потоковой обработки, RabbitMQ — для гибкой очередности и маршрутизации сообщений, и ActiveMQ — как решение, тесно интегрированное с экосистемой Java (например, через JMS API).
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥3
Делимся подборкой вопросов и ответов для подготовки к собеседованию на позицию Java-разработчика: 114 теоретических и практических вопросов с разными уровнями сложности.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣35👨💻4
Для чего нужен файл с расширением
.env
?Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤9👍6
BigDecimal — это класс для работы с числами высокой точности. Он нужен там, где float и double перестают быть надёжными: например, в финансовых расчётах, налогах или научных задачах.
В отличие от double, BigDecimal не страдает от ошибок округления, вызванных двоичной арифметикой. Он хранит значение точно — в виде строки, которую мы явно передаём:
BigDecimal money = new BigDecimal("123.456");
Никогда не создавайте BigDecimal из double, иначе вы получите уже округлённое число.
Класс BigDecimal — immutable: любые операции, как у String, создают новый объект:
BigDecimal result = money.add(BigDecimal.valueOf(10));
Для арифметики используются методы (add, subtract, multiply, divide) — потому что операторы + - * / тут не работают.
Для округления используется setScale() с указанием режима:
money.setScale(2, RoundingMode.HALF_UP);
Это важно: без указания RoundingMode можно получить ArithmeticException, особенно при делении.
И ещё один подводный камень — сравнение:
new BigDecimal("1.5").equals(new BigDecimal("1.50")) // false
new BigDecimal("1.5").compareTo(new BigDecimal("1.50")) // 0
equals() сравнивает и значение, и масштаб (scale). А compareTo() сравнивает только числа — и это то, что нужно в большинстве случаев.
Если вы работаете с деньгами, расчётами процентов, скидок, налогов — забудьте про double, вам нужен BigDecimal.
tags: #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
❤40👍12🔥5🤩1
Что такое Prometheus и зачем он нужен в микросервисной архитектуре?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤7🔥1
В этом репозитории собрана вся теоретическая база по Java, которая поможет подготовиться к техническому собеседованию.
Материалы охватывают все ключевые темы: коллекции, многопоточность, JVM, алгоритмы, паттерны проектирования и многое другое.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5🔥1
Готовы погрузиться в автотестирование на Java Advanced? QA.GURU дарят такую возможность! 🚀
🤩 Забирайте абсолютно бесплатно мини-набор для продвинутых автоматизаторов — смотрите вебинар, выполняйте практическое задание на тренажере с написанием автотеста, изучайте карьерный гайд и получите секретный бонус!
— Урок с написанием кода
— Практика в тренажере
— Карьерный гайд для автоматизаторов на Java
— Секретный бонус👍
После прохождения мини-программы вам откроется персональная скидка 10% на полный курс по автоматизации тестирования на Java Advanced! Кстати, уже 17 сентября стартует новый поток!
⚡️ Забрать всё это можно прямо сейчас по ссылке!
Это отличный шанс погрузиться не только в теорию, но и попрактиковаться уже сегодня!
🤩 Забирайте абсолютно бесплатно мини-набор для продвинутых автоматизаторов — смотрите вебинар, выполняйте практическое задание на тренажере с написанием автотеста, изучайте карьерный гайд и получите секретный бонус!
— Урок с написанием кода
Внутри:
• Разбор, зачем в JDBC всё построено на интерфейсах.
• Объяснение роли Driver и принципа его работы.
• Причина, почему результат запроса удерживает соединение.
• Пример отправки запроса к БД из автотеста.
• Лайвкодинг на практике.
— Практика в тренажере
После урока вы получите доступ к интерактивной платформе, где:
• Повторите код из занятия.
• Выполните задание в условиях, максимально близких к реальной работе.
• Закрепите навык работы с автотестами на реальном проекте.
— Карьерный гайд для автоматизаторов на Java
Внутри:
• Вопросы с реальных собеседований.
• Частые задачи и решения.
• Критерии оценки Junior / Middle / Senior.
• Подборка полезных ресурсов для роста: документация, книги, задачи и QA-чаты.
— Секретный бонус
⚡️ Забрать всё это можно прямо сейчас по ссылке!
Это отличный шанс погрузиться не только в теорию, но и попрактиковаться уже сегодня!
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Для тех, кто делает опенсорс, есть классная новость 🔥
GitVerse вместе с Cloud. ru и Хабром запустили грантовую программу «Код без границ». Она даёт не только финансирование и облачные ресурсы, но и поддержку экспертов и сообщества.
Это классная возможность подтянуть свой проект, найти единомышленников и заявить о себе на всю ИТ-тусовку.
Номинаций несколько: AI-инновации, наука и образование, проекты для всех и инструменты для разработчиков.
Условие для участия простое — проект должен быть размещен на GitVerse (можно импортировать с GitHub).
Заявки принимаются до 31 октября, а результаты объявят в декабре.
Все подробности и форма заявки — по ссылке
GitVerse вместе с Cloud. ru и Хабром запустили грантовую программу «Код без границ». Она даёт не только финансирование и облачные ресурсы, но и поддержку экспертов и сообщества.
Это классная возможность подтянуть свой проект, найти единомышленников и заявить о себе на всю ИТ-тусовку.
Номинаций несколько: AI-инновации, наука и образование, проекты для всех и инструменты для разработчиков.
Условие для участия простое — проект должен быть размещен на GitVerse (можно импортировать с GitHub).
Заявки принимаются до 31 октября, а результаты объявят в декабре.
Все подробности и форма заявки — по ссылке
❤3👍2🔥2