Экзамен для Middle-разработчика
Экзамен для Middle-разработчика
Перед вами крайне сложный экзамен с морем вопросов по самым ключевым основам.
Если успешно отвечаете на каждый из них - значит, вы просто идеальный кандидат.
Раздел 1. Базы данных и SQL (Middle Level)
- В чём заключается разница между транзакцией ACID и свойством изоляции?
- Как работает механизм блокировок в реляционных базах данных?
- Что такое джон-оператор
UNIONи чем он отличается отUNION ALL? - Какие существуют типы индексов в PostgreSQL и MySQL?
- Как оптимизировать запрос, который выполняется слишком долго?
- Что такое нормализация базы данных и зачем она нужна?
- Чем отличается денормализация от нормализации?
- Как работают представления (Views) и когда их используют?
- Что такое хранимая процедура и какие у неё преимущества перед прикладным кодом?
- Как реализовать рекурсивный запрос в SQL?
- В чём разница между
DELETE,TRUNCATEиDROP? - Как обрабатывать NULL значения в агрегатных функциях?
- Что такое оконные функции и как использовать
ROW_NUMBER()? - Как работает механизм кэширования запросов в СУБД?
- Что такое мастер-деталь связь и как её реализовать через JOIN?
- Как избежать взаимоблокировки (Deadlock) при работе с несколькими таблицами?
- Что такое распределение данных по партициям (Partitioning)?
- Как настроить репликацию баз данных для повышения отказоустойчивости?
- В чём разница между кластеризованным и некластеризованным индексом?
- Как работает механизм MVCC (Multiversion Concurrency Control)?
- Что такое внешняя ссылка (Foreign Key) на уровне базы данных и на уровне приложения?
- Как выполнить обновление нескольких строк в одной транзакции без блокировки всей таблицы?
- Что такое избыточные данные и когда их допустимо хранить?
- Как работать с временными таблицами в процессе выполнения запроса?
- В чём разница между
LEFT JOINиINNER JOINпри наличии NULL значений? - Как найти дубликаты записей в таблице?
- Что такое триггеры и какие риски они несут?
- Как реализовать поиск по тексту с учетом морфологии?
- Что такое анализатор запросов и как им пользоваться?
- Как настроить уровень изоляции транзакций
READ COMMITTEDилиREPEATABLE READ? - Что такое материализованное представление и зачем оно нужно?
- Как эффективно работать с большими объемами данных без загрузки в память?
- Что такое шифрование столбцов и когда его применяют?
- Как миграция схемы базы данных влияет на работающую систему?
- Что такое горизонтальное и вертикальное масштабирование базы данных?
- Как выбрать подходящую СУБД для конкретного типа задачи?
- В чём разница между NoSQL документной моделью и реляционной?
- Как обеспечить целостность данных при распределенных транзакциях?
- Что такое шардирование и как оно реализовано?
- Как настроить резервное копирование и восстановление базы данных?
Раздел 2. Система контроля версий Git (Middle Level)
- В чём разница между
git mergeиgit rebase? - Как разрешить конфликт слияния вручную и что делать после этого?
- Что такое
git cherry-pickи когда его использование оправдано? - Как отменить коммит, который уже отправлен на удалённый сервер?
- Что такое
git stashи как управлять стеком сташей? - Как переписать историю коммитов с помощью
git rebase -i? - Что такое
.gitignoreи как добавить в него системные файлы? - Как создать тег и опубликовать его на удалённом репозитории?
- В чём разница между форком и веткой?
- Как настроить правила слияния (Merge Policy) в Pull Request?
- Что такое семантический версионинг (Semantic Versioning) и как он применяется?
- Как использовать
git bisectдля поиска причины бага? - Что такое
git reflogи как восстановить удалённую ветку? - Как настроить предкоммитные и посткоммитные хуки?
- В чём разница между
git fetchиgit pull? - Как объединить несколько коммитов в один (
squash)? - Что такое
detached HEADсостояние и как из него выйти? - Как настроить автоматическое форматирование кода при коммите?
- Что такое
git blameи как интерпретировать его вывод? - Как безопасно удалить чувствительные данные из истории репозитория?
- В чём разница между
origin/masterиupstream/master? - Как настроить права доступа к репозиторию для команды?
- Что такое
git submoduleи как им управлять? - Как реализовать стратегию ветвления Git Flow или GitHub Flow?
- Что такое
git cleanи как очистить рабочую директорию? - Как посмотреть разницу между двумя конкретными коммитами?
- Что такое
git worktreeи как использовать несколько рабочих директорий? - Как настроить алиасы для часто используемых команд?
- В чём разница между быстрым слиянием (Fast-forward) и обычным слиянием?
- Как проверить код на соответствие стандартам перед пушем?
Раздел 3. JavaScript (Middle Level)
- Что такое замыкание (Closure) и как оно работает в памяти?
- В чём разница между
==и===в JavaScript? - Как работает механизм прототипного наследования в JS?
- Что такое Event Loop и как он обрабатывает асинхронные операции?
- В чём разница между
call,applyиbind? - Как использовать
Promiseи чем он отличается от коллбеков? - Что такое
async/awaitи как обрабатывать ошибки в таком коде? - Как работает сборка мусора (Garbage Collection) в JavaScript?
- Что такое
thisи как меняется его значение в разных контекстах? - Как создать независимый клон объекта в JavaScript?
- Что такое массивы-кортежи (Tuples) и как их эмулировать?
- Как использовать
MapиSetвместо объектов и массивов? - Что такое генераторы (Generators) и как они используются?
- Как реализовать паттерн "Одиночка" (Singleton) в ES6+?
- Что такое модульная система ES Modules и как импортировать экспорт?
- Как оптимизировать работу с DOM для высокой производительности?
- Что такое
debounceиthrottleи где их применять? - Как работать с
WeakMapиWeakSet? - Что такое
Symbolи зачем он нужен? - Как реализовать класс в современном JavaScript?
- В чём разница между
const,letиvarс точки зрения области видимости? - Как обработать событие
beforeunloadдля сохранения данных? - Что такое
localStorageиsessionStorageи в чём их ограничения? - Как работать с Web Workers для тяжелых вычислений?
- Что такое Service Worker и как он используется для офлайн-режима?
- Как реализовать реактивность без фреймворков?
- Что такое
Proxyи как он меняет поведение объектов? - Как отладить асинхронный код в браузере?
- Что такое
JSON.parseи какие уязвимости он может содержать? - Как написать полифилл для метода, которого нет в старом браузере?
Раздел 4. Java (Middle Level)
- В чём разница между абстрактным классом и интерфейсом?
- Как работает механизм автоупаковки и распаковки (Auto-boxing) в Java?
- Что такое
finalпеременная, метод и класс? - Как работает сборка мусора (Garbage Collector) в JVM?
- В чём разница между
String,StringBuilderиStringBuffer? - Как реализовать паттерн "Фабрика" (Factory) в Java?
- Что такое исключенияchecked и unchecked и как их обрабатывать?
- Как работает механизм сериализации объектов в Java?
- В чём разница между
ComparatorиComparable? - Как использовать Stream API для обработки коллекций?
- Что такое лямбда-выражения и как они влияют на функциональность?
- Как реализовать многопоточность с помощью
ExecutorService? - В чём разница между
volatileиsynchronized? - Как работает механизм
wait()иnotify()? - Что такое
Optionalи как избегатьNullPointerException? - Как использовать аннотации для конфигурации Spring?
- В чём разница между
HashMapиConcurrentHashMap? - Как реализовать паттерн "Наблюдатель" (Observer) в Java?
- Что такое Dependency Injection и как он работает в Spring?
- Как настроить профили (Profiles) в приложении?
- В чём разница между
@Component,@Service,@Repository? - Как работает транзакционность в Spring (
@Transactional)? - Что такое Bean Scope и какие виды существуют?
- Как избежать циклических зависимостей в Spring?
- Как использовать
Recordв Java 16+? - В чём разница между
List,SetиQueue? - Как реализовать собственный Enum с методами?
- Что такое Reflection API и как его использовать?
- Как настроить логирование в приложении?
- В чём разница между
ThreadLocalи обычной переменной?
Раздел 5. Python (Middle Level)
- В чём разница между списком (list) и кортежем (tuple)?
- Как работает декоратор и как написать свой?
- Что такое контекстный менеджер и как использовать
with? - В чём разница между
deepcopyиcopy? - Как работает генератор выражений и чем он эффективнее списка?
- Что такое
*argsи**kwargsи как их использовать? - Как реализовать метапрограммирование в Python?
- В чём разница между
import moduleиfrom module import *? - Как работает GIL (Global Interpreter Lock) и как обойти его?
- Что такое
__slots__и зачем он нужен? - Как реализовать паттерн "Сingleton" в Python?
- В чём разница между
yieldиreturn? - Как использовать
functools.lru_cacheдля кэширования? - Что такое
propertyи как использовать геттеры и сеттеры? - Как обрабатывать исключения корректно в больших проектах?
- В чём разница между
asyncioи многопоточностью? - Как написать тесты с использованием
pytest? - Что такое виртуальное окружение и как его создать?
- Как использовать
dataclassesдля упрощения классов? - В чём разница между
pickleиjsonдля сериализации? - Как реализовать паттерн "Стратегия" в Python?
- Что такое
mixinклассы и как их использовать? - Как работать с файлами в бинарном режиме?
- В чём разница между
__str__и__repr__? - Как использовать
itertoolsдля сложных итераций? - Что такое
typingмодуль и как он помогает в статической проверке? - Как реализовать зависимость от версии пакета в
requirements.txt? - В чём разница между
pipиpoetry? - Как настроить линтинг и форматирование кода?
- Что такое
contextlibи как расширить возможностиwith?
Раздел 6. C# и платформа .NET (Middle Level)
- В чём разница между
structиclassв C#? - Как работает сборка мусора (GC) в .NET?
- Что такое
ref,outиinпараметры? - Как использовать
async/awaitправильно без блокирования потока? - В чём разница между
IEnumerable,ICollectionиIList? - Как работает LINQ и какие методы он предоставляет?
- Что такое
Nullable<T>и как использовать оператор?.? - Как реализовать паттерн "Репозиторий" в .NET?
- В чём разница между
TaskиThread? - Как использовать
Dependency Injectionв ASP.NET Core? - Что такое
Middlewareи как создать свой? - Как настроить фильтрацию и авторизацию в контроллерах?
- В чём разница между
ValueTupleи обычным кортежем? - Как использовать
Expression Treesдля динамических запросов? - Что такое
ImmutableArrayи когда его применять? - Как реализовать паттерн "Command" в WPF или WinForms?
- В чём разница между
ToString(),Equals()иGetHashCode()? - Как использовать
Span<T>для работы с памятью? - Что такое
nullable reference typesи как их включить? - Как настроить логирование в .NET Core?
- В чём разница между
AddScoped,AddTransientиAddSingleton? - Как реализовать кастомный атрибут в C#?
- Что такое
DynamicObjectи как использовать динамические объекты? - Как работать с потокобезопасными коллекциями?
- В чём разница между
Interlockedиlock? - Как использовать
MemoryMappedFileдля работы с большими файлами? - Что такое
Source Generatorsи как они работают? - Как настроить конфигурацию приложения через
appsettings.json? - В чём разница между
HttpClientиIHttpClientFactory? - Как реализовать паттерн "Unit of Work"?
Раздел 7. Архитектура и проектирование (Общие вопросы Middle)
- Что такое SOLID принципы и как они применяются на практике?
- В чём разница между монолитной и микросервисной архитектурой?
- Как спроектировать API, чтобы оно было расширяемым?
- Что такое DDD (Domain Driven Проектирование) и какие его основные понятия?
- Как реализовать паттерн "Циклическая архитектура" (Clean Architecture)?
- В чём разница между REST и GraphQL?
- Как обеспечить безопасность данных при передаче по сети?
- Что такое CI/CD пайплайн и какие этапы он включает?
- Как проводить код-ревью эффективно и конструктивно?
- Что такое технический долг и как им управлять?
- Как спроектировать систему, устойчивую к нагрузкам?
- В чём разница между синхронной и асинхронной коммуникацией сервисов?
- Как реализовать паттерн "Шлюз" (API Gateway)?
- Что такое Event Sourcing и как он отличается от обычного хранения состояния?
- Как обеспечить идемпотентность операций в системе?
- В чём разница между горизонтальным и вертикальным масштабированием?
- Как спроектировать систему с учётом отказоустойчивости?
- Что такое CAP теорема и как она влияет на выбор архитектуры?
- Как реализовать кэширование на разных уровнях системы?
- В чём разница между ORM и raw SQL запросами?
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Перед вами крайне сложный экзамен с морем вопросов по самым ключевым основам. Перед вами крайне сложный экзамен с морем вопросов по самым ключевым основам.Экзамен для Junior-разработчика
Экзамен для Senior-разработчика