Java Guru 🤓

channel icon
Канал с вопросами и задачами с собеседований!

Условия размещения

Цена за 48 часов в ленте 4500,00
Цена за 1 час закрепления
Взаимопиар Нет
+2
13 207
подписчиков
+267
~1.9k
охват 1 публикации
0
~5
постов / день
+2,0%
14,4%
ERR % ?

Статистика

Последние публикации

Java Guru 🤓
14 мая 2025 г. 18:03
Производительность и наблюдаемость бэкенда. Поиск проблем в продакшене

Признак мастерства бэкендера — глубокое понимание своего стека и того, как работает код в продакшене. Недаром во многих бигтех-компаниях принят подход “you build it, you run it”. Хороший программист не только умеет запилить фичи, но и знает, как работает в проде его софт, и может разобраться, почему его сервис тормозит. Для этого нужно знать особенности рантаймов, инфраструктуры и современные подходы к сбору телеметрии.

Приходи на курс — разберёшься в перформансе на уровне кода и инфраструктуры, научишься внедрять наблюдаемость как в бигтех-компаниях, прокачаешься для собеседований в компании, где ждут от разработчиков широкого инженерного мышления.

🌐 В программе курса:

🤩 Архитектура бэкенд-серверов (Golang, Java, PHP и др) и её особенности: модели обработки запросов и параметры конфигурации, влияющих на производительность
🤩 Zero-code instrumentation на разных языках программирования
🤩 Open Telemetry: основы технологии и применение на примере SigNoz
🤩 Суб-real-time телеметрия поверх UDP c PINBA и “промстэком” (Grafana/Prometheus)

🥸 Кто мы: R&D-центр Devhands. Автор курса — Михаил Курмаев, эксперт по сложным распределённым системам. Долгое время строил платформу в Badoo/Bumble, сейчас в Т-банке развивает дата-платформу.

🗓 Старт курса: 3 июня, 4 недели обучения.
Изучить программу и записаться можно здесь.Изучить программу и записаться можно здесь.

Ждем вас!

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqv6iJ7v
Java Guru 🤓
14 мая 2025 г. 9:45
Из чего состоит .class-файл?

.class-файл представляет собой один скомпилированный класс. Это то, что в конечном итоге исполняет Java Virtual Machine. В .class компилируется код любого JVM языка, формат входит в спецификацию и не зависит от платформы или реализации виртуальной машины. Содержимое конкретного класса просматривают утилитой javap из стандартного набора JDK. Подробно структура файла описана на википедии, в документации и во множестве статей. Файл состоит из 10 секций, которые можно условно разбить на группы:

🔘🔘 Свойства файла: определяющее тип файла «волшебное слово» 0xCAFEBABE и версия формата;
🔘🔘 Пул констант – содержит все используемые имена методов и классов в специальном формате, и прочую символьную информацию. В других местах используются только ссылки на элементы пула;
🔘🔘 Основные свойства класса: флаги доступа, имя этого класса, его предка, интерфейсов;
🔘🔘 Внутреннее содержимое: список полей класса и байткод методов
🔘🔘 Атрибуты класса;

Для внутренних классов тоже создаются отдельные файлы с названиями формата OuterClass$InnerClass.class. Если класс анонимный, вместо имени используются номера с 1.


Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
13 мая 2025 г. 17:21
🔍Тестовое собеседование на Middle Java-разработчика завтра

14 мая(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Константин Лесняк, Java-разработчик с большим опытом проведения собесов, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Костя будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Косте

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. 

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot@shortcut_sh_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxRVn1z
Java Guru 🤓
13 мая 2025 г. 16:40
{'_': 'TextWithEntities', 'text': 'Какой принцип нарушен в коде?', 'entities': []}
Опрос
  • {'_': 'TextWithEntities', 'text': 'SRP (Принцип единственной ответственности)', 'entities': []}
  • {'_': 'TextWithEntities', 'text': "DRY (Don't Repeat Yourself)", 'entities': []}
  • {'_': 'TextWithEntities', 'text': 'KISS (Keep It Simple, Stupid)', 'entities': []}
  • {'_': 'TextWithEntities', 'text': "YAGNI(You Aren't Gonna Need It)", 'entities': []}
  • {'_': 'TextWithEntities', 'text': 'LSP (Принцип подстановки Барбары Лисков)', 'entities': []}
Java Guru 🤓
13 мая 2025 г. 16:40
Какой принцип нарушен в коде?
Java Guru 🤓
13 мая 2025 г. 13:15
Возможности Kotlin для создания DSL на примере JsonBuilderВозможности Kotlin для создания DSL на примере JsonBuilder

Приглашаем на открытый урок.

🗓 22 мая в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».

Что вас ждёт:
✔️ рассмотрим общую теорию о DSL: назначение, особенности, практика;
✔️ попрактикуемся в создании DSL на примере JsonBuilder;
✔️ рассмотрим возможности Kotlin, полезные для создания DSL.

🎁 Всем участникам вебинара дарим промокод, который дает скидку на обучение - Kotlin5Kotlin5

👉 Регистрация на вебинар: https://vk.cc/cLU2js

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Java Guru 🤓
12 мая 2025 г. 19:49
Какие в Java бывают виды ссылок?

Кроме обычной жесткой ссылки на объект существуют варианты ссылок, которые обрабатываются сборщиком мусора особым образом. Это наследники класса java.lang.ref.Reference. Все они реализуют разного рода слабые ссылки. Технически это обертки над объектом, который доступен по методу get(), и может быть удален сборщиком мусора пока объект-обертка еще не удален. Используются они для экономии памяти, для реализации кэшей, для финализации внешних ресурсов. Например в Android слабые ссылки иногда используются для борьбы с утечкой Activity.

Виды ссылок в порядке убывания «жесткости»:

🔘🔘Обычная жесткая ссылка – любая переменная ссылочного типа. Очистится сборщиком мусора не раньше, чем станет неиспользуемой (перестанет быть доступной из GC roots, подробнее в следующих постах).
Обычная жесткая ссылка – любая переменная ссылочного типа. Очистится сборщиком мусора не раньше, чем станет неиспользуемой (перестанет быть доступной из GC roots, подробнее в следующих постах).
🔘🔘SoftReference – мягкая ссылка. Объект не станет причиной израсходования всей памяти – гарантированно будет удален до возникновения OutOfMemoryError. Может быть раньше, зависит от реализации сборщика мусора.
SoftReference – мягкая ссылка. Объект не станет причиной израсходования всей памяти – гарантированно будет удален до возникновения OutOfMemoryError. Может быть раньше, зависит от реализации сборщика мусора.
🔘🔘WeakReference – слабая ссылка. Слабее мягкой. Не препятствует утилизации объекта, сборщик мусора игнорирует такие ссылки.
WeakReference – слабая ссылка. Слабее мягкой. Не препятствует утилизации объекта, сборщик мусора игнорирует такие ссылки.
🔘🔘PhantomReference – фантомная ссылка. Используется для «предсмертной» обработки объекта: объект доступен после финализации, пока не очищен сборщиком мусора.PhantomReference – фантомная ссылка. Используется для «предсмертной» обработки объекта: объект доступен после финализации, пока не очищен сборщиком мусора.

Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
12 мая 2025 г. 18:45
Аудиосказки в новом качестве!Аудиосказки в новом качестве!

Современные, советские, классические и лучшие народные аудиосказки на канале "ПАПИНЫ СКАЗКИ"!😊
Бесплатно.
Огромный выбор!

СлушатьСлушать

#реклама 0+
О рекламодателе
Java Guru 🤓
11 мая 2025 г. 20:05
Параметры в Java передаются по ссылке или по значению?

Этот вопрос уходит корнями в C++ прошлое (скорее всего интервьюера), это терминология из C++. Для начала нужно разобраться в этой терминологии.

В C++ ссылка – это переменная-псевдоним для другой переменной. Меняя значение ссылки, поменяется и оригинал. В Java такого нет, легко понять это подумав например о ссылке на int.

Ссылка в Java – это нечто похожее на адрес объекта в памяти. Похожая сущность в C++ называется указатель.

Передача параметра по значению – это копирование значения в переменную-параметр метода. По ссылке – передача ссылки, то есть по сути использование той же самой переменной.

В Java параметр метода – всегда копия. Значит параметры передаются всегда по значению, просто это значение может быть ссылкой на объект. Код выше это демонстрирует.


Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
11 мая 2025 г. 19:03
Ещё один канал про код?

❌ НЕТ: “Что такое ООП”  
❌ НЕТ: “Топ-5 вопросов на собесе”  
❌ НЕТ: “Почему монолит — это плохо”
✅ ДА: «Как продать бизнесу рефакторинг»  
✅ ДА: «Как не утонуть в легаси»  
✅ ДА: «Как проектировать, а не тушить»

Короче, канал для тех, кто уже умеет писать кодумеет писать код и теперь пытается выжить в реальных проектах.

erid: 2W5zFJYZcVn
Java Guru 🤓
11 мая 2025 г. 0:48
new String("Hello_42") == "Hello_" + 42?

Такие вопросы о сравнении строковых и числовых констант проверяют знания о понятии пулов литералов (literal pool). Не следует путать с пулом констант класса. Виртуальная машина переиспользует один и тот же объект для строкового литерала при загрузке класса, если такой уже выделен в куче. Вот почему "Hello" == "Hello" истинно, не смотря на то что String – ссылочный тип. Такая оптимизация возможна благодаря свойству неизменяемости (immutable) класса String, и называется интернирование строк.

Кроме самих литералов, интернирование применяется ко всем константным выражениям. К таким выражениям в этом примере относятся неявное приведение числа 42 к строке и конкатенация констант. Это делает истинным "Hello_42" == "Hello_" + 42.

Пул литералов не работает, когда явно используется оператор new. Это причина, по которой выражение new String("Hello_42") == "Hello_" + 42 ложно.


Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
10 мая 2025 г. 23:35
Бесплатный доступ к MBA Intensive – для руководителейБесплатный доступ к MBA Intensive – для руководителей

В Школе Генерального Директора сегодня открыт бесплатный доступ на 2 дня к полноценному онлайн-курсу MBA Intensive при переходе из поста.

Вы сможете пройти 500+ практических уроков совершенно бесплатносовершенно бесплатно и улучшить управленческие навыки и понимание бизнес-процессов. После сдачи тестов доступен сертификат о прохождении уроков.

Вот какие темы вы успеете изучить – выбирайте любую и приступайте прямо сейчас:

1. Лидерство, личная эффективность и эмоциональный интеллект
2. Управление персоналом
3. Финансы и экономика
4. Торговля и сервис
5. Операционная деятельность и принятие решений
6. Project management
7. Управление маркетингом

Оставляйте заявку по ссылке >>>

Подать заявкуПодать заявку

#реклама 16+
gd.ru

О рекламодателе
Java Guru 🤓
10 мая 2025 г. 12:08
Под каким типом хранить период времени?

В стандартной библиотеке современных версий Java для этих целей есть два класса:

Period – календарный период. Количество дней, месяцев и лет. Одним днем здесь считается день в терминах ZonedDateTime.

Duration – длительность времени. Количество наносекунд, секунд, минут, часов, и тоже дней. Здесь один день – ровно 24 часа.

Оба класса реализуют общий интерфейс TemporalAmount – период времени вообще. Оба иммутабельны, и как следствие, потокобезопасны. Любая модифицирующая операция вроде plusX() возвращает новый экземпляр с измененным значением.

Экземпляры обоих классов могут быть созданы из значений отдельных компонентов, из двух моментов времени методом between, или из строки. Строковое представление Duration: "P2DT3H4M", Period: "P1Y2M3D".

До Java 8 основным способом хранения периода были числовые примитивы. В этом подходе есть много недостатков, среди которых в первую очередь неограниченность значений и ненаглядность. Чтобы в Java 8+ получить период числом, используется метод between() нужного элемента енама ChronoUnit.


Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
10 мая 2025 г. 10:46
15 мая онлайн-презентация новинок Битрикс2415 мая онлайн-презентация новинок Битрикс24

Расскажем о главных иземенениях Битрикс24 в мае 2025 года для работы с командой и продажами.
Регистрируйте бесплатно и станьте первыми, кто увидит в прямом эфире все новинки в CRM, AI и совместной работе!

ЗарегистрироватьсяЗарегистрироваться

#реклама 16+
release.bitrix24.tech

О рекламодателе
Java Guru 🤓
10 мая 2025 г. 0:35
Когда стоит выбрать char[] вместо String?

Первая, очевидная причина – оптимизация. Если вам заранее известен размер строки, и он фиксирован, может быть полезно выбрать массив. Если программа работает с неизменяемыми подстроками, удобно представить их в виде offset-ов общего массива (как это было сделано раньше в самом String).

Следует помнить, что оптимизировать нужно осознанно и своевременно. JVM тоже прикладывает усилия по оптимизации строк (вроде интернирования), которые могут оказаться эффективнее ваших.

Вторая, менее очевидная причина – безопасность. Строки в Java иммутабельны. Это значит, что когда вы сохраняете пароль в объекте типа String, физически уничтожить его из памяти может только сборщик мусора.

Существует способ алгоритмической атаки на систему, когда хакер своими действиями вызывает переполнение памяти, и конфиденциальная информация попадает в heap dump.

Если пароль хранится в массиве, программист может самостоятельно «занулить» значение после использования.


Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
9 мая 2025 г. 23:42
Крупнейший университет искусственного интеллектаКрупнейший университет искусственного интеллекта

Приглашаем на бесплатный курс по искусственному интеллекту!

5 занятий по теме «Промпт-инжиниринг». Регистрируйся для получения полного бесплатного доступа к курсу.

✨ 8 000+ студентов со всего мира

✨ 600+ AI-проектов, созданных студентами

✨ Сборная Университета — победители крупнейших AI-хакатонов России

✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)

✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)

Будем рады видеть тебя в наших рядах!

Узнать большеУзнать больше

#реклама 16+
neural-university.ru

О рекламодателе
Java Guru 🤓
9 мая 2025 г. 23:33
Сгенерируйте случайное число в интервале

Когда мы сталкиваемся со случайными числами, то всегда должны помнить о вопросе их распределения. Не будем здесь углубляться в теорию мат. статистики, а рассмотрим только практические следствия.

Самые стандартные классы-генераторы случайных чисел создают равномерно распределенные значения. Любое число возникает с одинаковой вероятностью – это ожидаемое поведение для большинства задач. Например, метод Random.nextInt(1) будет генерировать примерно одинаковое количество значений 0 и 1.

Однако, программист легко может "испортить" равномерность значений последующими операциями. Возьмем вместо предыдущего примера Random.nextInt(2)%2. Такая конструкция тоже будет возвращать 0 или 1. Однако, третье возможное значение из генератора, 2, будет тоже превращено в 0. Значит, ответ 0 будет возникать в два раза чаще чем 1.

Это та причина, по которой лучше не пользоваться общепринятым «школьным» арифметическим ограничением с помощью оператора %. Вместо этого следует оставить заботу о распределении разработчикам библиотеки, и пользоваться в прикладном коде готовыми методами с границами.

Если задача подразумевает более плотную работу с распределениями, стоит воспользоваться специализированной библиотекой вроде Apache Commons Math.


Java Guru🤓Java Guru🤓 #java#java
Java Guru 🤓
9 мая 2025 г. 22:11
Получи грант до 1,2 млн руб. на обучение в магистратуреПолучи грант до 1,2 млн руб. на обучение в магистратуре

Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой?
Поступай в магистратуру Центрального университета!

- 4 офлайн программы по востребованным направлениям ИТ
- Онлайн-программа по машинному обучению
- 300 мест с грантами до 1,2 млн руб.
- Вечерние занятия и учеба по выходным — удобно совмещать с работой
- Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса
- Возможность стажировок и трудоустройства в ведущих компаниях
- Государственный диплом за 2 года

Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии.

Оставляй заявку на грант уже сейчас!

Подать заявкуПодать заявку

#реклама 16+
apply.centraluniversity.ru

О рекламодателе
Java Guru 🤓
9 мая 2025 г. 19:42
Репост:
Что такое Serial Garbage Collector?

Serial GC — это однопоточный сборщик мусора, работающий по принципу "Stop-the-World". Он останавливает выполнение всех потоков во время сборки мусора и использует копирующий алгоритм для молодых поколений (Young Gen) и компактирующий алгоритм для старших (Old Gen).

🟢 Как работает

1️⃣ В молодом поколении (Minor GC) используется копирующая стратегия: выжившие объекты перемещаются из Eden в Survivor, а из Survivor в Old Gen.
2️⃣ В старом поколении (Major GC / Full GC) выполняется уплотнение памяти для уменьшения фрагментации.
3️⃣ Так как GC работает в одном потоке, во время сборки остановка приложения неизбежна.

🟢 Когда использовать

— В одноядерных системах или при ограниченных ресурсах, где многопоточный GC создаст больше нагрузки.
— В маленьких JVM (до 1-2 ГБ памяти), где G1 или Parallel GC будут избыточны.
— В приложениях без жестких требований к паузам, например, в небольших утилитах или CLI-инструментах.

Java библиотекаJava библиотека #java#java
Java Guru 🤓
9 мая 2025 г. 17:36
Онлайн-магистратура с IT специальностями от ЯндексаОнлайн-магистратура с IT специальностями от Яндекса

Совместно с ИТМО, МИФИ, МФТИ.

Онлайн-магистратура с актуальными программами и гибким графиком обучения.

Получите высокооплачиваемую IT профессию, официальный диплом и практические знания.

Господдержка оплаты. Совмещение с работой!

Узнать большеУзнать больше

#реклама 16+
О рекламодателе