💡 Инструкция: Выберите один ответ из пяти. На тест отведено 70 минут; после ответа можно открыть объяснение.
Вопрос 6 из 25
Раздел «Потоки данных»: какое утверждение позволяет предсказать поведение фрагмента по правилам Visual Basic и .NET?
Visual Basic / VB.NET Visual Basic · Файлы, потоки и сериализация Копировать
Imports System.IO
Module Demo
Function ReadExact(stream As Stream, size As Integer) As Byte()
Dim buffer(size - 1) As Byte
Dim offset = 0
While offset < buffer.Length
Dim read = stream.Read(buffer, offset, buffer.Length - offset)
If read = 0 Then Throw New EndOfStreamException()
offset += read
End While
Return buffer
End Function
End Module
Разбор фрагмента: stream читается частями и не гарантирует, что один Read не заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Разбор фрагмента: один вызов Stream.Read заполняет весь запрошенный буфер, если поток ещё не достиг конца.
Разбор фрагмента: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Разбор фрагмента: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком не определяются конкретной реализацией.
Разбор фрагмента: stream читается частями и гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Вопрос 7 из 25
Раздел «Потоки данных»: что следует зафиксировать в ревью, чтобы ошибка не переехала из сборки в выполнение?
Visual Basic / VB.NET Visual Basic · Файлы, потоки и сериализация Копировать
Option Strict On
Imports System.IO
Namespace ReviewCase15_2
Module Demo
Function ReadExact(reviewStream As Stream, reviewSize As Integer) As Byte()
Dim reviewBuffer(reviewSize - 1) As Byte
Dim reviewOffset = 0
While reviewOffset < reviewBuffer.Length
Dim reviewRead = reviewStream.Read(reviewBuffer, reviewOffset, reviewBuffer.Length - reviewOffset)
If reviewRead = 0 Then Throw New EndOfStreamException()
reviewOffset += reviewRead
End While
Return reviewBuffer
End Function
End Module
End Namespace
Сохранить на ревью: один вызов Stream.Read заполняет весь запрошенный буфер, если поток ещё не достиг конца.
Сохранить на ревью: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Сохранить на ревью: stream читается частями и гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Сохранить на ревью: stream читается частями и не гарантирует, что один Read не заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Сохранить на ревью: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком не определяются конкретной реализацией.
Вопрос 8 из 25
Раздел «Потоки данных»: обычный сценарий проходит. Что следует закрепить отдельным граничным тестом?
Visual Basic / VB.NET Visual Basic · Файлы, потоки и сериализация Копировать
Option Explicit On
Option Infer On
Imports System.IO
Namespace BoundaryCase15_2
Module Demo
Function ReadExact(edgeStream As Stream, edgeSize As Integer) As Byte()
Dim edgeBuffer(edgeSize - 1) As Byte
Dim edgeOffset = 0
While edgeOffset < edgeBuffer.Length
Dim edgeRead = edgeStream.Read(edgeBuffer, edgeOffset, edgeBuffer.Length - edgeOffset)
If edgeRead = 0 Then Throw New EndOfStreamException()
edgeOffset += edgeRead
End While
Return edgeBuffer
End Function
End Module
End Namespace
Добавить регрессионную проверку: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Добавить регрессионную проверку: один вызов Stream.Read заполняет весь запрошенный буфер, если поток ещё не достиг конца.
Добавить регрессионную проверку: stream читается частями и гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Добавить регрессионную проверку: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком не определяются конкретной реализацией.
Добавить регрессионную проверку: stream читается частями и не гарантирует, что один Read не заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Вопрос 9 из 25
Раздел «Потоки данных»: обычный сценарий в рабочем модуле проходит, но поведение ещё не закреплено проверкой. Какое решение не маскирует причину?
Сделать явным правилом модуля: один вызов Stream.Read заполняет весь запрошенный буфер, если поток ещё не достиг конца.
Сделать явным правилом модуля: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Сделать явным правилом модуля: stream читается частями и не гарантирует, что один Read не заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Сделать явным правилом модуля: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком не определяются конкретной реализацией.
Сделать явным правилом модуля: stream читается частями и гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Вопрос 10 из 25
Раздел «Потоки данных»: какой вывод описывает семантику, а не предпочтение в оформлении?
Надёжное обобщение: один вызов Stream.Read заполняет весь запрошенный буфер, если поток ещё не достиг конца.
Надёжное обобщение: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком не определяются конкретной реализацией.
Надёжное обобщение: stream читается частями и не гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Надёжное обобщение: stream читается частями и не гарантирует, что один Read не заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Надёжное обобщение: stream читается частями и гарантирует, что один Read заполнит весь буфер; позиция, возможность Seek и владение потоком определяются конкретной реализацией.
Вопрос 21 из 25
Какой вывод о фрагменте по теме «Проверка допущений» технически обоснован?
Visual Basic / VB.NET Visual Basic · Файлы, потоки и сериализация Копировать
Imports System.IO
Module Demo
Sub ReplaceAtomically(target As String, content As String)
Dim temp = target & ".tmp"
File.WriteAllText(temp, content)
File.Move(temp, target, True)
End Sub
End Module
Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
При работе с Проверка допущений нарушение «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене» не меняет результат, если выполняется «счастливый путь не покрывает обрыв и повреждение».
Достаточно явно обеспечить «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене»; требование «счастливый путь не покрывает обрыв и повреждение» на поведение не влияет.
Запись прямо в целевой файл атомарна: при сбое читатель увидит либо старое, либо полностью новое содержимое.
Работа с данными не проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Вопрос 22 из 25
Раздел «Проверка допущений»: какой комментарий к изменению будет технически обоснован?
Visual Basic / VB.NET Visual Basic · Файлы, потоки и сериализация Копировать
Option Strict On
Imports System.IO
Namespace ReviewCase15_5
Module Demo
Sub ReplaceAtomically(reviewTarget As String, reviewContent As String)
Dim reviewTemp = reviewTarget & ".tmp"
File.WriteAllText(reviewTemp, reviewContent)
File.Move(reviewTemp, reviewTarget, True)
End Sub
End Module
End Namespace
Не менять условие: работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Не менять условие: достаточно явно обеспечить «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене»; требование «счастливый путь не покрывает обрыв и повреждение» на поведение не влияет.
Не менять условие: при работе с Проверка допущений нарушение «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене» не меняет результат, если выполняется «счастливый путь не покрывает обрыв и повреждение».
Не менять условие: запись прямо в целевой файл атомарна: при сбое читатель увидит либо старое, либо полностью новое содержимое.
Не менять условие: работа с данными не проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Вопрос 23 из 25
Раздел «Проверка допущений»: какое утверждение поможет отличить настоящий дефект от случайности тестовых данных?
Visual Basic / VB.NET Visual Basic · Файлы, потоки и сериализация Копировать
Option Explicit On
Option Infer On
Imports System.IO
Namespace BoundaryCase15_5
Module Demo
Sub ReplaceAtomically(edgeTarget As String, edgeContent As String)
Dim edgeTemp = edgeTarget & ".tmp"
File.WriteAllText(edgeTemp, edgeContent)
File.Move(edgeTemp, edgeTarget, True)
End Sub
End Module
End Namespace
Проверить на границе: работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Проверить на границе: при работе с Проверка допущений нарушение «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене» не меняет результат, если выполняется «счастливый путь не покрывает обрыв и повреждение».
Проверить на границе: работа с данными не проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Проверить на границе: запись прямо в целевой файл атомарна: при сбое читатель увидит либо старое, либо полностью новое содержимое.
Проверить на границе: достаточно явно обеспечить «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене»; требование «счастливый путь не покрывает обрыв и повреждение» на поведение не влияет.
Вопрос 24 из 25
Раздел «Проверка допущений»: что стоит закрепить в коде и тестах, а не прикрывать общим обработчиком?
Не скрывать за запасным сценарием: работа с данными не проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Не скрывать за запасным сценарием: работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Не скрывать за запасным сценарием: запись прямо в целевой файл атомарна: при сбое читатель увидит либо старое, либо полностью новое содержимое.
Не скрывать за запасным сценарием: достаточно явно обеспечить «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене»; требование «счастливый путь не покрывает обрыв и повреждение» на поведение не влияет.
Не скрывать за запасным сценарием: при работе с Проверка допущений нарушение «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене» не меняет результат, если выполняется «счастливый путь не покрывает обрыв и повреждение».
Вопрос 25 из 25
Раздел «Проверка допущений»: какой вывод описывает семантику, а не предпочтение в оформлении?
Переносимый вывод: работа с данными не проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Переносимый вывод: при работе с Проверка допущений нарушение «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене» не меняет результат, если выполняется «счастливый путь не покрывает обрыв и повреждение».
Переносимый вывод: достаточно явно обеспечить «Работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене»; требование «счастливый путь не покрывает обрыв и повреждение» на поведение не влияет.
Переносимый вывод: работа с данными проверяет допущения о размере, полном чтении, версии схемы, временном файле и атомарной замене; счастливый путь не покрывает обрыв и повреждение.
Переносимый вывод: запись прямо в целевой файл атомарна: при сбое читатель увидит либо старое, либо полностью новое содержимое.