Files
second-mind-aep/💼 Работа/Собеседования/Теоритические вопросы.md
2025-08-13 17:22:07 +04:00

34 KiB
Raw Blame History

📝 100 теоретических вопросов для собеседования Java-разработчика (складская логистика)

🟢 JUNIOR уровень (1-30)

Core Java

1. Что такое JVM, JRE и JDK? В чем разница? Ответ: JVM (Java Virtual Machine) - виртуальная машина, исполняющая байт-код Java. JRE (Java Runtime Environment) - среда выполнения, включает JVM + стандартные библиотеки. JDK (Java Development Kit) - набор для разработки, включает JRE + компилятор + инструменты разработки.

2. В чем разница между == и equals() в Java? Ответ: == сравнивает ссылки на объекты (для примитивов - значения), equals() сравнивает содержимое объектов. Для String: == проверяет одинаковые ли это объекты в памяти, equals() проверяет одинаковое ли содержание строк.

3. Что такое autoboxing и unboxing? Ответ: Autoboxing - автоматическое преобразование примитивов в wrapper-классы (int → Integer). Unboxing - обратное преобразование (Integer → int). Происходит автоматически при присваивании и передаче параметров.

4. Назовите основные принципы ООП Ответ: Инкапсуляция (сокрытие данных), Наследование (extends/implements), Полиморфизм (один интерфейс - разные реализации), Абстракция (выделение главного, сокрытие деталей).

5. В чем разница между interface и abstract class? Ответ: Interface: только абстрактные методы (до Java 8), множественное наследование, все методы public. Abstract class: может содержать конкретные методы, поля, конструкторы, одиночное наследование, разные модификаторы доступа.

6. Что такое статический метод и статическая переменная? Ответ: Принадлежат классу, а не экземпляру. Статические переменные создаются при загрузке класса, общие для всех экземпляров. Статические методы можно вызывать без создания объекта, не имеют доступа к нестатическим членам.

7. Что такое final в Java? Ответ: final переменная - константа, нельзя изменить значение. final метод - нельзя переопределить в наследниках. final класс - нельзя наследовать (например, String).

8. Назовите основные коллекции в Java Ответ: List (ArrayList, LinkedList), Set (HashSet, TreeSet), Map (HashMap, TreeMap), Queue (LinkedList, PriorityQueue). Каждая имеет свои особенности производительности и поведения.

9. В чем разница между ArrayList и LinkedList? Ответ: ArrayList - динамический массив, быстрый доступ по индексу O(1), медленные вставки/удаления в середине O(n). LinkedList - двусвязный список, медленный доступ O(n), быстрые вставки/удаления O(1).

10. Что такое HashMap и как он работает? Ответ: Структура данных "ключ-значение", использует хеширование. Ключ преобразуется в хеш-код, определяющий позицию в массиве. Коллизии разрешаются через связанные списки (до Java 8) или деревья (с Java 8).

Spring Framework

11. Что такое Spring Framework? Ответ: Java-фреймворк для разработки enterprise-приложений. Основан на IoC (Inversion of Control) и DI (Dependency Injection). Упрощает разработку через автоматическое управление зависимостями.

12. Что такое Spring Boot? Ответ: Фреймворк поверх Spring, обеспечивающий автоконфигурацию и упрощенную настройку. Включает встроенный сервер, стартеры для быстрого подключения зависимостей, production-ready возможности.

13. Что такое IoC и DI? Ответ: IoC (Inversion of Control) - принцип передачи управления созданием объектов фреймворку. DI (Dependency Injection) - способ реализации IoC через внедрение зависимостей через конструктор, сеттеры или поля.

14. Назовите способы внедрения зависимостей в Spring Ответ: Constructor injection (@Autowired на конструкторе), Setter injection (@Autowired на сеттере), Field injection (@Autowired на поле). Рекомендуется constructor injection.

15. Что такое @Component, @Service, @Repository, @Controller? Ответ: Стереотипные аннотации для обозначения ролей компонентов. @Component - общий компонент, @Service - бизнес-логика, @Repository - доступ к данным, @Controller - веб-контроллер. Все наследуются от @Component.

REST API

16. Что такое REST? Ответ: Representational State Transfer - архитектурный стиль для веб-сервисов. Основан на HTTP-методах, stateless, использует стандартные коды ответов, ресурсы идентифицируются URL.

17. Назовите основные HTTP-методы и их назначение Ответ: GET (получение данных), POST (создание), PUT (полное обновление), PATCH (частичное обновление), DELETE (удаление), HEAD (получение заголовков), OPTIONS (получение доступных методов).

18. Что такое HTTP статус-коды? Приведите примеры Ответ: 200 OK (успех), 201 Created (создано), 400 Bad Request (неверный запрос), 401 Unauthorized (не авторизован), 403 Forbidden (запрещено), 404 Not Found (не найдено), 500 Internal Server Error (ошибка сервера).

19. Что такое @RestController в Spring? Ответ: Аннотация, объединяющая @Controller и @ResponseBody. Указывает, что класс является REST-контроллером, а все методы возвращают данные в формате JSON/XML, а не представления.

20. Что делает аннотация @RequestMapping? Ответ: Связывает HTTP-запросы с методами контроллера. Можно указать URL, HTTP-метод, параметры запроса, заголовки. Имеет специализированные варианты: @GetMapping, @PostMapping и т.д.

Базы данных

21. Что такое SQL? Ответ: Structured Query Language - язык структурированных запросов для работы с реляционными БД. Включает DDL (создание структур), DML (манипуляция данными), DCL (управление доступом).

22. В чем разница между INNER JOIN и LEFT JOIN? Ответ: INNER JOIN возвращает только записи, имеющие соответствие в обеих таблицах. LEFT JOIN возвращает все записи из левой таблицы и соответствующие из правой (NULL если нет соответствия).

23. Что такое первичный ключ (Primary Key)? Ответ: Уникальный идентификатор записи в таблице. Не может быть NULL, должен быть уникальным, может состоять из одного или нескольких полей. Обеспечивает целостность данных.

24. Что такое транзакция в БД? Ответ: Логическая единица работы, состоящая из одной или нескольких операций. Обладает свойствами ACID: Atomicity (атомарность), Consistency (согласованность), Isolation (изолированность), Durability (долговечность).

25. Что такое индекс в БД? Ответ: Структура данных, ускоряющая поиск записей в таблице. Создает отсортированную структуру со ссылками на строки. Ускоряет SELECT, но замедляет INSERT/UPDATE/DELETE.

Складская логистика

26. Что такое WMS система? Ответ: Warehouse Management System - система управления складом. Контролирует движение товаров, размещение, комплектацию, отгрузку. Интегрируется с оборудованием: сканеры, конвейеры, роботы.

27. Что такое SKU в складской логистике? Ответ: Stock Keeping Unit - единица учета товара. Уникальный код для каждого товара/варианта товара (размер, цвет и т.д.). Основа для идентификации и отслеживания товаров на складе.

28. Что такое RFID и зачем он нужен на складе? Ответ: Radio Frequency Identification - радиочастотная идентификация. Позволяет автоматически считывать информацию с меток без прямого контакта. Ускоряет инвентаризацию, отслеживание товаров.

29. Объясните процесс picking на складе Ответ: Процесс комплектования заказов - сбор товаров со склада согласно заказу. Виды: по заказам, по зонам, волновой. Оптимизируется маршрутами, приоритетами, группировкой заказов.

30. Что такое cross-docking? Ответ: Логистическая операция прямой перевалки товаров с минимальным складированием. Товар поступает, сортируется и сразу отгружается. Снижает затраты на хранение, ускоряет доставку.


🟡 MIDDLE уровень (31-70)

Продвинутая Java

31. Объясните работу Garbage Collector в Java Ответ: Автоматическое управление памятью, удаляющее неиспользуемые объекты. Поколения: Young (Eden, Survivor), Old, Metaspace. Алгоритмы: Serial, Parallel, G1, ZGC. Работает в фоне, может вызывать паузы приложения.

32. Что такое Stream API в Java 8+? Ответ: Функциональный API для обработки коллекций. Поддерживает цепочки операций: filter, map, reduce, collect. Может быть последовательным и параллельным. Ленивые вычисления - выполняется только при терминальной операции.

33. Что такое Optional и зачем он нужен? Ответ: Контейнер для объекта, который может быть null. Помогает избежать NullPointerException. Методы: isPresent(), ifPresent(), orElse(), orElseThrow(). Делает код более читаемым и безопасным.

34. Объясните работу ConcurrentHashMap Ответ: Потокобезопасная версия HashMap. Использует сегментирование (до Java 8) или CAS-операции (с Java 8). Позволяет одновременное чтение без блокировок, блокирует только участки при записи.

35. В чем разница между synchronized и volatile? Ответ: synchronized - блокирует доступ к методу/блоку кода для одного потока. volatile - гарантирует видимость изменений переменной всеми потоками, но не обеспечивает атомарность сложных операций.

36. Что такое CompletableFuture? Ответ: Класс для асинхронного программирования. Позволяет выполнять задачи в фоне, комбинировать результаты, обрабатывать исключения. Методы: supplyAsync(), thenApply(), thenCompose(), exceptionally().

37. Объясните паттерн Singleton и его реализации Ответ: Гарантирует существование только одного экземпляра класса. Реализации: eager initialization, lazy initialization, thread-safe, enum-based. Проблемы: тестирование, скрытые зависимости.

Spring Advanced

38. Что такое Spring Security и его основные компоненты? Ответ: Фреймворк безопасности для Spring-приложений. Компоненты: Authentication (аутентификация), Authorization (авторизация), SecurityFilterChain, UserDetailsService, PasswordEncoder.

39. Объясните жизненный цикл Spring Bean Ответ: Создание → Заполнение свойств → BeanNameAware → BeanFactoryAware → ApplicationContextAware → @PostConstruct → InitializingBean → custom init-method → ready для использования → @PreDestroy → DisposableBean → custom destroy-method.

40. Что такое Spring Profiles? Ответ: Механизм для разделения конфигурации по средам (dev, test, prod). Активируется через spring.profiles.active. Позволяет иметь разные настройки БД, логирования, внешних сервисов для разных окружений.

41. Объясните аннотации @Transactional Ответ: Управляет транзакциями декларативно. Параметры: propagation (поведение при вложенных транзакциях), isolation (уровень изоляции), rollbackFor (исключения для отката), readOnly (только чтение).

42. Что такое Spring Data JPA? Ответ: Абстракция над JPA, упрощающая работу с БД. Автоматически генерирует реализации репозиториев по методам. Поддерживает query methods, @Query, Criteria API, пагинацию, аудит.

43. Что такое Spring Boot Actuator? Ответ: Модуль для мониторинга и управления приложением. Endpoints: /health, /metrics, /info, /env. Предоставляет HTTP-endpoints и JMX beans для получения информации о состоянии приложения.

Микросервисы

44. Что такое микросервисная архитектура? Ответ: Архитектурный подход разбиения приложения на небольшие независимые сервисы. Каждый сервис: отдельная БД, независимое развертывание, коммуникация через API, specific business capability.

45. Объясните паттерн Circuit Breaker Ответ: Защищает от каскадных сбоев при вызове внешних сервисов. Состояния: Closed (нормальная работа), Open (блокировка вызовов), Half-Open (проверка восстановления). Реализации: Hystrix, Resilience4j.

46. Что такое Service Discovery? Ответ: Механизм автоматического обнаружения сервисов в микросервисной архитектуре. Сервисы регистрируются при старте, клиенты находят их через registry. Примеры: Eureka, Consul, Zookeeper.

47. Объясните паттерн API Gateway Ответ: Единая точка входа для всех клиентских запросов к микросервисам. Функции: routing, authentication, rate limiting, monitoring, request/response transformation. Примеры: Spring Cloud Gateway, Zuul.

48. Что такое Distributed Tracing? Ответ: Отслеживание запросов через множество микросервисов. Каждый запрос получает уникальный trace ID, каждый сервис добавляет span. Помогает в debugging и performance monitoring. Инструменты: Jaeger, Zipkin.

Messaging

49. Объясните принципы работы Apache Kafka Ответ: Распределенная платформа потоковой обработки. Topics разделены на partitions, сообщения упорядочены в рамках partition. Producers отправляют, Consumers читают. Поддерживает persistence, replication, high throughput.

50. В чем разница между Kafka и RabbitMQ? Ответ: Kafka: высокая пропускная способность, persistence, streaming, pull-модель. RabbitMQ: low latency, flexible routing, push-модель, transactional. Kafka для больших объемов данных, RabbitMQ для сложной маршрутизации.

51. Что такое Consumer Groups в Kafka? Ответ: Группа потребителей, совместно читающих topic. Каждый partition читается только одним consumer в группе. Обеспечивает horizontal scaling и fault tolerance. Offset управляется на уровне группы.

52. Объясните семантики доставки сообщений Ответ: At most once (максимум один раз) - может потеряться. At least once (минимум один раз) - может дублироваться. Exactly once (ровно один раз) - идеальная доставка, сложная реализация.

Базы данных (продвинутый уровень)

53. Объясните ACID свойства транзакций Ответ: Atomicity - либо все операции выполняются, либо ни одна. Consistency - БД остается в согласованном состоянии. Isolation - транзакции не влияют друг на друга. Durability - результаты сохраняются после commit.

54. Что такое уровни изоляции транзакций? Ответ: READ UNCOMMITTED (dirty reads), READ COMMITTED (no dirty reads), REPEATABLE READ (no phantom reads в некоторых БД), SERIALIZABLE (полная изоляция). Выше уровень - больше согласованность, ниже производительность.

55. Объясните стратегии кеширования в базах данных Ответ: Cache-aside (приложение управляет кешем), Write-through (запись в кеш и БД), Write-behind (отложенная запись в БД), Refresh-ahead (proactive обновление). Каждая имеет trade-offs по consistency и performance.

56. Что такое денормализация и когда она применяется? Ответ: Намеренное нарушение нормальных форм для повышения производительности. Дублирование данных для уменьшения JOINs. Применяется в OLAP системах, при high read load, в NoSQL проектировании.

57. Объясните репликацию и шардинг в БД Ответ: Репликация - создание копий данных для отказоустойчивости и масштабирования чтения. Шардинг - горизонтальное разделение данных по серверам. Шардинг сложнее, но масштабирует запись.

Тестирование

58. В чем разница между Unit, Integration и E2E тестами? Ответ: Unit - тестируют отдельные компоненты в изоляции. Integration - взаимодействие между компонентами. E2E - полный пользовательский сценарий. Пирамида тестов: больше unit, меньше E2E.

59. Что такое Test Doubles? Приведите примеры Ответ: Заменители реальных объектов в тестах. Dummy (заглушка), Stub (возвращает предопределенные данные), Mock (проверяет взаимодействия), Spy (частичная подмена), Fake (упрощенная реализация).

60. Объясните TDD подход Ответ: Test-Driven Development. Цикл: Red (пишем падающий тест) → Green (минимальный код для прохождения) → Refactor (улучшаем код). Преимущества: лучший дизайн кода, высокое покрытие, документация через тесты.

Продвинутая складская логистика

61. Объясните архитектуру типичной WMS системы Ответ: Многоуровневая архитектура: Presentation (UI), Business Logic (workflow engine), Data Access (repository pattern), Integration (ERP, WCS), Device Layer (сканеры, PLC). Часто микросервисная с event sourcing.

62. Что такое WCS и чем отличается от WMS? Ответ: WCS (Warehouse Control System) - управляет оборудованием в реальном времени (конвейеры, сортировщики). WMS - управляет логическими процессами (заказы, inventory). WCS - технический уровень, WMS - бизнес-уровень.

63. Объясните концепцию event-driven архитектуры для складов Ответ: События генерируются оборудованием/пользователями и обрабатываются асинхронно. События: товар отсканирован, робот завершил задачу, заказ создан. Позволяет loose coupling, scalability, real-time реакции.

64. Что такое Digital Twin в контексте склада? Ответ: Цифровая модель физического склада в реальном времени. Включает расположение товаров, состояние оборудования, текущие задачи. Используется для симуляции, оптимизации, predictive maintenance.

65. Объясните оптимизацию маршрутов комплектации Ответ: Алгоритмы: shortest path, traveling salesman variations, zone-based picking. Факторы: layout склада, приоритеты заказов, capacity constraints. Часто используется genetic algorithms, machine learning.

66. Что такое Slotting в WMS? Ответ: Оптимальное размещение товаров в ячейках склада. Критерии: velocity (оборачиваемость), size, weight, picking frequency. Цель: минимизация времени комплектации, максимизация использования пространства.

67. Объясните концепцию Wave Planning Ответ: Группировка заказов в волны для эффективной обработки. Критерии: приоритет, destination, item locations, resource availability. Балансирует workload между зонами, оптимизирует использование ресурсов.

68. Что такое AGV/AMR системы на складе? Ответ: AGV (Automated Guided Vehicles) - следуют фиксированным маршрутам (магнитные полосы, провода). AMR (Autonomous Mobile Robots) - самостоятельная навигация с помощью SLAM. AMR более гибкие, но дороже.

69. Объясните интеграцию WMS с ERP системами Ответ: ERP передает заказы, принимает отчеты об отгрузках, синхронизирует inventory. Паттерны: real-time API calls, batch EDI processing, event-driven messaging. Ключевые entity: orders, items, inventory levels.

70. Что такое Cycle Counting в складской системе? Ответ: Регулярная проверка точности inventory без остановки операций. Стратегии: ABC analysis (чаще проверяем A-items), random sampling, control group method. Цель: поддержание accuracy, выявление systematic errors.


🔴 SENIOR уровень (71-100)

Архитектура и дизайн

71. Объясните паттерн CQRS и Event Sourcing Ответ: CQRS разделяет чтение и запись на разные модели. Event Sourcing сохраняет события вместо состояния. Вместе обеспечивают: audit trail, temporal queries, independent scaling read/write, complex business logic replay.

72. Что такое Domain-Driven Design (DDD)? Ответ: Подход к проектированию сложных систем через modeling business domain. Концепции: Bounded Context, Aggregates, Domain Services, Repositories. Цель: код отражает business logic, shared understanding между разработчиками и domain experts.

73. Объясните паттерн Saga для распределенных транзакций Ответ: Управление длительными бизнес-процессами в микросервисах без 2PC. Виды: Orchestration (центральный coordinator) и Choreography (событийная координация). Каждый шаг имеет compensating action для rollback.

74. Что такое Hexagonal Architecture (Ports and Adapters)? Ответ: Архитектурный паттерн изолирующий business logic от внешних concerns. Core содержит domain logic, Ports - интерфейсы, Adapters - реализации для конкретных технологий. Обеспечивает testability и flexibility.

75. Объясните паттерн Strangler Fig для миграции legacy систем Ответ: Постепенная замена legacy системы новой. Новая функциональность разрабатывается в новой системе, старая gradually redirected. API Gateway маршрутизирует запросы. Минимизирует risk и downtime при миграции.

Производительность и масштабирование

76. Объясните стратегии кеширования в distributed системах Ответ: Уровни: browser cache, CDN, API gateway cache, application cache (Redis), database cache. Стратегии: cache-aside, write-through, write-behind. Проблемы: cache invalidation, consistency, thundering herd.

77. Что такое Database Connection Pooling и как его оптимизировать? Ответ: Пул переиспользуемых connection к БД. Параметры: min/max size, idle timeout, validation query. Оптимизация: monitoring connection usage, proper sizing based on load, connection leak detection.

78. Объясните методы профилирования Java приложений Ответ: JProfiler, VisualVM, async-profiler, JFR (Java Flight Recorder). Метрики: CPU usage, memory allocation, GC behavior, thread contention. Flame graphs для visualizing call stacks и hotspots.

79. Что такое Reactive Programming и когда его применять? Ответ: Асинхронная обработка данных как потоков событий. Принципы: responsive, resilient, elastic, message-driven. Реализации: Project Reactor, RxJava. Применяется для high-load, IO-intensive, real-time systems.

80. Объясните стратегии Database Sharding Ответ: Horizontal partitioning: range-based (по диапазону ключей), hash-based (по хешу), directory-based (lookup table), geographic. Проблемы: rebalancing, cross-shard queries, distributed transactions.

Security

81. Объясните OAuth 2.0 и OpenID Connect Ответ: OAuth 2.0 - протокол авторизации. Flows: Authorization Code, Implicit, Client Credentials, Resource Owner Password. OpenID Connect - слой аутентификации поверх OAuth 2.0, добавляет ID tokens с user claims.

82. Что такое JWT токены и их безопасное использование? Ответ: JSON Web Token - self-contained токен безопасности. Структура: header.payload.signature. Проблемы: невозможность revoke, storage в localStorage небезопасно, нужна правильная signature verification.

83. Объясните принципы Zero Trust Architecture Ответ: "Never trust, always verify". Принципы: verify every access request, least privilege access, micro-segmentation, continuous monitoring. В микросервисах: service-to-service authentication, network policies, mutual TLS.

Мониторинг и наблюдаемость

84. Объясните концепцию Observability и её компоненты Ответ: Способность понять internal state системы по external outputs. Три pillar: Metrics (числовые значения), Logs (discrete events), Traces (request flow). Together обеспечивают full visibility в distributed systems.

85. Что такое SLI, SLO и SLA? Ответ: SLI (Service Level Indicator) - метрики качества сервиса (latency, availability). SLO (Service Level Objective) - target values для SLI. SLA (Service Level Agreement) - contractual obligations с penalties за нарушение SLO.

86. Объясните стратегии Alerting и incident response Ответ: Layered alerting: symptoms (user impact) и causes (infrastructure). Alert fatigue prevention: proper thresholds, grouping, escalation policies. Incident response: detection, assessment, mitigation, post-mortem analysis.

Продвинутая складская логистика

87. Объясните архитектуру Real-Time Inventory Management Ответ: Event-driven архитектура с Kafka для real-time updates. CQRS для разделения command (operations) и query (reporting) models. Event sourcing для audit trail всех inventory changes. Eventual consistency с compensation strategies.

88. Что такое Predictive Analytics в WMS? Ответ: Machine Learning для прогнозирования: demand forecasting, optimal reorder points, predictive maintenance оборудования. Algorithms: time series analysis, regression models, neural networks. Требует quality data и proper feature engineering.

89. Объясните оптимизацию Resource Allocation в складских операциях Ответ: Dynamic allocation людей, оборудования и zones основанная на real-time demand. Optimization algorithms: linear programming, genetic algorithms, reinforcement learning. Constraints: capacity limits, skill requirements, SLA obligations.

90. Что такое Adaptive Slotting алгоритмы? Ответ: Machine learning approaches для