Перейти к основному содержимому

Экзамен для Middle-разработчика

Экзамен для Middle-разработчика

Перед вами крайне сложный экзамен с морем вопросов по самым ключевым основам.

Если успешно отвечаете на каждый из них - значит, вы просто идеальный кандидат.

Раздел 1. Базы данных и SQL (Middle Level)

  1. В чём заключается разница между транзакцией ACID и свойством изоляции?
  2. Как работает механизм блокировок в реляционных базах данных?
  3. Что такое джон-оператор UNION и чем он отличается от UNION ALL?
  4. Какие существуют типы индексов в PostgreSQL и MySQL?
  5. Как оптимизировать запрос, который выполняется слишком долго?
  6. Что такое нормализация базы данных и зачем она нужна?
  7. Чем отличается денормализация от нормализации?
  8. Как работают представления (Views) и когда их используют?
  9. Что такое хранимая процедура и какие у неё преимущества перед прикладным кодом?
  10. Как реализовать рекурсивный запрос в SQL?
  11. В чём разница между DELETE, TRUNCATE и DROP?
  12. Как обрабатывать NULL значения в агрегатных функциях?
  13. Что такое оконные функции и как использовать ROW_NUMBER()?
  14. Как работает механизм кэширования запросов в СУБД?
  15. Что такое мастер-деталь связь и как её реализовать через JOIN?
  16. Как избежать взаимоблокировки (Deadlock) при работе с несколькими таблицами?
  17. Что такое распределение данных по партициям (Partitioning)?
  18. Как настроить репликацию баз данных для повышения отказоустойчивости?
  19. В чём разница между кластеризованным и некластеризованным индексом?
  20. Как работает механизм MVCC (Multiversion Concurrency Control)?
  21. Что такое внешняя ссылка (Foreign Key) на уровне базы данных и на уровне приложения?
  22. Как выполнить обновление нескольких строк в одной транзакции без блокировки всей таблицы?
  23. Что такое избыточные данные и когда их допустимо хранить?
  24. Как работать с временными таблицами в процессе выполнения запроса?
  25. В чём разница между LEFT JOIN и INNER JOIN при наличии NULL значений?
  26. Как найти дубликаты записей в таблице?
  27. Что такое триггеры и какие риски они несут?
  28. Как реализовать поиск по тексту с учетом морфологии?
  29. Что такое анализатор запросов и как им пользоваться?
  30. Как настроить уровень изоляции транзакций READ COMMITTED или REPEATABLE READ?
  31. Что такое материализованное представление и зачем оно нужно?
  32. Как эффективно работать с большими объемами данных без загрузки в память?
  33. Что такое шифрование столбцов и когда его применяют?
  34. Как миграция схемы базы данных влияет на работающую систему?
  35. Что такое горизонтальное и вертикальное масштабирование базы данных?
  36. Как выбрать подходящую СУБД для конкретного типа задачи?
  37. В чём разница между NoSQL документной моделью и реляционной?
  38. Как обеспечить целостность данных при распределенных транзакциях?
  39. Что такое шардирование и как оно реализовано?
  40. Как настроить резервное копирование и восстановление базы данных?

Раздел 2. Система контроля версий Git (Middle Level)

  1. В чём разница между git merge и git rebase?
  2. Как разрешить конфликт слияния вручную и что делать после этого?
  3. Что такое git cherry-pick и когда его использование оправдано?
  4. Как отменить коммит, который уже отправлен на удалённый сервер?
  5. Что такое git stash и как управлять стеком сташей?
  6. Как переписать историю коммитов с помощью git rebase -i?
  7. Что такое .gitignore и как добавить в него системные файлы?
  8. Как создать тег и опубликовать его на удалённом репозитории?
  9. В чём разница между форком и веткой?
  10. Как настроить правила слияния (Merge Policy) в Pull Request?
  11. Что такое семантический версионинг (Semantic Versioning) и как он применяется?
  12. Как использовать git bisect для поиска причины бага?
  13. Что такое git reflog и как восстановить удалённую ветку?
  14. Как настроить предкоммитные и посткоммитные хуки?
  15. В чём разница между git fetch и git pull?
  16. Как объединить несколько коммитов в один (squash)?
  17. Что такое detached HEAD состояние и как из него выйти?
  18. Как настроить автоматическое форматирование кода при коммите?
  19. Что такое git blame и как интерпретировать его вывод?
  20. Как безопасно удалить чувствительные данные из истории репозитория?
  21. В чём разница между origin/master и upstream/master?
  22. Как настроить права доступа к репозиторию для команды?
  23. Что такое git submodule и как им управлять?
  24. Как реализовать стратегию ветвления Git Flow или GitHub Flow?
  25. Что такое git clean и как очистить рабочую директорию?
  26. Как посмотреть разницу между двумя конкретными коммитами?
  27. Что такое git worktree и как использовать несколько рабочих директорий?
  28. Как настроить алиасы для часто используемых команд?
  29. В чём разница между быстрым слиянием (Fast-forward) и обычным слиянием?
  30. Как проверить код на соответствие стандартам перед пушем?

Раздел 3. JavaScript (Middle Level)

  1. Что такое замыкание (Closure) и как оно работает в памяти?
  2. В чём разница между == и === в JavaScript?
  3. Как работает механизм прототипного наследования в JS?
  4. Что такое Event Loop и как он обрабатывает асинхронные операции?
  5. В чём разница между call, apply и bind?
  6. Как использовать Promise и чем он отличается от коллбеков?
  7. Что такое async/await и как обрабатывать ошибки в таком коде?
  8. Как работает сборка мусора (Garbage Collection) в JavaScript?
  9. Что такое this и как меняется его значение в разных контекстах?
  10. Как создать независимый клон объекта в JavaScript?
  11. Что такое массивы-кортежи (Tuples) и как их эмулировать?
  12. Как использовать Map и Set вместо объектов и массивов?
  13. Что такое генераторы (Generators) и как они используются?
  14. Как реализовать паттерн "Одиночка" (Singleton) в ES6+?
  15. Что такое модульная система ES Modules и как импортировать экспорт?
  16. Как оптимизировать работу с DOM для высокой производительности?
  17. Что такое debounce и throttle и где их применять?
  18. Как работать с WeakMap и WeakSet?
  19. Что такое Symbol и зачем он нужен?
  20. Как реализовать класс в современном JavaScript?
  21. В чём разница между const, let и var с точки зрения области видимости?
  22. Как обработать событие beforeunload для сохранения данных?
  23. Что такое localStorage и sessionStorage и в чём их ограничения?
  24. Как работать с Web Workers для тяжелых вычислений?
  25. Что такое Service Worker и как он используется для офлайн-режима?
  26. Как реализовать реактивность без фреймворков?
  27. Что такое Proxy и как он меняет поведение объектов?
  28. Как отладить асинхронный код в браузере?
  29. Что такое JSON.parse и какие уязвимости он может содержать?
  30. Как написать полифилл для метода, которого нет в старом браузере?

Раздел 4. Java (Middle Level)

  1. В чём разница между абстрактным классом и интерфейсом?
  2. Как работает механизм автоупаковки и распаковки (Auto-boxing) в Java?
  3. Что такое final переменная, метод и класс?
  4. Как работает сборка мусора (Garbage Collector) в JVM?
  5. В чём разница между String, StringBuilder и StringBuffer?
  6. Как реализовать паттерн "Фабрика" (Factory) в Java?
  7. Что такое исключенияchecked и unchecked и как их обрабатывать?
  8. Как работает механизм сериализации объектов в Java?
  9. В чём разница между Comparator и Comparable?
  10. Как использовать Stream API для обработки коллекций?
  11. Что такое лямбда-выражения и как они влияют на функциональность?
  12. Как реализовать многопоточность с помощью ExecutorService?
  13. В чём разница между volatile и synchronized?
  14. Как работает механизм wait() и notify()?
  15. Что такое Optional и как избегать NullPointerException?
  16. Как использовать аннотации для конфигурации Spring?
  17. В чём разница между HashMap и ConcurrentHashMap?
  18. Как реализовать паттерн "Наблюдатель" (Observer) в Java?
  19. Что такое Dependency Injection и как он работает в Spring?
  20. Как настроить профили (Profiles) в приложении?
  21. В чём разница между @Component, @Service, @Repository?
  22. Как работает транзакционность в Spring (@Transactional)?
  23. Что такое Bean Scope и какие виды существуют?
  24. Как избежать циклических зависимостей в Spring?
  25. Как использовать Record в Java 16+?
  26. В чём разница между List, Set и Queue?
  27. Как реализовать собственный Enum с методами?
  28. Что такое Reflection API и как его использовать?
  29. Как настроить логирование в приложении?
  30. В чём разница между ThreadLocal и обычной переменной?

Раздел 5. Python (Middle Level)

  1. В чём разница между списком (list) и кортежем (tuple)?
  2. Как работает декоратор и как написать свой?
  3. Что такое контекстный менеджер и как использовать with?
  4. В чём разница между deepcopy и copy?
  5. Как работает генератор выражений и чем он эффективнее списка?
  6. Что такое *args и **kwargs и как их использовать?
  7. Как реализовать метапрограммирование в Python?
  8. В чём разница между import module и from module import *?
  9. Как работает GIL (Global Interpreter Lock) и как обойти его?
  10. Что такое __slots__ и зачем он нужен?
  11. Как реализовать паттерн "Сingleton" в Python?
  12. В чём разница между yield и return?
  13. Как использовать functools.lru_cache для кэширования?
  14. Что такое property и как использовать геттеры и сеттеры?
  15. Как обрабатывать исключения корректно в больших проектах?
  16. В чём разница между asyncio и многопоточностью?
  17. Как написать тесты с использованием pytest?
  18. Что такое виртуальное окружение и как его создать?
  19. Как использовать dataclasses для упрощения классов?
  20. В чём разница между pickle и json для сериализации?
  21. Как реализовать паттерн "Стратегия" в Python?
  22. Что такое mixin классы и как их использовать?
  23. Как работать с файлами в бинарном режиме?
  24. В чём разница между __str__ и __repr__?
  25. Как использовать itertools для сложных итераций?
  26. Что такое typing модуль и как он помогает в статической проверке?
  27. Как реализовать зависимость от версии пакета в requirements.txt?
  28. В чём разница между pip и poetry?
  29. Как настроить линтинг и форматирование кода?
  30. Что такое contextlib и как расширить возможности with?

Раздел 6. C# и платформа .NET (Middle Level)

  1. В чём разница между struct и class в C#?
  2. Как работает сборка мусора (GC) в .NET?
  3. Что такое ref, out и in параметры?
  4. Как использовать async/await правильно без блокирования потока?
  5. В чём разница между IEnumerable, ICollection и IList?
  6. Как работает LINQ и какие методы он предоставляет?
  7. Что такое Nullable<T> и как использовать оператор ?.?
  8. Как реализовать паттерн "Репозиторий" в .NET?
  9. В чём разница между Task и Thread?
  10. Как использовать Dependency Injection в ASP.NET Core?
  11. Что такое Middleware и как создать свой?
  12. Как настроить фильтрацию и авторизацию в контроллерах?
  13. В чём разница между ValueTuple и обычным кортежем?
  14. Как использовать Expression Trees для динамических запросов?
  15. Что такое ImmutableArray и когда его применять?
  16. Как реализовать паттерн "Command" в WPF или WinForms?
  17. В чём разница между ToString(), Equals() и GetHashCode()?
  18. Как использовать Span<T> для работы с памятью?
  19. Что такое nullable reference types и как их включить?
  20. Как настроить логирование в .NET Core?
  21. В чём разница между AddScoped, AddTransient и AddSingleton?
  22. Как реализовать кастомный атрибут в C#?
  23. Что такое DynamicObject и как использовать динамические объекты?
  24. Как работать с потокобезопасными коллекциями?
  25. В чём разница между Interlocked и lock?
  26. Как использовать MemoryMappedFile для работы с большими файлами?
  27. Что такое Source Generators и как они работают?
  28. Как настроить конфигурацию приложения через appsettings.json?
  29. В чём разница между HttpClient и IHttpClientFactory?
  30. Как реализовать паттерн "Unit of Work"?

Раздел 7. Архитектура и проектирование (Общие вопросы Middle)

  1. Что такое SOLID принципы и как они применяются на практике?
  2. В чём разница между монолитной и микросервисной архитектурой?
  3. Как спроектировать API, чтобы оно было расширяемым?
  4. Что такое DDD (Domain Driven Проектирование) и какие его основные понятия?
  5. Как реализовать паттерн "Циклическая архитектура" (Clean Architecture)?
  6. В чём разница между REST и GraphQL?
  7. Как обеспечить безопасность данных при передаче по сети?
  8. Что такое CI/CD пайплайн и какие этапы он включает?
  9. Как проводить код-ревью эффективно и конструктивно?
  10. Что такое технический долг и как им управлять?
  11. Как спроектировать систему, устойчивую к нагрузкам?
  12. В чём разница между синхронной и асинхронной коммуникацией сервисов?
  13. Как реализовать паттерн "Шлюз" (API Gateway)?
  14. Что такое Event Sourcing и как он отличается от обычного хранения состояния?
  15. Как обеспечить идемпотентность операций в системе?
  16. В чём разница между горизонтальным и вертикальным масштабированием?
  17. Как спроектировать систему с учётом отказоустойчивости?
  18. Что такое CAP теорема и как она влияет на выбор архитектуры?
  19. Как реализовать кэширование на разных уровнях системы?
  20. В чём разница между ORM и raw SQL запросами?

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).