VB Visual Basic  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

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

Тест по теме «Многопоточность и синхронизация» состоит из 30 вопросов: нужно читать код, сравнивать близкие решения, находить границы применимости правил и разбирать последствия ошибок. Заданий с кодом — 18; после каждого ответа открывается объяснение.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 85 минут; после ответа можно открыть объяснение.
Вопрос 1 из 30
Раздел «Потоки выполнения»: что здесь является частью контракта, а не особенностью одного удачного запуска?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Imports System.Threading
Module Demo
    Sub StartWorker()
        Dim thread = New Thread(Sub() Console.WriteLine("work"))
        thread.IsBackground = True
        thread.Start()
        thread.Join()
    End Sub
End Module
Вопрос 2 из 30
Раздел «Потоки выполнения»: что должно остаться явным после переработки участка с StartWorker?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Strict On
Imports System.Threading
Namespace ReviewCase21_1
    Module Demo
        Sub StartWorker()
            Dim reviewThread = New Thread(Sub() Console.WriteLine("work"))
            reviewThread.IsBackground = True
            reviewThread.Start()
            reviewThread.Join()
        End Sub
    End Module
End Namespace
Вопрос 3 из 30
Раздел «Потоки выполнения»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Explicit On
Option Infer On
Imports System.Threading
Namespace BoundaryCase21_1
    Module Demo
        Sub StartWorker()
            Dim edgeThread = New Thread(Sub() Console.WriteLine("work"))
            edgeThread.IsBackground = True
            edgeThread.Start()
            edgeThread.Join()
        End Sub
    End Module
End Namespace
Вопрос 4 из 30
Раздел «Потоки выполнения»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 5 из 30
Раздел «Потоки выполнения»: какое обобщение не зависит от случайных деталей показанного примера?
Вопрос 6 из 30
Какой вывод о фрагменте по теме «Задачи Task» технически обоснован?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Imports System.Threading.Tasks
Module Demo
    Async Function CalculateAsync() As Task(Of Integer)
        Return Await Task.Run(Function() Enumerable.Range(1, 100000).Sum())
    End Function
End Module
Вопрос 7 из 30
Раздел «Задачи Task»: что следует зафиксировать в ревью, чтобы ошибка не переехала из сборки в выполнение?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Strict On
Imports System.Threading.Tasks
Namespace ReviewCase21_2
    Module Demo
        Async Function CalculateAsync() As Task(Of Integer)
            Return Await Task.Run(Function() Enumerable.Range(1, 100000).Sum())
        End Function
    End Module
End Namespace
Вопрос 8 из 30
Раздел «Задачи Task»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Explicit On
Option Infer On
Imports System.Threading.Tasks
Namespace BoundaryCase21_2
    Module Demo
        Async Function CalculateAsync() As Task(Of Integer)
            Return Await Task.Run(Function() Enumerable.Range(1, 100000).Sum())
        End Function
    End Module
End Namespace
Вопрос 9 из 30
Раздел «Задачи Task»: обычный сценарий в рабочем модуле проходит, но поведение ещё не закреплено проверкой. Какое решение не маскирует причину?
Вопрос 10 из 30
Какое утверждение точнее отделяет «Задачи Task» от соседних механизмов?
Вопрос 11 из 30
Какой контракт действительно соблюдает показанный фрагмент из раздела «Синхронизация через SyncLock»?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Class Counter
    Private ReadOnly gate As New Object()
    Private value As Integer
    Public Sub Increment()
        SyncLock gate
            value += 1
        End SyncLock
    End Sub
End Class
Вопрос 12 из 30
Раздел «Синхронизация через SyncLock»: какая претензия к возможной правке относится к поведению программы?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Strict On
Namespace ReviewCase21_3
    Class Counter
        Private ReadOnly gate As New Object()
        Private value As Integer
        Public Sub Increment()
            SyncLock gate
                value += 1
            End SyncLock
        End Sub
    End Class
End Namespace
Вопрос 13 из 30
Раздел «Синхронизация через SyncLock»: какое утверждение поможет отличить настоящий дефект от случайности тестовых данных?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Explicit On
Option Infer On
Namespace BoundaryCase21_3
    Class Counter
        Private ReadOnly gate As New Object()
        Private value As Integer
        Public Sub Increment()
            SyncLock gate
                value += 1
            End SyncLock
        End Sub
    End Class
End Namespace
Вопрос 14 из 30
Раздел «Синхронизация через SyncLock»: какой выбор не превращает скрытую ошибку в тихое продолжение работы?
Вопрос 15 из 30
Какое утверждение о «Синхронизация через SyncLock» выдерживает изменение имён и входных данных?
Вопрос 16 из 30
Раздел «Отмена»: какое утверждение позволяет предсказать поведение фрагмента по правилам Visual Basic и .NET?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Imports System.Threading
Imports System.Threading.Tasks
Module Demo
    Async Function ProcessAsync(items As IEnumerable(Of Integer), token As CancellationToken) As Task
        For Each item In items
            token.ThrowIfCancellationRequested()
            Await SaveAsync(item, token)
        Next
    End Function
End Module
Вопрос 17 из 30
Раздел «Отмена»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Strict On
Imports System.Threading
Imports System.Threading.Tasks
Namespace ReviewCase21_4
    Module Demo
        Async Function ProcessAsync(reviewItems As IEnumerable(Of Integer), reviewToken As CancellationToken) As Task
            For Each reviewItem In reviewItems
                reviewToken.ThrowIfCancellationRequested()
                Await SaveAsync(reviewItem, reviewToken)
            Next
        End Function
    End Module
End Namespace
Вопрос 18 из 30
Раздел «Отмена»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Explicit On
Option Infer On
Imports System.Threading
Imports System.Threading.Tasks
Namespace BoundaryCase21_4
    Module Demo
        Async Function ProcessAsync(edgeItems As IEnumerable(Of Integer), edgeToken As CancellationToken) As Task
            For Each edgeItem In edgeItems
                edgeToken.ThrowIfCancellationRequested()
                Await SaveAsync(edgeItem, edgeToken)
            Next
        End Function
    End Module
End Namespace
Вопрос 19 из 30
Раздел «Отмена»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 20 из 30
Раздел «Отмена»: какое правило остаётся верным для современного Visual Basic?
Вопрос 21 из 30
Раздел «Наблюдаемость и диагностика»: в примере с Worker важна не форма записи, а поведение. Какое утверждение его описывает?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Class Worker
    Private ReadOnly log As ILogger
    Public Async Function RunAsync(id As String) As Task
        Dim started = Stopwatch.StartNew()
        log.Info("job_start", id)
        Try
            Await ExecuteAsync(id)
            log.Info("job_ok", id, started.ElapsedMilliseconds)
        Catch ex As Exception
            log.Error("job_fail", id, ex)
            Throw
        End Try
    End Function
End Class
Вопрос 22 из 30
Раздел «Наблюдаемость и диагностика»: что должно остаться явным после переработки участка с Worker?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Strict On
Namespace ReviewCase21_5
    Class Worker
        Private ReadOnly log As ILogger
        Public Async Function RunAsync(reviewId As String) As Task
            Dim reviewStarted = Stopwatch.StartNew()
            log.Info("job_start", reviewId)
            Try
                Await ExecuteAsync(reviewId)
                log.Info("job_ok", reviewId, reviewStarted.ElapsedMilliseconds)
            Catch reviewEx As Exception
                log.Error("job_fail", reviewId, reviewEx)
                Throw
            End Try
        End Function
    End Class
End Namespace
Вопрос 23 из 30
Раздел «Наблюдаемость и диагностика»: для фрагмента с Worker добавляют регрессионный тест. Какой контракт он должен защищать?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Explicit On
Option Infer On
Namespace BoundaryCase21_5
    Class Worker
        Private ReadOnly log As ILogger
        Public Async Function RunAsync(edgeId As String) As Task
            Dim edgeStarted = Stopwatch.StartNew()
            log.Info("job_start", edgeId)
            Try
                Await ExecuteAsync(edgeId)
                log.Info("job_ok", edgeId, edgeStarted.ElapsedMilliseconds)
            Catch edgeEx As Exception
                log.Error("job_fail", edgeId, edgeEx)
                Throw
            End Try
        End Function
    End Class
End Namespace
Вопрос 24 из 30
Раздел «Наблюдаемость и диагностика»: какой подход сохраняет границу ответственности и делает отказ диагностируемым?
Вопрос 25 из 30
Что точнее всего описывает механизм «Наблюдаемость и диагностика»?
Вопрос 26 из 30
Посмотрите на фрагмент по теме «Надёжность в эксплуатации». Какое объяснение точнее всего связывает код с его поведением?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Class WorkQueue
    Private ReadOnly queue As New BlockingCollection(Of WorkItem)(100)
    Public Function TryEnqueue(item As WorkItem) As Boolean
        Return queue.TryAdd(item, millisecondsTimeout:=250)
    End Function
    Public Sub Complete()
        queue.CompleteAdding()
    End Sub
End Class
Вопрос 27 из 30
Раздел «Надёжность в эксплуатации»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Strict On
Namespace ReviewCase21_6
    Class WorkQueue
        Private ReadOnly queue As New BlockingCollection(Of WorkItem)(101)
        Public Function TryEnqueue(reviewItem As WorkItem) As Boolean
            Return queue.TryAdd(reviewItem, millisecondsTimeout:=251)
        End Function
        Public Sub Complete()
            queue.CompleteAdding()
        End Sub
    End Class
End Namespace
Вопрос 28 из 30
Какое свойство механизма «Надёжность в эксплуатации» нужно проверить на редком, но допустимом сценарии?
Visual Basic / VB.NETVisual Basic · Многопоточность и синхронизация
Option Explicit On
Option Infer On
Namespace BoundaryCase21_6
    Class WorkQueue
        Private ReadOnly queue As New BlockingCollection(Of WorkItem)(99)
        Public Function TryEnqueue(edgeItem As WorkItem) As Boolean
            Return queue.TryAdd(edgeItem, millisecondsTimeout:=249)
        End Function
        Public Sub Complete()
            queue.CompleteAdding()
        End Sub
    End Class
End Namespace
Вопрос 29 из 30
Раздел «Надёжность в эксплуатации»: что нужно сделать частью контракта рабочего модуля?
Вопрос 30 из 30
Раздел «Надёжность в эксплуатации»: какой вывод описывает семантику, а не предпочтение в оформлении?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу