ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

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

Вопросы с собеседований по Java и ответы на них. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot

إظهار المزيد
6 376
المشتركون
-324 ساعات
-287 أيام
-5730 أيام
أرشيف المشاركات
❓ Что такое денормализация в базах данных? Денормализация — это процесс преднамеренного добавления избыточности в структуру базы данных для повышения производительности чтения. В отличие от нормализации, цель которой — устранить дублирование и обеспечить целостность, денормализация может включать дублирование данных, объединение таблиц или добавление агрегированных колонок. 🐸 Библиотека собеса по Java

❓ В чем разница между == и .equals()? == сравнивает ссылки на объекты, т.е. проверяет, указывают ли две переменные на один и тот же объект в памяти. .equals() — это метод класса Object, который используется для проверки логического равенства объектов. По умолчанию, он работает как ==, но многие классы (например, String, List и т.д.) переопределяют этот метод, чтобы сравнивать значения объектов. 🐸 Библиотека собеса по Java

🔍 Сегодня тестовое собеседование с Java-разработчиком 2 июля(уже сегодня!) в 19:00 по мск приходи онлайн на открытое собесед
🔍 Сегодня тестовое собеседование с Java-разработчиком 2 июля(уже сегодня!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Сергею Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvFzMPV

🔥 Последняя неделя перед стартом курса по AI-агентам Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕ
🔥 Последняя неделя перед стартом курса по AI-агентам Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место На курсе: — разложим LLM по косточкам: токенизация, SFT, PEFT, инференс — соберём RAG и научимся оценивать его адекватно — построим настоящую мультиагентную систему — архитектуру, которая умеет расти — разберём CoPilot, сломаем через prompt injection (спасибо Максу) — и наконец, посмотрим, как это работает в MCP и реальных кейсах 📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API» 👉 Курс здесь

❓ Что такое SOLID? SOLID — это аббревиатура из пяти принципов объектно-ориентированного проектирования, помогающих писать поддерживаемый и расширяемый код. ▪️ S — Single Responsibility Principle (SRP) Каждый класс должен иметь одну и только одну причину для изменения. ▪️ O — Open/Closed Principle (OCP) Сущности должны быть открыты для расширения, но закрыты для модификации. ▪️ L — Liskov Substitution Principle (LSP) Объекты подклассов должны заменять объекты суперклассов без нарушения логики. ▪️ I — Interface Segregation Principle (ISP) Лучше иметь несколько специализированных интерфейсов, чем один общий. ▪️ D — Dependency Inversion Principle (DIP) Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций. 🐸 Библиотека собеса по Java

💬 Обратная связь Ежемесячный опрос по грейдам. Проверим, сколько среди нас джедаев синьоров. Ваш грейд: 🔥 — Senior 👍🏼 — Middle ❤️ — Junior 😁 — Ещё учусь 🐸 Библиотека собеса по Java

❓ Что такое bytecode в Java? Bytecode — это промежуточный машинно-независимый код, в который компилируется Java-программа. Он создаётся компилятором и сохраняется в .class файлах. Этот код не исполняется напрямую процессором, а выполняется виртуальной машиной Java (JVM), которая интерпретирует или компилирует его в машинный код на лету (через JIT-компиляцию). Bytecode позволяет Java оставаться кроссплатформенной: один и тот же .class файл можно запускать на любой платформе с установленной JVM. 🐸 Библиотека собеса по Java

❓ Что такое optimistic и pessimistic locking? Optimistic locking — подход, при котором предполагается, что конфликты редки. Данные читаются без блокировки, а при обновлении проверяется, что никто не изменил их параллельно (обычно через version-поле). Если данные изменились — операция отклоняется, вызывается исключение, и клиент решает, что делать дальше. Используется, например, с JPA (@Version) и хорошо работает при низкой конкуренции. Pessimistic locking — подход, при котором при чтении или обновлении данных сразу накладывается блокировка, чтобы другие потоки/транзакции не могли изменить их до окончания текущей операции. Это снижает риск конфликтов, но уменьшает параллелизм. 🐸 Библиотека собеса по Java

❓ Что такое this? this — это ссылочная переменная, доступная внутри нестатических методов и конструкторов, которая указывает на текущий экземпляр класса. Она используется, чтобы: — Отличать поля класса от параметров метода — Вызывать другие конструкторы текущего класса через this(...) — Передавать текущий объект в качестве аргумента — Получить доступ к текущему объекту из вложенного класса. 🐸 Библиотека собеса по Java

❓ Опишите подход Test-Driven Development Test-Driven Development (TDD) — это методология разработки программного обеспечения, при которой сначала пишутся тесты, а затем реализуется функциональность, чтобы эти тесты прошли. Процесс включает три основных этапа: ▪️ Красный — пишем тест, который изначально не проходит (так как функциональность еще не реализована). ▪️ Зеленый — пишем минимально необходимый код для того, чтобы тест прошел. ▪️ Рефакторинг — улучшаем код, при этом тесты должны по-прежнему проходить. 🐸 Библиотека собеса по Java

❓ Что такое Propagation в Spring? Propagation — это режимы управления транзакциями, которые определяют, как транзакции должны вести себя при вызове метода внутри другого метода, который уже находится в транзакции. ▪️ Основные режимы: — REQUIRED (по умолчанию): если транзакция существует, то текущий метод будет работать в рамках этой транзакции. Если транзакция не существует, создается новая. — REQUIRES_NEW: создается новая транзакция, даже если уже существует текущая. Текущая транзакция будет приостановлена до завершения новой. — NESTED: в рамках текущей транзакции создается вложенная транзакция. В случае отката внешней транзакции будет откатана и вложенная. — MANDATORY: метод должен быть вызван в рамках существующей транзакции. Если транзакции нет, выбрасывается исключение. — NEVER: метод не должен выполняться в рамках транзакции. Если транзакция существует, выбрасывается исключение. — SUPPORTS: если транзакция существует, метод будет выполнен в ее рамках. Если транзакции нет, метод будет выполнен без транзакции. — NOT_SUPPORTED: метод выполняется без транзакции. Если транзакция существует, она приостанавливается на время выполнения метода. 🐸 Библиотека собеса по Java

❓ Чем различаются Thread и Runnable в Java? Thread — это класс, который представляет поток выполнения. Вы можете создать объект Thread, передав в его конструктор объект, реализующий интерфейс Runnable, или наследовать Thread и переопределить метод run(). Runnable — это интерфейс, который представляет задачу, которую можно выполнить в потоке. Он определяет единственный метод run(), который будет содержать код, выполняемый в потоке. Thread является более "тяжелым" объектом, так как он сам управляет жизненным циклом потока, тогда как Runnable лишь описывает задачу, а поток (например, объект Thread) управляет её выполнением. 🐸 Библиотека собеса по Java

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

❓ Что такое Diamond Problem? Diamond Problem — это ситуация в ООП, когда класс наследуется от двух (или более) классов, которые имеют общий предок. Это приводит к неясности, какой из методов или свойств из общего предка должен быть использован в дочернем классе. Например, класс D реализует интерфейсы B и C, которые оба наследуют от A. В случае наличия однотипных методов в B и C, возникает неясность, какой метод использовать. Java не поддерживает множественное наследование классов, поэтому Diamond Problem возникает только в контексте интерфейсов. И решается путём явного переопределения реализации в дочернем классе. 🐸 Библиотека собеса по Java

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

❓ Какие методы есть в Stream API? В Stream API есть несколько основных категорий методов: 1. Создание потока: — stream() создаёт поток из коллекции. — of() создаёт поток из переданных элементов. — iterate() создаёт поток с элементами, вычисляемыми по определенному правилу. — generate() создаёт поток с элементами, генерируемыми функцией. 2. Промежуточные операции (возвращают новый поток): — map() преобразует элементы потока. — filter() фильтрует элементы потока. — distinct() удаляет дубликаты. — sorted() сортирует элементы. — peek() позволяет наблюдать за элементами в потоке. 3. Терминальные операции (возвращают результат, завершают поток): — collect() собирает элементы в коллекцию. — reduce() сводит элементы потока к одному значению. — forEach() выполняет действие для каждого элемента. — count() возвращает количество элементов. — anyMatch(), allMatch(), noneMatch() проверка условия для элементов. 4. Операции для работы с примитивными типами (IntStream, LongStream, DoubleStream): — mapToInt(), mapToLong(), mapToDouble() — преобразуют элементы в соответствующие типы. — sum(), average(), min(), max() — для статистики. 🐸 Библиотека собеса по Java

❓ Что такое «абсолютный путь» и «относительный путь»? ▪️ Абсолютный путь — это путь к файлу или каталогу от корневой директории файловой системы или диска. Он всегда однозначен и не зависит от текущего рабочего каталога программы. ▪️ Относительный путь — это путь к файлу или каталогу относительно текущего рабочего каталога. Он короче, но зависит от того, в какой директории запускается приложение. 🐸 Библиотека собеса по Java

❓ Что такое race condition? Race condition (состояние гонки) — это ситуация, когда два или более потока или процесса одновременно пытаются получить доступ и изменить общий ресурс, и порядок их выполнения влияет на корректность программы. В результате, если доступ к ресурсу не синхронизирован, может возникнуть неконсистентное состояние, что приводит к ошибкам. Пример: Предположим, два потока одновременно увеличивают значение переменной. Без должной синхронизации результат может быть неверным, так как оба потока могут читать одно и то же значение до его изменения. Как избежать: Использование синхронизации, таких как блокировки (synchronized), атомарные операции или конструкции из библиотеки java.util.concurrent, может помочь избежать состояний гонки. 🐸 Библиотека собеса по Java

❓ Что такое функциональный интерфейс? Функциональный интерфейс — это интерфейс с единственным абстрактным методом. Он нужен для определения целевого типа для лямбда-выражений и ссылок на методы. В Java для обозначения используется аннотация @FunctionalInterface, но она необязательна — это лишь гарантия на этапе компиляции. Примеры: Runnable, Callable, Comparator, Function<T,R>. 🐸 Библиотека собеса по Java

❓ Что такое phantom reads в контексте работы с БД? Ответ: Phantom reads — это явление, при котором транзакция читает данные, которые были добавлены или удалены другими транзакциями после начала выполнения её запроса. В отличие от других аномалий, таких как dirty reads или non-repeatable reads, phantom reads возникают, когда результаты запроса изменяются в процессе его выполнения, например, при добавлении новых строк в таблицу, соответствующих условиям выборки. Для предотвращения phantom reads используется уровень изоляции Serializable. 🐸 Библиотека собеса по Java