Вопросы собеседований

Вопросы собеседований

В этой заметке будут собираться различные вопросы, которые задают на собеседованиях, а также ответы на них в виде отдельных статей. Это, своего рода, шпаргалка для подготовки. Пост будет дополняться и обновляться.

Общие вопросы по программированию

Основы программирования

  1. Что такое переменная и как она используется в программировании?
  2. Как работает оператор условия (if-else) и где он применяется?
  3. Что такое циклы (for, while) и как они работают?
  4. Как реализовать функцию/метод в программировании?
  5. Что такое рекурсия и когда ее следует использовать?

Объектно-ориентированное программирование (ООП)

  1. Что такое класс и объект в ООП?
  2. Как работает наследование в ООП и зачем оно нужно?
  3. Что такое полиморфизм и как его реализовать?
  4. Как работает инкапсуляция и зачем она нужна?
  5. Что такое абстракция и как она используется в ООП?

Принципы SOLID

  1. Что такое Single Responsibility Principle (SRP) и как его применять?
  2. Как работает Open/Closed Principle (OCP) и что он обеспечивает?
  3. Что такое Liskov Substitution Principle (LSP) и почему он важен?
  4. Как работает Interface Segregation Principle (ISP) и где он применяется?
  5. Что такое Dependency Inversion Principle (DIP) и как его реализовать?

Другие принципы программирования

  1. Что такое KISS (Keep It Simple, Stupid) и как он помогает писать чистый код?
  2. Как работает принцип DRY (Don’t Repeat Yourself) и почему он важен?
  3. Что такое YAGNI (You Aren’t Gonna Need It) и как его применять?
  4. Как работает принцип DDD (Domain-Driven Design) и где он используется?
  5. Что такое TDD (Test-Driven Development) и как его внедрить в проект?

Управление зависимостями и модульность

  1. Что такое Dependency Injection и как его можно реализовать?
  2. Как работает IoC (Inversion of Control) контейнер и для чего он нужен?
  3. Что такое модульность и как она улучшает структуру приложения?
  4. Как использовать пакеты и модули для организации кода?

Исключения и обработка ошибок

  1. Что такое исключение (exception) и как его обрабатывать?
  2. Как работает try-catch блок и когда его использовать?
  3. Что такое checked и unchecked исключения и в чем их разница?
  4. Как правильно организовать логирование ошибок в приложении?

Производительность и оптимизация

  1. Какие методы существуют для оптимизации производительности кода?
  2. Что такое профилирование (profiling) и как его использовать для анализа производительности?

Java core

Основы Java

  1. Что такое Java и как она работает?
  2. Как устроена JVM (Java Virtual Machine)?
  3. Что такое байт-код и как он исполняется?
  4. Какие основные типы данных существуют в Java?
  5. В чем разница между примитивными типами и объектами?
  6. Что такое автобоксинг и анбоксинг в Java?
  7. Как работают массивы в Java?
  8. Что такое классы и объекты в Java?
  9. Как наследование реализуется в Java?
  10. Что такое интерфейсы и как они используются?
  11. Чем отличается abstract class от interface? (https://t.me/java_developer/920)

Коллекции

  1. Какие основные интерфейсы коллекций существуют в Java?
  2. В чем разница между ArrayList и LinkedList?
  3. Как работает HashMap и какие его особенности?
  4. Что такое HashSet и как он отличается от TreeSet?
  5. Как работает метод equals() и hashCode() в коллекциях?
  6. Как использовать Queue и Deque в Java?
  7. Что такое Concurrent Collections и зачем они нужны?
  8. Как работает ConcurrentHashMap?
  9. Какие методы предоставляет Collection Framework для работы с данными?
  10. Как настроить и оптимизировать производительность коллекций?

Generics

  1. Что такое Generics и зачем они нужны?
  2. Как объявлять и использовать generic классы и методы?
  3. Что такое wildcard в Generics и как их использовать?
  4. В чем разница между bounded и unbounded wildcards?
  5. Как работает type erasure в Java Generics?

Stream API

  1. Что такое Stream API и зачем оно используется?
  2. Как создавать потоки данных с помощью Stream API?
  3. Какие основные операции поддерживает Stream API (map, filter, reduce)?
  4. Что такое терминальные и промежуточные операции в Stream API?
  5. Как использовать параллельные потоки (parallel streams) в Java?
  6. Что такое Collector и как его использовать в Stream API?
  7. Как обрабатывать исключения в Stream API?
  8. Как оптимизировать производительность при использовании Stream API?

Java Memory Model

  1. Что такое Java Memory Model (JMM) и зачем она нужна?
  2. Как работает модель памяти в многопоточных приложениях?
  3. Что такое видимость переменных в многопоточных приложениях?
  4. Как работает volatile в Java и для чего он используется?
  5. Что такое happens-before relationship в JMM?

Многопоточность и синхронизация

  1. Что такое потоки (threads) и как их создавать в Java?
  2. Как работает метод join() для потоков?
  3. Что такое synchronized и как его использовать?
  4. Как работает блокировка мониторов в Java?
  5. Что такое Deadlock и как его избежать?
  6. Как работает wait(), notify() и notifyAll() в Java?
  7. Что такое ExecutorService и как его использовать?
  8. Как создавать и управлять пулов потоков (thread pools)?
  9. Что такое Callable и Future и как их использовать?
  10. Как работает CompletableFuture в Java?
  11. Что такое ForkJoinPool и как его использовать?
  12. Как использовать атомарные переменные (AtomicInteger, AtomicReference)?

Ключевые нововведения в различных версиях JDK

  1. Какие ключевые изменения были введены в JDK 8 (например, Lambda Expressions, Stream API)?
  2. Что нового было добавлено в JDK 9 (например, модульная система Project Jigsaw)?
  3. Какие новые возможности появились в JDK 10 (например, var для локальных переменных)?
  4. Что нового появилось в JDK 11 (например, удаление Applet API, добавление HttpClient)?
  5. Какие изменения были введены в JDK 12 (например, switch expressions)?
  6. Что нового появилось в JDK 13 (например, текстовые блоки)?
  7. Какие ключевые изменения были введены в JDK 14 (например, записи, sealed классы)?
  8. Что нового появилось в JDK 15 (например, запечатанные классы)?
  9. Какие изменения были введены в JDK 16 (например, запись Pattern Matching for instanceof)?
  10. Что нового появилось в JDK 17 (например, долгосрочная поддержка LTS)?

Дополнительные вопросы по многопоточности и синхронизации

  1. Что такое виртуальные потоки (virtual threads) и как они работают в Project Loom?
  2. Как использовать Lock и Condition в Java?
  3. Что такое ReadWriteLock и как его использовать?
  4. Как работает Phaser в Java?
  5. Что такое CountDownLatch и CyclicBarrier и как их использовать?
  6. Как использовать Semaphore для управления доступом к ресурсам?
  7. Что такое Exchanger и как его использовать?
  8. Как работает ForkJoinPool в Java?
  9. Как использовать ParallelStream для параллельной обработки данных?
  10. Как работает пул потоков Executors.newFixedThreadPool()?

Продвинутые концепции Java

  1. Что такое рефлексия и как ее использовать в Java?
  2. Как работает сериализация и десериализация в Java?
  3. Что такое аннотации и как их использовать?
  4. Как использовать лямбда-выражения и функциональные интерфейсы в Java?
  5. Что такое функциональное программирование в контексте Java?
  6. Как использовать Optional для работы с nullable значениями?
  7. Что такое Records и как их использовать в Java?
  8. Как работает механизм загрузки классов в Java?
  9. Как работает garbage collector в Java и какие стратегии сборки мусора существуют?
  10. Приведите примеры сборщиков мусора

Продвинутые вопросы по коллекциям и многопоточности

  1. Как использовать CopyOnWriteArrayList в многопоточных приложениях?
  2. Что такое BlockingQueue и как его использовать?
  3. Как работает DelayQueue в Java?
  4. Что такое PriorityBlockingQueue и как его использовать?
  5. Как использовать SynchronousQueue для координации потоков?
  6. Что такое LinkedTransferQueue и как его использовать?
  7. Как работает метод parallelSort() в Java?
  8. Как использовать Spliterator для разделения потока данных?
  9. Что такое CompletionService и как его использовать?
  10. Как работает метод computeIfAbsent() в Map интерфейсе?

Паттерны проектирования

Общие вопросы о паттернах проектирования

  1. Что такое паттерны проектирования и зачем они нужны?
  2. Какие основные категории паттернов проектирования существуют (структурные, поведенческие, порождающие)?
  3. В чем разница между классическими паттернами проектирования и современными подходами?

Порождающие паттерны

  1. Что такое Singleton и как его правильно реализовать в Java?
  2. Как работает паттерн Factory Method и где он применяется?
  3. Что такое Abstract Factory и как он отличается от Factory Method?
  4. Как работает паттерн Builder и для чего он используется?
  5. Что такое Prototype и как его реализовать в Java?

Структурные паттерны

  1. Что такое Adapter и как он решает проблемы несовместимости интерфейсов?
  2. Как работает паттерн Bridge и зачем он нужен?
  3. Что такое Composite и как он упрощает работу с древовидными структурами данных?
  4. Как работает паттерн Decorator и как его применять на практике?
  5. Что такое Facade и как он упрощает взаимодействие с сложными системами?
  6. Как работает паттерн Proxy и какие его виды существуют (виртуальный, защитный, удаленный)?

Поведенческие паттерны

  1. Что такое Strategy и как его использовать для выбора алгоритма на этапе выполнения программы?
  2. Как работает паттерн Observer и где он наиболее часто используется?
  3. Что такое Command и как он позволяет инкапсулировать запросы как объекты?
  4. Как работает паттерн State и как он изменяет поведение объекта в зависимости от его состояния?
  5. Что такое Chain of Responsibility и как он передает запросы по цепочке обработчиков?
  6. Как работает паттерн Iterator и как его реализовать в Java?
  7. Что такое Mediator и как он уменьшает связность между объектами?
  8. Как работает паттерн Memento и как он сохраняет состояние объекта?
  9. Что такое Visitor и как он позволяет добавлять новые операции к объектам без изменения их классов?

Современные и расширенные паттерны

  1. Что такое Dependency Injection и как его можно реализовать в Java?
  2. Как работает паттерн Service Locator и когда его следует использовать?
  3. Что такое Repository и как он абстрагирует доступ к данным?
  4. Как работает паттерн Specification и как он позволяет динамически строить запросы?

Практические задачи и примеры использования

  1. Как реализовать паттерн Singleton в многопоточной среде с использованием volatile и synchronized?
  2. Как реализовать паттерн Factory Method для создания различных типов продуктов в зависимости от входных данных?
  3. Как реализовать паттерн Observer для уведомления подписчиков о событиях в системе?

Spring

Основы Spring Framework

  1. Что такое Spring Framework и каковы его основные принципы?
  2. Как работает Dependency Injection (DI) в Spring?
  3. Что такое Inversion of Control (IoC), и как это связано с DI?
  4. Какие способы внедрения зависимостей существуют в Spring?
  5. Что такое ApplicationContext и чем он отличается от BeanFactory?
  6. Какие виды контекстов приложения существуют в Spring?
  7. Что такое Bean и как он управляется в Spring?
  8. Как Spring решает проблему циклических зависимостей между бинами?
  9. Что такое Scope бина в Spring и какие типы Scope существуют?
  10. Как настроить Spring-приложение с использованием XML-конфигурации?

Spring Configuration

  1. Как настроить Spring-приложение с использованием аннотаций?
  2. Что такое @Configuration и @Bean аннотации?
  3. Как использовать @ComponentScan для автоматического сканирования компонентов?
  4. Как настроить конфигурацию Spring через Java Config?
  5. Какие преимущества имеет Java-based конфигурация перед XML-конфигурацией?
  6. Что такое PropertyPlaceholderConfigurer и как его использовать?
  7. Как использовать профили (Profiles) в Spring для управления конфигурацией?

Spring AOP (Aspect-Oriented Programming)

  1. Что такое AOP и как оно используется в Spring?
  2. Какие виды советов (advice) существуют в Spring AOP?
  3. Как создать аспект в Spring с использованием аннотаций?
  4. Что такое Join Point и Pointcut в AOP?
  5. Как работает Around advice в Spring AOP?
  6. Какие ограничения у Spring AOP по сравнению с AspectJ?

Spring MVC

  1. Что такое Spring MVC и как он работает?
  2. Как настроить контроллер в Spring MVC?
  3. Что такое @RequestMapping и как его использовать?
  4. Как обрабатывать параметры запроса и пути в контроллере?
  5. Что такое ModelAndView и как его использовать?
  6. Как работают ViewResolver и View в Spring MVC?
  7. Как реализовать RESTful сервисы в Spring MVC?
  8. Что такое @RestController и чем он отличается от @Controller?

Spring Data

  1. Что такое Spring Data JPA и как он упрощает работу с базами данных?
  2. Как создать репозиторий с использованием Spring Data JPA?
  3. Что такое JpaRepository и как его использовать?
  4. Как работает пагинация и сортировка в Spring Data JPA?
  5. Что такое Query Methods и как их использовать в Spring Data JPA?
  6. Как настроить транзакции в Spring Data JPA?

Spring Boot

  1. Что такое Spring Boot и каковы его основные преимущества?
  2. Как создать простое приложение на Spring Boot?
  3. Что такое Spring Boot Starter и как он упрощает конфигурацию?
  4. Как настроить внешние свойства в Spring Boot?
  5. Что такое Actuator и как его использовать для мониторинга приложения?
  6. Как настроить логирование в Spring Boot?

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

  1. Как тестировать бины в Spring?
  2. Что такое @MockBean и как его использовать в тестировании?
  3. Как настроить интеграционные тесты в Spring?
  4. Что такое TestContext и как он работает?

Прочее

  1. Как настроить безопасность в Spring Security?
  2. Что такое Spring Cloud и как он помогает в разработке микросервисов?
  3. Как организовать управление версиями зависимостей в проекте на Spring?

Базы данных

Основы баз данных

  1. Что такое база данных и как она используется в приложениях?
  2. В чем разница между реляционными и нереляционными базами данных?
  3. Какие основные типы моделей данных существуют (реляционная, документная, графовая, ключ-значение)?
  4. Что такое схема базы данных и зачем она нужна?

Реляционные СУБД

  1. Что такое реляционная база данных и какие основные компоненты она включает?
  2. Как работает язык SQL и какие его основные команды?
  3. Что такое индексы в реляционных базах данных и зачем они нужны?
  4. Как создать таблицу в PostgreSQL/MySQL/Oracle?
  5. Что такое первичный ключ и как его использовать?
  6. Что такое внешний ключ и как он обеспечивает целостность данных?

Транзакции и ACID

  1. Что такое транзакция и для чего она используется?
  2. Что такое ACID свойства и как они обеспечиваются в базе данных?
  3. Как реализовать транзакцию в SQL (BEGIN, COMMIT, ROLLBACK)?
  4. Что такое уровни изоляции транзакций и какие они бывают?
  5. Какой уровень изоляции транзакций поддерживается по умолчанию в PostgreSQL/MySQL/Oracle?
  6. Что такое фантомное чтение и как его предотвратить?

План выполнения и оптимизация запросов

  1. Что такое план выполнения запроса и как его просмотреть в PostgreSQL/MySQL/Oracle?
  2. Какие инструменты можно использовать для анализа производительности запросов?
  3. Что такое объяснение запроса (EXPLAIN) и как его использовать?
  4. Как оптимизировать запросы на выборку данных?
  5. Что такое денормализация и когда ее следует применять?
  6. Как использовать индексы для улучшения производительности запросов?

Популярные реляционные СУБД

  1. Какие особенности имеет PostgreSQL и чем она отличается от других СУБД?
  2. Какие преимущества предоставляет MySQL и где она наиболее часто используется?
  3. Что такое Oracle Database и какие уникальные функции она предлагает?
  4. Как настроить репликацию в PostgreSQL/MySQL/Oracle?
  5. Как настроить автоматическое резервное копирование в PostgreSQL/MySQL/Oracle?

Нереляционные (NoSQL) базы данных

  1. Что такое NoSQL база данных и какие основные типы NoSQL баз данных существуют?
  2. Что такое MongoDB и как она работает?
  3. Какие особенности имеет Cassandra и где она применяется?
  4. Что такое Redis и для каких задач она предназначена?
  5. Какие преимущества предоставляют графовые базы данных (например, Neo4j)?

Распределенные базы данных

  1. Что такое распределенная база данных и для чего она используется?
  2. Как работает шардинг (sharding) в распределенных базах данных?
  3. Что такое репликация и как она влияет на отказоустойчивость базы данных?
  4. Как настроить конфигурацию мастера-реплики в PostgreSQL/MySQL?

Безопасность и управление доступом

  1. Как настроить аутентификацию и авторизацию в PostgreSQL/MySQL/Oracle?
  2. Что такое роли и привилегии в базе данных и как их использовать?
  3. Как защитить данные в базе данных от несанкционированного доступа?

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

  1. Какие стратегии можно использовать для повышения производительности базы данных?
  2. Как настроить кэширование для улучшения производительности запросов?
  3. Как настроить горизонтальное и вертикальное масштабирование базы данных?

Миграция данных

  1. Что такое миграция данных и миграция схемы?
  2. Какие способы миграции схем вы знаете и использовали?

Современные технологии и тренды

  1. Что такое NewSQL и как она сочетает в себе преимущества реляционных и NoSQL баз данных?
  2. Какие новые возможности появились в последних версиях PostgreSQL/MySQL/Oracle?

Примеры использования и практика

  1. Какие проблемы могут возникнуть при миграции с одной СУБД на другую?
  2. Как выбрать подходящую базу данных для конкретного проекта?
  3. Какие лучшие практики существуют для проектирования базы данных?
  4. Как тестировать и отлаживать сложные SQL-запросы?

Hibernate Framework

Основы Hibernate

  1. Что такое Hibernate и зачем он используется?
  2. Как работает ORM (Object-Relational Mapping) и какую роль играет Hibernate в этом процессе?
  3. Как настроить и конфигурировать Hibernate для работы с базой данных?
  4. Что такое SessionFactory и как его создать и использовать?
  5. Что такое Session и какие основные методы он предоставляет?

Моделирование данных

  1. Как аннотировать классы и поля для их маппинга на таблицы базы данных?
  2. Что такое аннотации @Entity, @Table, @Id и @Column?
  3. Как работают аннотации @OneToOne, @OneToMany, @ManyToOne и @ManyToMany для моделирования связей между таблицами?
  4. Что такое CascadeType и как его использовать?
  5. Как реализовать наследование в Hibernate (SINGLE_TABLE, JOINED, TABLE_PER_CLASS)?

Работа с сессиями и транзакциями

  1. Как правильно управлять сессиями в Hibernate (открытие, закрытие, управление транзакциями)?
  2. Как работает метод persist() и чем он отличается от save()?
  3. Что такое merge() и когда его следует использовать?
  4. Как работает метод delete() и как удалить объект из базы данных?
  5. Как управлять транзакциями в Hibernate (begin, commit, rollback)?

Запросы и критерии

  1. Какие способы выполнения запросов существуют в Hibernate (HQL, Criteria API, Native SQL)?
  2. Что такое HQL (Hibernate Query Language) и как его использовать?
  3. Как работает Criteria API и как его применять для динамических запросов?
  4. Что такое Named Queries и как их объявлять и использовать?
  5. Как выполнять нативные SQL-запросы в Hibernate?

Кэширование и оптимизация

  1. Как работает первичный (Level 1) и вторичный (Level 2) кэш в Hibernate?
  2. Как настроить и использовать вторичный кэш в Hibernate?
  3. Что такое фильтры (filters) и как их использовать для оптимизации запросов?
  4. Как использовать ленивую загрузку (lazy loading) и жадную загрузку (eager loading) для повышения производительности?
  5. В чем заключается проблема N+1 запросов? Как минимизировать N+1 проблему при работе с ассоциациями? (аннотация EntityGraph или join fetch)

Управление состоянием и жизненным циклом объектов

  1. Какие состояния объектов существуют в Hibernate (transient, persistent, detached)?
  2. Как происходит переход объектов между различными состояниями?
  3. Что такое dirty checking и как Hibernate отслеживает изменения объектов?
  4. Как обрабатывать версионирование объектов (Optimistic Locking) в Hibernate?

Конфигурация и расширение

  1. Как настроить Hibernate для использования различных диалектов SQL и баз данных?
  2. Как использовать аннотацию @Formula для вычисляемых полей?
  3. Что такое интерцепторы (Interceptor) и как их использовать для расширения функциональности Hibernate?
  4. Как настроить автоматическое создание/обновление схемы базы данных с помощью Hibernate?
  5. Как интегрировать Hibernate с Spring Framework?

Очереди

Основы очередей и брокеров сообщений

  1. Что такое очередь сообщений и зачем она используется?
  2. Как работает брокер сообщений? Приведите примеры популярных брокеров.
  3. В чем разница между синхронной и асинхронной передачей сообщений?
  4. Какие основные типы обмена сообщениями существуют (например, публикация/подписка, точка-точка)?
  5. Что такое топики (topics) и как они используются в системах сообщений?

Apache Kafka

  1. Что такое Apache Kafka и какие у него основные компоненты?
  2. Как работает модель производитель/потребитель (producer/consumer) в Kafka?
  3. Что такое партиции (partitions) в Kafka и для чего они нужны?
  4. Как работает репликация в Kafka и зачем она нужна?
  5. Какие настройки могут повлиять на производительность Kafka?

RabbitMQ

  1. Что такое RabbitMQ и как он отличается от других брокеров сообщений?
  2. Как работает модель обмена сообщениями в RabbitMQ (exchange, queue, binding)?
  3. Что такое Dead Letter Exchange (DLX) и как его использовать в RabbitMQ?
  4. Как настроить приоритеты сообщений в RabbitMQ?
  5. Как RabbitMQ обеспечивает отказоустойчивость и масштабируемость?

Гарантии доставки

  1. Какие уровни гарантий доставки сообщений существуют в системах сообщений?
  2. Что такое At-Most-Once Delivery и как его реализовать?
  3. Что такое At-Least-Once Delivery и как его реализовать?
  4. Что такое Exactly-Once Delivery и как его реализовать?
  5. Какие проблемы могут возникнуть при использовании различных уровней гарантий доставки?

Конфигурация и оптимизация

  1. Как настроить время хранения сообщений в Kafka и RabbitMQ?
  2. Как настроить максимальный размер сообщения в Kafka и RabbitMQ?
  3. Как настроить автоматическое перезапуск потребителей в случае сбоя?
  4. Как настроить мониторинг и логирование в Kafka и RabbitMQ?
  5. Как настроить горизонтальное масштабирование в Kafka и RabbitMQ?

Производительность и отказоустойчивость

  1. Какие факторы влияют на производительность брокера сообщений?
  2. Как настроить отказоустойчивость и восстановление после сбоев в Kafka и RabbitMQ?
  3. Какие стратегии можно использовать для балансировки нагрузки в системе сообщений?
  4. Как предотвратить потерю сообщений в случае сбоя сети или оборудования?

Сравнение и выбор технологии

  1. Какие критерии следует учитывать при выборе между Kafka и RabbitMQ для конкретного проекта?

Алгоритмы

Основы алгоритмов

  1. Что такое алгоритм? Какие характеристики определяют хороший алгоритм?
  2. Что такое временная сложность алгоритма? Как она обозначается?
  3. Что такое пространственная сложность алгоритма? Почему это важно?
  4. Объясните разницу между O(1), O(n), O(log n) и O(n²).
  5. Что такое рекурсия? Когда ее лучше использовать?
  6. Какой самый простой способ определить, является ли число простым?
  7. Что такое биг-о (Big-O) нотация? Приведите пример.
  8. Что такое структура данных? Как она связана с алгоритмами?
  9. Какая разница между алгоритмом и протоколом?
  10. Что такое инвариант цикла? Почему он важен?

Поиск и сортировка

  1. Как работает линейный поиск? Какова его временная сложность?
  2. Что такое бинарный поиск? В каких случаях его можно применять?
  3. Как работает алгоритм сортировки пузырьком? Какова его сложность?
  4. Объясните принцип работы быстрой сортировки (QuickSort). Какова ее средняя и худшая временная сложность?
  5. Что такое слиянием сортировка (MergeSort)? Какова ее временная сложность?
  6. Как работает сортировка подсчетом (Counting Sort)? В каких случаях она эффективна?
  7. Что такое сортировка кучей (HeapSort)? Как она связана с бинарной кучей?
  8. Какую сортировку лучше использовать для больших массивов? Почему?
  9. Что такое Timsort? Где он используется?
  10. Как найти k-й минимальный элемент в неотсортированном массиве?

Рекурсия и динамическое программирование

  1. Что такое динамическое программирование? Приведите пример задачи, где оно применяется.
  2. Как решить задачу «чисел Фибоначчи» с помощью рекурсии? Как улучшить производительность?
  3. Объясните принцип мемоизации. Как она помогает при решении задач рекурсивным методом?
  4. Как решить задачу «найти наибольшую общую подпоследовательность» (LCS)?
  5. Как решить задачу «минимального пути в матрице» с использованием динамического программирования?
  6. Что такое рюкзаковая проблема (Knapsack Problem)? Как ее решить?
  7. Как найти количество способов достичь верхней правой клетки в сетке размером n×m?
  8. Как решить задачу «размена монет» с помощью динамического программирования?
  9. Что такое принцип «разделяй и властвуй»? Приведите пример.
  10. Как решить задачу «поиска медианы» с использованием рекурсии?

Графовые алгоритмы

  1. Что такое граф? Какие типы графов существуют?
  2. Как работает обход графа в ширину (BFS)? Для чего он используется?
  3. Как работает обход графа в глубину (DFS)? Для чего он используется?
  4. Как найти кратчайший путь между двумя вершинами в невзвешенном графе?
  5. Как работает алгоритм Дейкстры для поиска кратчайшего пути в взвешенном графе?
  6. Что такое алгоритм Беллмана-Форда? В чем его преимущество перед Дейкстрой?
  7. Как работает алгоритм Флойда-Уоршелла для поиска всех пар кратчайших путей?
  8. Что такое минимальное остовное дерево (MST)? Как его найти с помощью алгоритма Краскала?
  9. Как работает алгоритм Прима для поиска минимального остовного дерева?
  10. Что такое топологическая сортировка? Где она применяется?

Строковые алгоритмы

  1. Как работает алгоритм поиска подстроки в строке (например, KMP)?
  2. Что такое суффиксный автомат? Где он применяется?
  3. Как найти все анаграммы строки в другом тексте?
  4. Как реализовать алгоритм Рабина-Карпа для поиска подстроки?
  5. Что такое префиксная функция? Как она используется в алгоритме КМП?

Деревья и множества

  1. Что такое бинарное дерево поиска (BST)? Какие операции оно поддерживает?
  2. Как сбалансировать бинарное дерево? Что такое AVL-дерево?
  3. Что такое красно-черное дерево? Как оно отличается от AVL-дерева?
  4. Как работает тройчатое дерево (Trie)? Где оно применяется?
  5. Что такое множество (Set) и как его эффективно реализовать?

Back To Top