ar
Feedback
Библиотека собеса по Java | вопросы с собеседований

Библиотека собеса по Java | вопросы с собеседований

الذهاب إلى القناة على Telegram

Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot

إظهار المزيد
6 488
المشتركون
+124 ساعات
+137 أيام
+1530 أيام
أرشيف المشاركات
💬 Обратная связь Ежемесячный опрос по грейдам. Проверим, выросло ли число senior'ов. Ваш грейд: 🔥 — Senior 👍🏼 — Middle ❤️ — Junior 😁 — Ещё учусь 🐸 Библиотека собеса по Java

😎 Вы просили — мы сделали. Самый долгожданный анонс этого лета! Мы открываем набор на второй поток курса «AI-агенты для DS-с
😎 Вы просили — мы сделали. Самый долгожданный анонс этого лета! Мы открываем набор на второй поток курса «AI-агенты для DS-специалистов»! На курсе мы учим главному навыку 2025 года: не просто «болтать» с LLM, а строить из них рабочие системы с помощью Ollama, RAG, LangChain и crew.ai. 📆 Старт потока — 15 сентября. 💸 Цена 49 000 ₽ действует только в эти выходные — до 17 августа. С понедельника будет дороже. 👉 Занять место

Что такое переопределение метода? Переопределение метода (method overriding) — это определение в подклассе метода с такой же сигнатурой, как у метода в родительском классе, с целью изменить или дополнить его поведение. Основные моменты:Метод родителя должен быть доступен для переопределения (не private и не final).Используется аннотация @Override для явного указания намерения.При переопределении учитываются правила ковариантного возвращаемого типа (можно вернуть более специфичный тип).Динамическое связывание (runtime polymorphism) обеспечивает вызов версии метода из реального типа объекта, а не по ссылке. 🐸 Библиотека собеса по Java

Что такое volatile и когда его стоит использовать? volatile — это модификатор переменной, который гарантирует: ▪️ Видимость изменений между потоками ▪️ Запрет кэширования в регистре потока Использовать стоит, когда: ▪️ Есть несколько потоков, которые читают/пишут одну переменную. ▪️ Нет сложных операций над этой переменной (например, инкрементов, которые требуют атомарности). volatile не обеспечивает атомарности, поэтому для операций «чтение-модификация-запись» нужны синхронизация или атомарные типы (AtomicInteger, AtomicReference и т.п.). 🐸 Библиотека собеса по Java

🚀 Главная ошибка новичка в ML — строить звездолёт вместо велосипеда Многие сразу хотят свою Midjourney, но в итоге получают
🚀 Главная ошибка новичка в ML — строить звездолёт вместо велосипеда Многие сразу хотят свою Midjourney, но в итоге получают только выгорание. Успех начинается с «велосипеда»: научитесь предсказывать цены или классифицировать отзывы. Освойте базу, а уже потом стройте «звездолёты». Наш курс «ML для старта в Data Science» — это и есть тот самый правильный старт от простого к сложному. 👉 Начните правильно Берёте курс «ML для старта» до конца недели — Python в подарок. ❗А 21 августа пройдет бесплатный вебинар с Марией Жаровой: узнаете, какие проекты качают скилл, а какие качают ваши нервы. А какой самый сложный проект вы брались делать в самом начале? 🫢

Что такое Spring Bean и как Spring управляет его жизненным циклом? Spring Bean — это объект, управляемый контейнером Spring, который создается, конфигурируется и управляется через инверсию управления (IoC). Bean может быть зарегистрирован в контейнере через XML-конфигурацию, аннотации или Java-конфигурацию. Жизненный цикл Spring Bean включает несколько этапов: 🔹 Создание: когда приложение запускается, Spring контейнер создает экземпляры всех бинов, которые были объявлены в конфигурации. 🔹 Инъекция зависимостей: после создания Spring выполняет инъекцию зависимостей в бин, если это указано в конфигурации. 🔹 Инициализация: если бин имеет метод инициализации (например, с аннотацией @PostConstruct или через конфигурацию init-method), этот метод будет вызван после того, как все зависимости будут инжектированы. 🔹 Использование: бин доступен для использования в приложении. 🔹 Завершение (уничтожение): когда контейнер Spring завершает свою работу или бин больше не нужен, Spring вызывает метод разрушения (например, с аннотацией @PreDestroy или через конфигурацию destroy-method), если такой метод был задан. 🐸 Библиотека собеса по Java

💬 Обратная связь Ваше мнение по контенту: 🔥 — Всё супер 👍🏼 — Нормально 😁 — Есть предложения по улучшению (в комменты) 🐸 Библиотека собеса по Java

Чем отличается аутентификация от авторизации? Аутентификация — это процесс проверки подлинности пользователя. Он заключается в подтверждении, что пользователь — это именно тот, за кого себя выдаёт, с помощью таких данных, как логин и пароль, биометрия или двухфакторная аутентификация. Авторизация, в свою очередь, происходит после аутентификации и отвечает на вопрос, какие ресурсы и действия разрешены пользователю. То есть, она определяет, что пользователь может делать после того, как подтвердил свою личность. 🐸 Библиотека собеса по Java

В чём разница между IO и NIO? IO (Input/Output) — это традиционная модель потоков, использующая блокирующие операции для чтения и записи данных, что может привести к задержкам, если операция занимает много времени. NIO (New IO) был введён в JDK 1.4 для улучшения производительности, предлагая неблокирующие каналы и буферы, а также поддержку асинхронных операций, что позволяет эффективно работать с большими объёмами данных или многими соединениями одновременно. 🐸 Библиотека собеса по Java

Внедрение зависимостей через конструктор vs @Autowired на поле? Внедрение через конструктор предпочтительнее — оно гарантирует, что объект не будет создан без необходимых зависимостей, и делает класс проще для тестирования. При использовании @Autowired на поле Spring внедряет зависимость уже после создания объекта, что может привести к созданию частично инициализированных бинов. 🐸 Библиотека собеса по Java

Чем @Bean отличается от @Component в Spring? ▪️ @Component вешается над классомSpring сам создаёт его экземпляр через сканирование пакетов (@ComponentScan). ▪️ @Bean ставится над методом в @Configurationвы сами создаёте объект внутри метода и возвращаете его. @Bean полезен, когда: — класс не ваш (нет доступа, чтобы добавить аннотацию)нужен кастомный способ создания бина (например, с параметрами конструктора или фабричным методом) Оба способа регистрируют бин в ApplicationContext, разница только в том, кто и как создаёт объект. 🐸 Библиотека собеса по Java

Зачем в JVM нужен JIT-компилятор? JIT (Just-In-Time) компилятор нужен для повышения производительности программ. Он компилирует байт-код в нативный машинный код во время выполнения, чтобы избежать повторной интерпретации часто вызываемых участков кода. Дополнительно JIT оптимизирует код на основе анализа профиля исполнения (inlining, loop unrolling, dead code elimination и пр.), что невозможно сделать при обычной интерпретации. 🐸 Библиотека собеса по Java

Почему Java считается платформонезависимым языком? Потому что скомпилированный байт-код исполняется на JVM (Java Virtual Machine), а не напрямую на операционной системе. JVM реализуется под разные платформы, и именно она берёт на себя взаимодействие с ОС. В результате один и тот же .class файл можно запустить на любой системе, где установлена соответствующая JVM. 🐸 Библиотека собеса по Java

Зачем нужен Docker? Docker нужен для контейнеризации приложений, что позволяет запускать их в изолированных средах — контейнерах. Это делает процесс разработки, тестирования и развертывания приложений проще и более предсказуемым. Основные преимущества Docker: — Изоляция: контейнеры изолируют приложение и все его зависимости (библиотеки, конфигурации), обеспечивая стабильную работу на разных машинах. — Портативность: контейнеры одинаково работают как на локальной машине, так и на сервере или в облаке. Это устраняет проблему "на моем компьютере работает". — Легкость в развертывании: контейнеры запускаются быстро, что упрощает CI/CD процессы и автоматизацию развертывания. — Управление зависимостями: все нужные для приложения зависимости находятся в одном контейнере, что предотвращает конфликты версий. — Масштабируемость: Docker позволяет легко масштабировать приложение, добавляя или убирая контейнеры, что особенно полезно для микросервисных архитектур. 🐸 Библиотека собеса по Java

Что такое JSON? JSON (JavaScript Object Notation) — это текстовый формат для хранения и обмена данными, основанный на структуре «ключ–значение». Он читается человеком и легко парсится машинами. JSON широко применяется при обмене данными между клиентом и сервером, особенно в REST API. 🐸 Библиотека собеса по Java

Что такое autoboxing и unboxing? Autoboxing — это автоматическое преобразование примитивного типа (например, int) в соответствующий объект-обёртку (Integer), когда это требуется контекстом. Unboxing — обратное преобразование объекта-обёртки в примитив. Происходит при:передаче примитива в метод, ожидающий объект-обёрткуиспользовании примитива в коллекцияхарифметических операциях с обёртками (через unboxing) 🐸 Библиотека собеса по Java

💬 Обратная связь Какие вопросы публиковать больше? 👍🏼 — Классика с собесов, чтобы точно набить руку на ближайший 🤔 — Вопросы, которые не встречаются в каждой статье вида "N вопросов для собеса" 🔥 — Больше практики, а то одна теория 🐸 Библиотека собеса по Java

Расскажите про иерархию исключений В Java иерархия исключений начинается от класса Throwable, который делится на две ветви: 🔹 Error — критические ошибки JVM, например OutOfMemoryError. Их не обрабатывают, так как это сбои среды выполнения. 🔹 Exception — обрабатываемые ошибки приложения. Внутри Exception выделяют: 🔹 Checked exceptions — наследники Exception. Проверяются во время компиляции. Требуют try-catch или throws. Пример: IOException, SQLException. 🔹 Unchecked exceptions — наследники RuntimeException. Возникают из-за ошибок в логике программы, проверка компилятором не требуется. Пример: NullPointerException, IndexOutOfBoundsException. 🐸 Библиотека собеса по Java

В чем разница между map() и flatMap()? 🔹 map() — применяется для преобразования элементов потока. Он берет каждый элемент и применяет к нему функцию, возвращая новый поток, состоящий из преобразованных элементов. 🔹 flatMap() — также применяется для преобразования элементов, но с важным отличием. Он "разворачивает" потоки или коллекции, полученные на выходе функции, в один поток. То есть, если функция возвращает поток или коллекцию, flatMap() распаковывает их и объединяет в одном потоке, избавляясь от вложенности. 🐸 Библиотека собеса по Java

Что такое Big O? Big O — это способ описания сложности алгоритмов, который позволяет оценить, как изменяются время или ресурсы, необходимые для выполнения алгоритма, в зависимости от роста размера входных данных. Основные виды: ▪️ O(1) — Константная сложность. Время выполнения не зависит от размера входных данных (например, доступ к элементу массива по индексу). ▪️ O(n) — Линейная сложность. Время выполнения пропорционально размеру входных данных (например, проход по всем элементам списка). ▪️ O(n²) — Квадратичная сложность. Время выполнения пропорционально квадрату размера входных данных (например, алгоритм сортировки пузырьком). ▪️ O(log n) — Логарифмическая сложность. Время выполнения растет медленно по мере увеличения входных данных (например, бинарный поиск). 🐸 Библиотека собеса по Java