Какой сценарий может привести к утечке памяти?
Anonymous Quiz
6%
Использование try-with-resources для работы с потоками ввода/вывода
19%
Применение WeakReference для кэширования объектов
65%
Хранение объектов в static коллекции без явного удаления
4%
Использование Optional вместо null для обработки отсутствующих значений
6%
Автоматическое закрытие соединений с БД с помощью HikariCP
👍7❤3🔥2
Какой потенциальный риск присутствует?
Anonymous Quiz
23%
Код работает корректно, проблем нет
26%
future.get() может зависнуть навсегда
9%
Высокая нагрузка на потокобезопасные ресурсы, нужен synchronized
18%
CompletableFuture.supplyAsync() блокирует основной поток
24%
future.get() может выбросить NullPointerException
👍8🤔7🤨2😐2
Podlodka Crew 29 сентября запускает новую конференцию — Podlodka AI Crew 🥳
Если вы ищете практические знания без воды — это оно. Подлодка собрала экспертов, которые покажут, что реально работает в коде, пайплайнах и командных процессах.
В программе:
📊«AI, ML, DS, нейросети: без хайпа в терминах» — разберём границы применимости подходов, чтобы отличать пользу от шума (Алексей Шаграев, ex-Google, ex-Yandex).
👥 Круглый стол «AI-культура в команде» — инструменты и практики, сопротивление/принятие, влияние на эффективность и безопасность (Макс Сальников / Microsoft, Владимир Иванов / Supplied, Михаил Левченко / Яндекс Вертикали, Павел Герасимов / Wrike).
💻 Мастер-класс «Project-aware ассистенты: RAG + MCP» — живая документация, контекст кода для LLM и интерфейс запросов в мессенджере; как это ускоряет онбординг и разработку (Григорий Сухоруков, Яндекс).
⚡«Эффективный промптинг» — техники, которые убирают типовые страхи и реально ускоряют разработку (Евгений Сатуров, Surf).
Почему это важно: AI уже часть рабочего стека — от IDE до CI/CD. Здесь — практики с измеримым эффектом: меньше рутины, быстрее процессы.
Кому будет полезно: разработчикам, архитекторам и техлидам, платформенным/DevOps-инженерам - всем, кто внедряет AI-процессы и ждёт измеримого результата.
🗓 29 сентября - 3 октября
🔗 Подробности и регистрация: https://podlodka.io/aicrew
Если вы ищете практические знания без воды — это оно. Подлодка собрала экспертов, которые покажут, что реально работает в коде, пайплайнах и командных процессах.
В программе:
📊«AI, ML, DS, нейросети: без хайпа в терминах» — разберём границы применимости подходов, чтобы отличать пользу от шума (Алексей Шаграев, ex-Google, ex-Yandex).
👥 Круглый стол «AI-культура в команде» — инструменты и практики, сопротивление/принятие, влияние на эффективность и безопасность (Макс Сальников / Microsoft, Владимир Иванов / Supplied, Михаил Левченко / Яндекс Вертикали, Павел Герасимов / Wrike).
💻 Мастер-класс «Project-aware ассистенты: RAG + MCP» — живая документация, контекст кода для LLM и интерфейс запросов в мессенджере; как это ускоряет онбординг и разработку (Григорий Сухоруков, Яндекс).
⚡«Эффективный промптинг» — техники, которые убирают типовые страхи и реально ускоряют разработку (Евгений Сатуров, Surf).
Почему это важно: AI уже часть рабочего стека — от IDE до CI/CD. Здесь — практики с измеримым эффектом: меньше рутины, быстрее процессы.
Кому будет полезно: разработчикам, архитекторам и техлидам, платформенным/DevOps-инженерам - всем, кто внедряет AI-процессы и ждёт измеримого результата.
🗓 29 сентября - 3 октября
🔗 Подробности и регистрация: https://podlodka.io/aicrew
👍3❤2🔥2
Какие есть преимущества у массива перед коллекцией?
Для хранения ссылочных типов массив подходит хуже чем ArrayList. В основе реализации коллекции лежит такой же массив, поэтому эффективность будет той же самой. Однако, вам придется самостоятельно реализовывать логику управления хранилищем: например, увеличение массива при переполнении. А значит, будет больше шансов на ошибку.
Если использовать массивы вместо коллекций для примитивов, можно получить выигрыш по эффективности. Коллекции – generic-типы, из-за этого простые значения хранятся в них в форме ссылочных типов-оберток.
1. Autoboxing выделяет память под новый объект, это дорогая операция;
2. Кроме данных, Object занимает дополнительную память под метаинформацию;
3. Ячейки массива лежат близко в оперативной памяти, это увеличивает шансы попадания в кэш процессора.
С другой стороны, для массива всё так же нужно написать больше кода, он сложнее. Поэтому замена листов на массивы обычно считается излишней микрооптимизацией.
Когда сэкономить всё-таки хочется, стоит выбрать одну из множества готовых библиотек не-generic реализаций коллекций. Списки примитивов можно найти в Eclipse Collections. В Android есть HashMap с целочисленными ключами – SparseArray.
Java Guru🤓 #java
Для хранения ссылочных типов массив подходит хуже чем ArrayList. В основе реализации коллекции лежит такой же массив, поэтому эффективность будет той же самой. Однако, вам придется самостоятельно реализовывать логику управления хранилищем: например, увеличение массива при переполнении. А значит, будет больше шансов на ошибку.
Если использовать массивы вместо коллекций для примитивов, можно получить выигрыш по эффективности. Коллекции – generic-типы, из-за этого простые значения хранятся в них в форме ссылочных типов-оберток.
1. Autoboxing выделяет память под новый объект, это дорогая операция;
2. Кроме данных, Object занимает дополнительную память под метаинформацию;
3. Ячейки массива лежат близко в оперативной памяти, это увеличивает шансы попадания в кэш процессора.
С другой стороны, для массива всё так же нужно написать больше кода, он сложнее. Поэтому замена листов на массивы обычно считается излишней микрооптимизацией.
Когда сэкономить всё-таки хочется, стоит выбрать одну из множества готовых библиотек не-generic реализаций коллекций. Списки примитивов можно найти в Eclipse Collections. В Android есть HashMap с целочисленными ключами – SparseArray.
Java Guru🤓 #java
👍11🔥4❤2
🏗 Курс “Архитектура и шаблоны проектирования” от OTUS — набор заканчивается. Успейте занять место в группе обучения!
Почему стоит записаться сейчас:
• 50% практики: вебинары, задания, проекты
• Онлайн-занятия 2 раза в неделю + записи навсегда
• Поддержка опытных менторов
💡 Кому подойдёт:
• Fullstack/Backend разработчикам
• DevOps-инженерам
• Desktop-разработчикам
✅ После курса вы сможете:
• Применять архитектурные шаблоны и SOLID
• Рефакторить и писать чистый код
• Выбирать оптимальные решения
⏳ Места ограничены. Пройдите вступительный тест
👉 Пройти тест и записаться:
https://vk.cc/cPLfpQ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Почему стоит записаться сейчас:
• 50% практики: вебинары, задания, проекты
• Онлайн-занятия 2 раза в неделю + записи навсегда
• Поддержка опытных менторов
💡 Кому подойдёт:
• Fullstack/Backend разработчикам
• DevOps-инженерам
• Desktop-разработчикам
✅ После курса вы сможете:
• Применять архитектурные шаблоны и SOLID
• Рефакторить и писать чистый код
• Выбирать оптимальные решения
⏳ Места ограничены. Пройдите вступительный тест
👉 Пройти тест и записаться:
https://vk.cc/cPLfpQ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍2🔥2❤1
Что будет результатом кода?
Anonymous Quiz
70%
5
22%
10
6%
Ошибка компиляции
1%
null
2%
UnsupportedOperationException
👍8🔥3❤1
Лучший способ вырасти — это персональный план развития от Senior-инженера из БигТеха.
Вот как все работает:
Мы в ШОРТКАТ провели уже почти 1000 таких мок-интервью и получили оценку 4.9/5, поэтому знаем о чем говорим.
Мы хотим, чтобы у каждого была возможность проверить в деле наш сервис, а потом уже доверить нам свое развитие.
Переходи в нашего бота и забирай свой мок за 900 рублей → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2❤1🤔1🤣1
Что такое fail-fast и fail-safe итераторы?
Это не какие-то отдельные типы, а характеристики разных реализаций интерфейса Iterator. Они определяют, как поведет себя итератор при изменении перебираемой последовательности.
Fail-fast – «быстрый» итератор. Когда после его создания коллекция как-либо изменилась, он падает с ошибкой без лишних разбирательств. Так работает итератор класса ArrayList, при изменении он выбрасывает ConcurrentModificationException. Рекомендуется не основывать логику программы на fail-fast отказах, и использовать их только как признак ошибки реализации.
Fail-safe – «умный» итератор. Обычно плата за отказоустойчивость – возможная неконсистентность данных («слабая консистентность»). Итератор класса ConcurrentHashMap работает с копией данных, он не выбросит исключение при изменении коллекции, но может не увидеть часть свежих изменений. Плата за отсутствие ошибок других fail-safe итераторов может отличаться, детали всегда можно найти в документации коллекций.
Подписывайся на наш канал в Max🟪
Это не какие-то отдельные типы, а характеристики разных реализаций интерфейса Iterator. Они определяют, как поведет себя итератор при изменении перебираемой последовательности.
Fail-fast – «быстрый» итератор. Когда после его создания коллекция как-либо изменилась, он падает с ошибкой без лишних разбирательств. Так работает итератор класса ArrayList, при изменении он выбрасывает ConcurrentModificationException. Рекомендуется не основывать логику программы на fail-fast отказах, и использовать их только как признак ошибки реализации.
Fail-safe – «умный» итератор. Обычно плата за отказоустойчивость – возможная неконсистентность данных («слабая консистентность»). Итератор класса ConcurrentHashMap работает с копией данных, он не выбросит исключение при изменении коллекции, но может не увидеть часть свежих изменений. Плата за отсутствие ошибок других fail-safe итераторов может отличаться, детали всегда можно найти в документации коллекций.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6❤4
Женя Янченко, java-dev и руководитель разработки, cделала конспекты самой популярной книги по архитектуре систем — «Высоконагруженные приложения» Мартина Клеппмана (книга с кабанчиком).
Где главы обзорные — даёт суть.
Про репликацию, шардирование, транзакции — разбирает подробно, со схемами и примерами.
В канале Женя разбирает и другие технические темы, которые могут пригодиться на собесе:
А как же алгоритмы? Они тоже есть!
Женя объявила челлендж — решить 300 задач за год 😱
Каждый месяц делает отчеты и разборы популярных задач:
Истории из опыта, рекомендации и ответы на вопросы:
📝 и ещё 100+ полезных технических и жизненных постов.
Подписывайтесь, чтобы не потерять полезный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2🤣1
👍8🔥6❤2🌭1
1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Что добавить в код, чтобы в REST API роли и аутентификация работали корректно
Anonymous Quiz
15%
http.cors().and().headers().frameOptions().disable();
8%
http.requestCache().disable();
59%
http.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELES S));
9%
http.sessionManagement().disable();
8%
http.rememberMe();
👍5🔥4
Как вы решаете вопрос с покрытием?
Почти в каждом проекте висит задача: поднять покрытие до 70%.
И почти в каждой команде никто не хочет этим заниматься.
Explyt – AI-плагин для Java и Kotlin разработчиков, который снимает эту боль.
Он генерирует юнит-тесты прямо в IDE: по коду, по runtime-трассам, по спекам. И делает это так, как будто реально вник в проект.
📌 Что умеет:
- создаёт осмысленные тесты для Java и Kotlin-кода
- поддерживает JUnit 4/5, TestNG, кастомные фреймворки
- превращает execution trace в автотесты
- предлагает фиксы, если сгенерированный тест падает
- есть режим агента, где AI сам меняет код, запускает тесты и ищет ошибки
📦 Плагин доступен:
- через JetBrains Marketplace
- или напрямую с сайта разработчика
🎁 30 дней бесплатного доступа – просто пользуйтесь.
👉 Попробовать на своём проекте
Почти в каждом проекте висит задача: поднять покрытие до 70%.
И почти в каждой команде никто не хочет этим заниматься.
Explyt – AI-плагин для Java и Kotlin разработчиков, который снимает эту боль.
Он генерирует юнит-тесты прямо в IDE: по коду, по runtime-трассам, по спекам. И делает это так, как будто реально вник в проект.
📌 Что умеет:
- создаёт осмысленные тесты для Java и Kotlin-кода
- поддерживает JUnit 4/5, TestNG, кастомные фреймворки
- превращает execution trace в автотесты
- предлагает фиксы, если сгенерированный тест падает
- есть режим агента, где AI сам меняет код, запускает тесты и ищет ошибки
📦 Плагин доступен:
- через JetBrains Marketplace
- или напрямую с сайта разработчика
🎁 30 дней бесплатного доступа – просто пользуйтесь.
👉 Попробовать на своём проекте
👍2🔥1
Что такое static?
Ключевое слово static используется для объявления вложенных классов, статических методов, полей, блоков инициализации и статических импортов.
Статические поля и методы – члены класса а не экземпляра, потому к ним можно обращаться через имя класса. Код статического блока или метода имеет доступ только к статическим членам. Статические поля не участвуют в сериализации.
Для статических методов используется раннее связывание, то есть вызов конкретного метода разрешается на этапе компиляции, не работают перегрузка и переопределение в наследниках.
Статический блок инициализации выполняется потокобезопасно, один раз сразу после загрузки класса класслоадером. Инициализаторы статических полей выполняются в неявном статическом блоке. Блоков может быть несколько, выполнятся они в порядке объявления.
Статический импорт (static import) импортирует статические члены классов в .java-файл.
Подписывайся на наш канал в Max🟪
Ключевое слово static используется для объявления вложенных классов, статических методов, полей, блоков инициализации и статических импортов.
Статические поля и методы – члены класса а не экземпляра, потому к ним можно обращаться через имя класса. Код статического блока или метода имеет доступ только к статическим членам. Статические поля не участвуют в сериализации.
Для статических методов используется раннее связывание, то есть вызов конкретного метода разрешается на этапе компиляции, не работают перегрузка и переопределение в наследниках.
Статический блок инициализации выполняется потокобезопасно, один раз сразу после загрузки класса класслоадером. Инициализаторы статических полей выполняются в неявном статическом блоке. Блоков может быть несколько, выполнятся они в порядке объявления.
Статический импорт (static import) импортирует статические члены классов в .java-файл.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3❤1