Последние посты

Библиотека собеса по Java | вопросы с собеседований
15 сент., 16:50
❓ Расскажите о паттерне FacadeFacade — это структурный паттерн, который предоставляет простой интерфейс к сложной подсистеме, скрывая внутреннюю сложность.Простыми словами: один метод вместо десяти вызовов в разные сервисы. Пульт от телевизора — это фасад к электронике внутри.▪️ Пример:Оформление заказа: нужно проверить наличие, списать деньги, создать доставку, отправить уведомление. Клиент не должен знать эти детали.// Сложная подсистема class InventoryService { boolean checkStock(String productId) { return true; // проверка на складе } }class PaymentService { boolean charge(String userId, BigDecimal amount) { return true; // списание средств
Библиотека собеса по Java | вопросы с собеседований
15 сент., 16:10изменён
😭 Как не потратить недельный лимит AI-кодинга за три дня?Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.🔘 Поговорим о том:— когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge.✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после.⬇️ 17 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы
Библиотека собеса по Java | вопросы с собеседований
5 авг., 14:50
❓ Что такое "diamond problem" и как его решает Java?«Diamond problem» возникает при множественном наследовании, когда класс может унаследовать одну и ту же реализацию от разных родителей. В Java классы не поддерживают множественное наследование, а только интерфейсы позволяют такое. Если два интерфейса имеют одинаковый default-метод, то компилятор потребует явного переопределения в классе. Это и есть решение проблемы.🐸 Библиотека собеса по Java#tests
Библиотека собеса по Java | вопросы с собеседований
5 авг., 14:04
переслано из @proglib_academy
👅 Самое сложное — выбрать не курс, а направлениеСегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз.В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎🔗 Узнать подробнее🏃♀️ Progli
1,050Открыть в Telegram
Библиотека собеса по Java | вопросы с собеседований
5 авг., 14:04
Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇1,120Открыть в Telegram
Библиотека собеса по Java | вопросы с собеседований
31 июл., 19:25
❓ Как работает ConcurrentHashMap?ConcurrentHashMap использует сегментирование / распространённые блокировки (в новых версиях — на уровне бакета), что позволяет нескольким потокам читать и писать без полной блокировки карты. Операции get делаются без блокировки, put и remove используют ограниченную блокировку (или CAS) лишь на отдельных сегментах или узлах.В отличие от Collections.synchronizedMap(...), который блокирует весь объект на каждую операцию, ConcurrentHashMap даёт более высокую конкурентность и масштабируемость.🐸 Библиотека собеса по Java#concurrency
Библиотека собеса по Java | вопросы с собеседований
30 июл., 19:58
❓ Что такое нагрузочное тестирование?Нагрузочное тестирование — это проверка поведения системы под различными уровнями нагрузки. Цель — понять, как приложение работает при большом количестве одновременных пользователей или запросов.Обычно проверяем:— время отклика при росте нагрузки — максимальное количество пользователей, которое система выдерживает — точку деградации производительности — стабильность при длительной работеИспользуем инструменты типа JMeter, Gatling или K6.🐸 Библиотека собеса по Java#tests
Библиотека собеса по Java | вопросы с собеседований
30 июл., 14:43
переслано из @proglib_academy
🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентамиНо цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.⚡️ Предзапись на осенний поток уже открыта🏃♀️ Proglib Academy


Библиотека собеса по Java | вопросы с собеседований
30 июл., 14:43
Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
Библиотека собеса по Java | вопросы с собеседований
29 июл., 17:30
❓ Что такое @Qualifier и когда его использовать?@Qualifier используется для разрешения конфликтов при внедрении зависимостей, когда существует несколько бинов одного типа.Без @Qualifier Spring не знает, какой бин внедрить, и выбросит NoUniqueBeanDefinitionException.@Bean @Qualifier("primary") public DataSource primaryDB() { ... }@Bean @Qualifier("secondary") public DataSource secondaryDB() { ... }@Autowired @Qualifier("primary") private DataSource dataSource;Альтернатива — использовать @Primary для бина по умолчанию.
Библиотека собеса по Java | вопросы с собеседований
28 июл., 20:04
❓ Для чего используется ключевое слово this?this — это ссылка на текущий объект внутри его метода или конструктора. Оно нужно для:— Разрешения конфликта имён (например, между полем класса и параметром метода). — Вызова других конструкторов этого же класса. — Передачи текущего объекта в качестве аргумента в методы или конструкторы других классов. — Возврата ссылки на текущий объект (часто используется в паттерне Builder или для чейнинга методов).🐸 Библиотека собеса по Java#core
Библиотека собеса по Java | вопросы с собеседований
27 июл., 18:59
❓ Разница между Statement и PreparedStatement?— Statement используется для выполнения простых SQL-запросов без параметров. Он формирует запрос как строку и каждый раз компилирует его заново, что может быть медленно и небезопасно.— PreparedStatement предварительно компилируется базой данных и позволяет задавать параметры через плейсхолдеры. Что повышает производительность при многократном выполнении одного запроса и защищает от SQL-инъекций (данные не конкатенируются со строкой запроса, а подставляются корректно).Поэтому в реальных проектах почти всегда используют PreparedStatement.🐸 Библиотека собеса по Java#core
Библиотека собеса по Java | вопросы с собеседований
27 июл., 18:02
переслано из @proglib_academy
У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓Что делаете с таким легаси?❤️ Не трогаю: работает — и ладно 👍 Переписываю с нуля и надеюсь на лучшее 🔥 Сначала покрываю тестами, потом рефакторю по частям 👾 У нас такого нет — честно-честноНа курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.До 31 июля действует скидка и бессрочный доступ к материалам.🔗 Занять место со скидкой🏃♀️ Proglib Academy


Библиотека собеса по Java | вопросы с собеседований
27 июл., 18:02
Когда название файла уже само по себе считается техническим долгом 👇
Библиотека собеса по Java | вопросы с собеседований
26 июл., 11:11
❓ Как работает HashMap внутри? Что происходит при коллизии и при достижении load factor?HashMap — массив бакетов (Node[] table). Ключ хешируется, хеш определяет индекс бакета: index = hash & (capacity - 1Что происходит при put(key, value):Считается hash(key) — не просто hashCode(), а с дополнительным перемешиванием старших битов ((h = key.hashCode()) ^ (h >>> 16)). Это снижает коллизии при маленьком размере таблицы.Находится бакет по индексу. Если пустой — кладём первым. Если нет — коллизия.🔹 Коллизия:До Java 8 → связный список в бакете. Поиск O(n) в худшем случае.С Java 8 → когда в бакете больше 8 элементов и capacity >= 64, список превращается в красно-чёрное дерево. Поиск становится O(log n). Обратно в список — при сжатии ниже 6 элементов.// Упрощённо: Node в списке или TreeNode в дереве static class Node<K,V> { final int hash; final
Библиотека собеса по Java | вопросы с собеседований
25 июл., 14:24
✔️ Java-тест: ретраи с экспоненциальной задержкойНапишите production-ready ретраер 👇📦 ЗаданиеРеализуйте утилиту, которая повторяет операцию при временном сбое: public <T> T executeWithRetry(Supplier<T> operation) { // Ваша реализация } 📋 Требования— Максимум N попыток. — Экспоненциальная задержка: 100ms → 200ms → 400ms… с верхней границей (cap). — Добавить jitter (случайный разброс), чтобы избежать «thundering herd» при массовых ретраях. — Ретраить только временные ошибки, бизнес-ошибки пробрасывать сразу. — Корректно обработать прерывание (InterruptedException + восстановление флага interrupt). — После исчерпания попыток пробросить последнее исключение (с сохранением причины).Ставьте → 🔥, если нравится формат. Если нет → 🌚
Библиотека собеса по Java | вопросы с собеседований
24 июл., 10:37
переслано из @proglib_academy
📈 Скоро фраза «умею пользоваться AI» в резюме будет звучать так же странно, как сегодня «умею пользоваться Git»Это просто станет частью профессии. А вот умение встроить AI в процесс разработки так, чтобы он действительно ускорял работу команды, останется конкурентным преимуществом 💡🔜 На курсе «ИИ для разработчиков» участники работают со своими проектами и учатся делать AI частью ежедневной разработки: планировать задачи, писать код, проверять изменения, готовить PR и автоматизировать рутину.До конца июля действует специальная цена — 59 990 ₽ вместо 79 990 ₽ 🥳 И получить бессрочный доступ ко всем материалам курса.🔗 Посмотреть, как устроен курс🏃♀️ Proglib Academy


Библиотека собеса по Java | вопросы с собеседований
24 июл., 10:37
🥳 До конца июля сохраняются две приятные вещи: специальная цена и бессрочный доступ к материалам курса. Подробнее — в посте 👇
Библиотека собеса по Java | вопросы с собеседований
24 июл., 08:21
❓ Что такое Phantom Reference и зачем она нужна?PhantomReference — самая слабая ссылка в Java. Отличается от WeakReference тем, что get() всегда возвращает null.Используется для отслеживания момента, когда объект удалён из памяти. После удаления объекта PhantomReference помещается в ReferenceQueue.В отличие от finalize(), это надёжный способ отследить удаление объекта. Используется редко, в основном во внутренних механизмах или для управления off-heap памятью.🐸 Библиотека собеса по Java#jvm
Библиотека собеса по Java | вопросы с собеседований
23 июл., 12:49
❓ Какие есть методы в классе Object?Класс Object — это базовый класс для всех классов в Java. Он содержит следующие методы:🔹 public final Class<?> getClass() – возвращает объект Class для текущего объекта. 🔹 public int hashCode() – возвращает хэш-код объекта. 🔹 public boolean equals(Object obj) – сравнивает объекты на равенство. 🔹 protected Object clone() – создает копию объекта (глубокое/поверхностное копирование зависит от реализации). 🔹 public String toString() – строковое представление объекта. 🔹 public final void notify() – пробуждает один поток, ожидающий монитор объекта. 🔹 public final void notifyAll() – пробуждает все потоки, ожидающие монитор объекта. 🔹 public final void wait() – заставляет поток ждать, пока его не разбудят через notify/notifyAll. 🔹 public final void wait(long timeout) – ждет указанное время или до уведомления. 🔹 pub
