Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
В чем разница между inline, block и inline-block элементами в CSS?
Элементы block занимают всю ширину родителя и начинаются с новой строки, элементы inline размещаются в одной строке и занимают только необходимую ширину, а inline-block совмещает свойства обоих — размещается в одной строке, но позволяет задавать ширину и высоту. Различие между этими типами влияет на построение и компоновку страницы.
Что произойдет, если изменить свойство display на block для элемента <span>?
Элемент <span> станет блочным: будет занимать всю ширину родителя, переноситься на новую строку и сможет иметь ширину/высоту, в отличие от строчного поведения.
Использовали ли вы в проектах многопоточность (lock, семафоры, Parallel) и асинхронный код?
Да, я применял Parallel.ForEach и Task.Run для распределения CPU-bound задач на несколько ядер, защищая общий ресурс через lock и SemaphoreSlim. Для синхронной работы с файловой системой и HTTP-запросов использовал async/await и HttpClient.GetAsync, что позволяло эффективно обрабатывать тысячи одновременных подключений без выделения лишних потоков.
Как избежать deadlock при работе с последовательными очередями?
Нельзя вызывать sync на той же последовательной очереди, в которой уже находитесь. Вместо этого следует использовать async или выполнять синхронный вызов на другой очереди, чтобы избежать ситуации, когда очередь ждёт сама себя.
Почему запрещено использовать await внутри lock? Как lock реализован под капотом?
await внутри lock может вызвать взаимоблокировку или нарушить поток выполнения. После await поток меняется, и блокировка не освобождается автоматически. lock компилируется в Monitor.Enter/Exit с try/finally, чтобы гарантировать освобождение блокировки даже при исключениях.
Какие примитивы синхронизации вы знаете кроме lock (например, ReaderWriterLockSlim, Mutex)?
NSLock — это рекурсивный лок или обычный? Чем они отличаются?
Как избежать deadlock/livelock при работе с блокировками?
Чем Deadlock отличается от Livelock?
Что такое deadlock в базе данных и как его избежать?
Рейтинг:
2
Сложность:
5
Основные примитивы:
Monitor (база для lock),
Mutex (межпроцессная блокировка),
Semaphore/SemaphoreSlim (ограничение параллельного доступа),
ReaderWriterLockSlim (оптимизация для частого чтения),
AutoResetEvent/ManualResetEvent (сигнализация между потоками),
Barrier (синхронизация этапов).
Рейтинг:
2
Сложность:
4
NSLock — это нерекурсивный лок. Если поток попытается захватить его повторно, это приведет к deadlock. Для рекурсивных блокировок используйте NSRecursiveLock.
Рейтинг:
2
Сложность:
5
Избегайте вложенных блокировок.
Используйте таймауты (например, tryLock(timeout)).
Упорядочивайте блокировки (всегда получайте lockA перед lockB).
Рейтинг:
1
Сложность:
6
Deadlock: Потоки блокируют друг друга навсегда (ожидают ресурсы по кругу).
Livelock: Потоки активно работают, но не прогрессируют (например, из-за "вежливой" логики).
Рейтинг:
5
Сложность:
5
Deadlock возникает, когда две транзакции ждут друг друга из-за блокировок строк или таблиц. Избежать можно упорядочиванием доступа к ресурсам, короткими транзакциями и ретраями.
Рейтинг:
1
Сложность:
2
Рейтинг:
2
Сложность:
3
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
4