Библиотека собеса по Java | вопросы с собеседований
6.35K subscribers
354 photos
4 videos
180 links
Вопросы с собеседований по Java и ответы на них.

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

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

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Подготовься к собеседованию на позицию Data Scientist!

Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?

Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:

1. Внешнее и тензорное произведение

2. One-hot кодировка

3. Мониторинг осадков

4. Симуляция бросков кубиков в «Монополии»

5. Бурение скважин для добычи золота

6. Вычисление свертки

7. Бэктестинг торговой стратегии

8. Прогноз оттока клиентов с помощью логистической регрессии

9. Обнаружение спама с использованием дерева решений

10. Предсказание цен на квартиры с помощью линейной регрессии

Чтобы начать решать задачи, достаточно ответить на четыре простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Математика для Data Science и 10 задачам.
Что такое Lazy Initialization?

Lazy Initialization (ленивая инициализация) — это подход, при котором объект, ресурс или данные создаются и инициализируются только при первом использовании. Это позволяет сократить затраты на память и процессорное время, особенно если ресурс может никогда не понадобиться в ходе выполнения программы.

Зачем это нужно?

▪️ Оптимизация производительности. Тяжёлые операции, такие как загрузка данных из базы или инициализация сложных объектов, выполняются только при необходимости.
▪️ Экономия ресурсов. Позволяет избежать выделения памяти или загрузки данных до их реального использования.
Please open Telegram to view this post
VIEW IN TELEGRAM
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе

В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.

Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.

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

🔗 Читать статью
🔗 Зеркало
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
🎨 Новый канал для вдохновения — UX in GIF

Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.

📌 Чем полезен канал?

→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.

👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем разница между StackOverflowError и OutOfMemoryError?

🔹 StackOverflowError возникает при переполнении стека вызовов. Это связано с глубокой рекурсией или избыточной вложенностью методов. Стек — это ограниченный объем памяти, выделенный для хранения локальных переменных и контекста выполнения.

🔹 OutOfMemoryError возникает, если JVM исчерпывает память в куче или других областях (например, Metaspace). Это может происходить из-за утечек памяти, создания огромных объектов или нехватки ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое BeanPostProcessor?

BeanPostProcessorинтерфейс Spring, позволяющий вмешиваться в процесс инициализации бинов.

Он предоставляет два метода:
▪️ postProcessBeforeInitializationвызывается до инициализации бина.
▪️ postProcessAfterInitializationвызывается после инициализации бина.

Применяется для кастомизации бинов: логирование, валидация, проксирование (AOP, транзакции) и т.д.

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

1️⃣ Spring ищет все реализации BeanPostProcessor.
2️⃣ Методы применяются ко всем бинам в контексте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Prototype Scope в Spring?

Prototype Scope — это один из типов областей видимости (scope) бинов в Spring. Если бин настроен как @Scope("prototype"), то каждый раз, когда вы запрашиваете этот бин у контейнера Spring, создается новый экземпляр объекта.

Зачем нужен?

▪️ Полезен, если у бина есть изменяемое состояние, которое не должно разделяться между потоками или пользователями.
▪️ Каждый запрос получает "чистый" объект, что упрощает работу с данными, привязанными к конкретному потоку, запросу или контексту.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое ApplicationContext в Spring?

ApplicationContext — это центральный интерфейс контейнера Spring, который загружает метаданные конфигурации из XML-файлов, Java-классов или аннотаций, создаёт бины и управляет ими на протяжении всего жизненного цикла приложения, а также предоставляет расширенные функции для разработки приложений. Он является расширением BeanFactory и добавляет дополнительные возможности, такие как поддержка аннотаций, автоматическое связывание зависимостей, интернационализацию и публикацию событий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👀 Задачи с собеседований: Поиск подмассива с максимальной суммой (middle)

— Дан массив целых чисел, необходимо найти подмассив с наибольшей суммой и вернуть эту сумму.

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

- Подмассив — это непрерывная последовательность элементов исходного массива.
- Требуется определить такую последовательность, сумма элементов которой максимальна.
- Эффективное решение задачи достигается с помощью алгоритма Кадане, который позволяет найти максимальную сумму подмассива за линейное время O(n).

Реализация на картинке 👆🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
Какая разница между интерфейсами Runnable и Callable?

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

🔹 Runnableэто интерфейс, предназначенный для выполнения задачи, которая ничего не возвращает и не выбрасывает проверяемых исключений. Метод run() не имеет возвращаемого значения:

public interface Runnable {
void run();
}


🔹 Callableэто интерфейс, который используется для выполнения задачи, которая возвращает результат и может выбрасывать проверяемые исключения. Метод call() возвращает объект:

public interface Callable<V> {
V call() throws Exception;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Singleton Scope в Spring?

Singleton Scopeэто область видимости (scope) бина по умолчанию в Spring. Если бин настроен как @Scope("singleton") или не имеет явного указания области видимости, контейнер Spring создает только один экземпляр бина и возвращает его при каждом запросе.

Зачем нужен?

▪️ Экономия ресурсов: один экземпляр бина используется повторно, что снижает нагрузку на создание объектов.
▪️ Удобство управления состоянием: общие ресурсы или настройки можно легко разделить между всеми частями приложения.
▪️ Простота интеграции: Singleton-бин упрощает реализацию общесистемных сервисов, таких как кеширование, логирование, или подключения к базам данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!

🔹 Почему IT?

- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.

Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.

📚 Как это работает?

- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.

А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше

Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:

🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.

🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.

🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.

🔵 И другие комбинации для разных целей.

Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас

Развивайтесь в IT — и будущее уже будет в ваших руках!
ℹ️ Что делает аннотация @Retention?

@Retention - это стандартная аннотация из пакета Java (java.lang.annotation.Retention). Аннотация задаёт политику удержания аннотаций, определяя, где и как долго аннотация будет доступна в процессе выполнения программы.

🔵 Политики удержания:

- RetentionPolicy.SOURCE - аннотация сохраняется только в исходном коде и отбрасывается компилятором. Она недоступна в байт-коде и во время выполнения.
- RetentionPolicy.CLASS - аннотация сохраняется в байт-коде, но недоступна в процессе выполнения через рефлексию. Это настройка по умолчанию, если @Retention не указана.
- RetentionPolicy.RUNTIME - аннотация сохраняется в байт-коде и доступна во время выполнения через рефлексию. Эта политика чаще всего используется в Spring для создания и обработки пользовательских аннотаций.

🔵 Пример:
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
String value();
}


В этом примере аннотация будет доступна для анализа во время выполнения, что позволяет Spring или другим библиотекам использовать её для настройки бинов, аспектов и других механизмов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Propagation в Spring?

Propagation — это механизм, определяющий, как должна вести себя новая транзакция относительно уже существующей. Эта настройка управляет тем, будет ли новая транзакция создана, использована текущая или полностью проигнорирована.

🔹 Ключевые типы:

- REQUIRED (по умолчанию): использует текущую транзакцию, или создаёт новую, если её нет.
- REQUIRES_NEW: всегда создаёт новую транзакцию, приостанавливая текущую.
- NESTED: вложенная транзакция, откат которой не влияет на основную.
- SUPPORTS: использует текущую транзакцию, но работает без неё, если её нет.
- NOT_SUPPORTED: приостанавливает текущую транзакцию.
- NEVER: вызывает ошибку, если транзакция уже существует.
- MANDATORY: требует существования транзакции, иначе выбрасывает исключение.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое ForkJoinPool и где его применяют?

ForkJoinPool — это пул потоков в Java, который работает по принципу "разделяй и властвуй". Он позволяет разбивать задачи на мелкие подзадачи (fork), выполнять их параллельно, а затем объединять результаты (join).

Особенность ForkJoinPool — использование алгоритма work-stealing, где потоки, простаивающие без работы, забирают задачи из очередей других потоков, что повышает производительность.

Где применяется:


- Рекурсивные вычисления (например, сортировка или суммирование).
- Параллельная обработка больших данных.
- Задачи, которые можно разделить на независимые подзадачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое transient поля?

transient — это модификатор, который исключает поле из процесса сериализации. Это означает, что значение такого поля не будет записано в поток и восстановлено при десериализации объекта.

Пример:

class User implements Serializable {
private String username;
private transient String password;
}


Когда использовать:
- Для чувствительных данных, таких как пароли.
- Для временных или несущественных данных, которые не нужно сохранять.
Please open Telegram to view this post
VIEW IN TELEGRAM