Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы выучить концепцию RAG и уверенно обсуждать её на следующем архитектурном интервью.
Как отвечать на вопросы про ИИ-архитектуру на собеседовании Java-разработчика? Разберём теорию и практику на открытом уроке.
Темы занятия:
— интеграция LLM в Enterprise (
— хранение эмбеддингов в векторных БД;
— демонстрация работы с PDF-контекстом.
Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.
Урок открывает курс «Разработка AI-агентов». Мы ориентируемся на тех, кто пишет код. Просьба «просто зрителей» не беспокоить.
Записаться на урок
Как отвечать на вопросы про ИИ-архитектуру на собеседовании Java-разработчика? Разберём теорию и практику на открытом уроке.
Темы занятия:
— интеграция LLM в Enterprise (
RAG vs Fine-tuning);— хранение эмбеддингов в векторных БД;
— демонстрация работы с PDF-контекстом.
Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.
Урок открывает курс «Разработка AI-агентов». Мы ориентируемся на тех, кто пишет код. Просьба «просто зрителей» не беспокоить.
Записаться на урок
PhantomReference —
Используется для
В отличие от finalize(), это надёжный способ отследить
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2👏2
Напишите метод для production-кода 👇
📦 Задание
Реализуйте debouncer, который откладывает выполнение действия пока события продолжают поступать:
public class Debouncer {
public Debouncer(long delayMs) {
// Ваш код здесь
}
public void call(Runnable action) {
// Ваш код здесь
// Если вызов повторяется до истечения delayMs
// - отменить предыдущий и запланировать новый
// Выполнить только когда delayMs прошло без новых вызовов
}
}🔹 Требования
— Выполнять action только если delayMs прошло без новых вызовов
— Каждый новый call() отменяет предыдущий таймер
— Использовать ScheduledExecutorService
— Потокобезопасность
🔹 Пример:
Debouncer debouncer = new Debouncer(300); // 300ms
debouncer.call(() -> search(query)); // откладываем
debouncer.call(() -> search(query)); // отменяем предыдущий
debouncer.call(() -> search(query)); // отменяем предыдущий
// Через 300ms выполнится только последний
Ставьте → 🔥, если нравится формат. Если нет → 🤔
#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3👏1
Архитектурные вопросы стали сложнее, а ты всё ещё вручную «жаришь» микросервисы?
Настоящий Шеф стоит систему.
В понедельник, 26 января, стартует интенсив по разработке ИИ-агентов. Узнай, как внедрить автономные решения в энтерпрайз-стек. ☕
В программе:
— мультиагентные системы в
— сложная логика в
—
Записаться на курс
Настоящий Шеф стоит систему.
В понедельник, 26 января, стартует интенсив по разработке ИИ-агентов. Узнай, как внедрить автономные решения в энтерпрайз-стек. ☕
В программе:
— мультиагентные системы в
CrewAI: контроль исполнения задач;— сложная логика в
LangGraph: управление состоянием в графах;—
tool use интеграция: связь агентов с внешними сервисами. 🏗️Записаться на курс
Как часто вы проходите собеседования?
🔥 — Сейчас активно ищу работу
👍🏼 — Раз в несколько месяцев
❤️ — Раз в полгода-год
😁 — Не прохожу, уже работаю/ещё учусь
Please open Telegram to view this post
VIEW IN TELEGRAM
😁40🔥24❤9👍3
Race Condition — это ситуация, когда
Классический пример — инкремент:
// Два потока выполняют:
counter++; // read-modify-write
// Без синхронизации:
// Поток 1: читает 0
// Поток 2: читает 0
// Поток 1: пишет 1
// Поток 2: пишет 1
// Итого: 1 вместо 2
Решения:
#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1👏1
Завтра стартуем: курс по разработке ИИ-агентов ☕
Будьте готовы к вопросам по архитектуре ИИ в энтерпрайзе. Мы научим проектировать мультиагентные связки на
👉 Успейте занять место до начала занятий
Будьте готовы к вопросам по архитектуре ИИ в энтерпрайзе. Мы научим проектировать мультиагентные связки на
CrewAI, управлять сложными состояниями в LangGraph и внедрять ИИ в реальные корпоративные решения.👉 Успейте занять место до начала занятий
@Conditional позволяет регистрировать бин только при
@Bean
@Conditional(WindowsCondition.class)
public Service windowsService() {
return new WindowsService();
}
class WindowsCondition implements Condition {
public boolean matches(ConditionContext context,
AnnotatedTypeMetadata metadata) {
return System.getProperty("os.name")
.contains("Windows");
}
}
Spring Boot предоставляет готовые: @ConditionalOnProperty, @ConditionalOnClass, @ConditionalOnMissingBean.
Мощный инструмент для гибкой конфигурации под разные окружения.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤1👏1
Record (с Java 14) — это с
record Person(String name, int age) { }
// Автоматически генерируется:
// - конструктор
// - геттеры (name(), age())
// - equals(), hashCode(), toString()—
—
—
—
—
—
Хорошо подходит для
—
—
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3👏1
Технически
▪️ Проблемы
—
—
—
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12⚡2🔥2
Type Erasure — это механизм
List<String> strings = new ArrayList<>();
List<Integer> integers = new ArrayList<>();
// В runtime оба имеют тип List
strings.getClass() == integers.getClass(); // true
🔹 Последствия:
—
—
—
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4👏2
@Qualifier используется для
Без @Qualifier Spring не знает,
@Bean
@Qualifier("primary")
public DataSource primaryDB() { ... }
@Bean
@Qualifier("secondary")
public DataSource secondaryDB() { ... }
@Autowired
@Qualifier("primary")
private DataSource dataSource;
Альтернатива — использовать
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4👏2
Ваш текущий грейд:
🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43❤34😁32🔥28🌚1
readOnly = true — это
Что происходит:
—
—
—
Важно: это
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2❤1👏1
WeakReference — это
Если на объект есть только weak references, GC может
WeakReference<Data> weak = new WeakReference<>(data);
data = null;
// GC может удалить объект
Data retrieved = weak.get(); // может вернуть null
Используется в
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2👏2❤1
Propagation определяет, как транзакция
Основные типы
— REQUIRED (default):
— REQUIRES_NEW:
— MANDATORY:
— NEVER:
— SUPPORTS:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1👏1
Double.NaN == Double.NaN возвращает
NaN (Not a Number) представляет недопустимый или неопределённый результат вычислений. По определению,
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥3🤔1
Lambda — это
Синтаксис:
Под капотом компилятор создаёт
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👏2🔥1
Selector позволяет
Selector selector = Selector.open();
channel.register(selector, SelectionKey.OP_READ);
while (true) {
selector.select(); // блокируется до события
Set<SelectionKey> keys = selector.selectedKeys();
for (SelectionKey key : keys) {
if (key.isReadable()) {
// обработка чтения
}
}
}
Один поток может
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3👏1
Задача из реального интервью в Google 👇
📦 Задание
Вы аналитик Google Ads. Нужно найти все объявления, которые:
— Имеют статус 'active'
— Показов больше 500,000
— Обновлены в 2024 году
Таблица google_ads на картинке. Напишите SQL-запрос для фильтрации.
Ставьте → 🔥, если нравится формат. Если нет → 🤔
#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍2👏1
Какие вопросы публиковать больше?
👍🏼 — Классика с собесов, чтобы точно набить руку на ближайший
🤔 — Вопросы, которые не встречаются в каждой статье вида "N вопросов для собеса"
🔥 — Больше практики, а то одна теория
Please open Telegram to view this post
VIEW IN TELEGRAM
👍44🤔22🔥11