Библиотека собеса по Java | вопросы с собеседований
6.28K subscribers
384 photos
8 videos
378 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
💬 Обратная связь

Ежемесячный опрос по грейдам.
Ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
😁45👍3415🔥13
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!

Кто нужен?
Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.


Но если вы пока джун — я бы предложил:

- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях
- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL

🔗 Старт 9 сентября
Для чего используется ключевое слово final?

final ограничивает изменение:

▪️ Для переменных – запрещает повторное присвоение значения
▪️ Для методов – запрещает переопределение в подклассах
▪️ Для классов – запрещает наследование

Применяют, чтобы защитить критичный код от изменения, повысить читаемость и гарантировать предсказуемое поведение программы.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥2
Что такое пул строк?

Пул строк — это специальная область памяти в heap, где хранятся уникальные строковые литералы. При создании строки через String s = "hello", JVM проверяет, есть ли уже такая строка в пуле. Если есть, то возвращается ссылка на существующий объект, если нет, то создаётся новый и добавляется в пул.

Это экономит память и ускоряет сравнение строк с помощью ==, так как строки из пула имеют одинаковую ссылку. Для добавления строки в пул вручную используют метод intern().

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2
Иногда реально ощущение, что нас держат в Матрице.

Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.

Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.

Кто готов вырваться из симуляции и ворваться в сезон найма?

👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно

Забирай полный комплект для ML-разработки: Python + Математика + Машинное обучение.
🔥 Скидка 30% действует только до 9 сентября → забираем себе
Где лучше хранить пароль — в String или в массиве char[]?

Лучше в char[]. String — это неизменяемый объект: пока его не уберёт GC, пароль будет висеть в памяти в открытом виде, и мы не можем его обнулить.

С массивом символов можно безопасно работать:

— Сразу после использования вызвать Arrays.fill(password, '\0')
Не хранить секреты дольше, чем нужно
— Снизить риск утечки при дампе памяти или логировании

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥31
Что вы знаете про Collection?

Collection — это интерфейс в java.util, который задаёт общий контракт для всех коллекций, хранящих группы объектов. Через него определяются ключевые операции: добавление и удаление элементов, проверка их наличия, очистка коллекции, получение размера и итерация. Основные реализации — List, Set и Queue.

Сам интерфейс не потокобезопасен, но его можно обернуть в синхронизированную версию через Collections.synchronizedCollection() или использовать классы из java.util.concurrent. Collection работает с дженериками, что обеспечивает типобезопасность и упрощает работу с элементами.

Важно помнить, что Map не наследуется от Collection, так как представляет пары ключ–значение и имеет свою иерархию.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥1
Для чего нужен Component Scan в Spring?

Component Scan в Spring используется для автоматического поиска и регистрации бинов в контексте приложения. Он сканирует пакеты и находит классы, аннотированные как компоненты (@Component, @Service, @Repository, @Controller и т.д.), после чего добавляет их в контекст Spring для последующего использования. Это позволяет избежать явной конфигурации бинов и упростить процесс их интеграции в приложение.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍72🔥1
🔥 Последняя неделя перед стартом курса по AI-агентам

Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место

На курсе:
разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах

📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями

И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»

Промокод на 5.000₽: LASTCALL

👉 Курс здесь
Каково внутреннее строение LinkedList?

LinkedList реализован как двусвязный список. Каждый элемент хранится в отдельном объекте Node, который содержит:

Ссылку на значение (item)
Ссылку на предыдущий элемент (prev)
Ссылку на следующий элемент (next)

Список хранит указатели на первый (first) и последний (last) элементы, а также размер (size). Это обеспечивает:

Быстрые операции добавления/удаления в начало и конец списка O(1)
Последовательный обход с помощью ссылок
Но медленный произвольный доступ по индексу — O(n), так как приходится проходить список от начала или конца

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍811🔥1
👀 Задача с собеса: Поиск наибольшей общей подпоследовательности (LCS) (mid+)

Найдите длину наибольшей общей подпоследовательности (LCS) двух строк:

— Даны две строки A и B.
— Нужно найти длину наибольшей общей подпоследовательности между ними.


▪️ Условия

1. Строки могут быть длиной до 1000 символов.
2. Используйте динамическое программирование для решения.
3. Подсчитайте длину LCS.

💡 Ключевые моменты

— Используйте таблицу для хранения промежуточных результатов.
— Если символы в строках совпадают, то прибавляйте 1 к предыдущему значению. Если не совпадают — выбирайте максимум из предыдущих значений.
— Убедитесь, что алгоритм работает с большими строками за время O(n*m), где n и m — длины строк.

💬 Возможная реализация в комментариях. Пишите свои варианты и обсудим разные подходы.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21
💬 Обратная связь

Как вы относитесь к формату постов в канале?

🔥 — Удобно, интересно
🤔 — Нейтрально
😁 — Неудобно (предложу что-то в комменты)

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤔21😁1
Что делает аннотация @Entity?

Аннотация используется для обозначения класса как сущности, которая будет сопоставлена с таблицей в базе данных при использовании JPA (Java Persistence API). Класс, помеченный этой аннотацией, становится частью модели данных, и каждый его экземпляр будет соответствовать строкам в базе данных. Также важно, чтобы такой класс имел конструктор без параметров и корректно определял идентификатор сущности с помощью аннотации @Id.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍152🔥1
Для чего нужны профили в Spring?

Профили используются для того, чтобы разделить конфигурацию приложения в зависимости от различных сред (например, development, testing, production). Это позволяет гибко настраивать приложение для разных условий, активируя или деактивируя определенные бины, конфигурации и зависимости в зависимости от активного профиля. Профили помогают избежать жесткой привязки к среде, упрощая тестирование и развертывание приложения.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2
Что делает аннотация @Transactional в Spring?

@Transactional управляет транзакцией на уровне метода или класса. При вызове метода Spring открывает транзакцию, выполняет код, а затем:

если метод завершился успешно — транзакция коммитится
если возникло непроверяемое (runtime) исключение — транзакция откатывается

Также можно тонко настроить поведение (какие исключения приводят к rollback, изоляцию транзакции, propagation и т. д.). В итоге эта аннотация упрощает работу с транзакциями: разработчик пишет бизнес-логику, а управление транзакциями берет на себя Spring.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1👏1
Что такое optimistic и pessimistic locking?

Optimistic locking — подход, при котором предполагается, что конфликты редки. Обновление данных проверяется через версионное поле (например, @Version в JPA). Если два потока изменяют одну запись, тот, кто сохраняет изменения вторым, получит ошибку OptimisticLockException. Это дешево по ресурсам, но требует обработки ошибок при конфликте.

Pessimistic locking — «жесткая блокировка»: при чтении или изменении данных сразу ставится блокировка на строку или таблицу (SELECT ... FOR UPDATE). Другие транзакции ждут, пока блокировка не освободится. Это надежнее в сценариях с высокой конкуренцией, но дороже по производительности и может приводить к дедлокам.

👉 На практике выбор зависит от нагрузки: при редких конфликтах лучше optimistic, при частых — pessimistic.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.

Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».

🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.

Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏

👉 Регистрируйтесь через форму на лендинге