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

COM-взаимодействие и Office Automation

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 85 минут; после ответа можно открыть объяснение.
Вопрос 1 из 30
Не запуская фрагмент, выберите объяснение, которое учитывает весь механизм «Сборки взаимодействия с COM».
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Imports Excel = Microsoft.Office.Interop.Excel
Class WorkbookFactory
    Public Function Create(app As Excel.Application) As Excel.Workbook
        Return app.Workbooks.Add()
    End Function
End Class
Вопрос 2 из 30
Раздел «Сборки взаимодействия с COM»: что должно остаться явным после переработки участка с Excel?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict On
Imports Excel = Microsoft.Office.Interop.Excel
Namespace ReviewCase23_1
    Class WorkbookFactory
        Public Function Create(reviewApp As Excel.Application) As Excel.Workbook
            Return reviewApp.Workbooks.Add()
        End Function
    End Class
End Namespace
Вопрос 3 из 30
Раздел «Сборки взаимодействия с COM»: какое допущение стоит нарушить отдельно, чтобы проверка действительно ловила ошибку?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Explicit On
Option Infer On
Imports Excel = Microsoft.Office.Interop.Excel
Namespace BoundaryCase23_1
    Class WorkbookFactory
        Public Function Create(edgeApp As Excel.Application) As Excel.Workbook
            Return edgeApp.Workbooks.Add()
        End Function
    End Class
End Namespace
Вопрос 4 из 30
Раздел «Сборки взаимодействия с COM»: что стоит закрепить в коде и тестах, а не прикрывать общим обработчиком?
Вопрос 5 из 30
Какое правило по теме «Сборки взаимодействия с COM» можно безопасно перенести из примера в реальный проект?
Вопрос 6 из 30
Какой вывод о фрагменте по теме «Освобождение COM» технически обоснован?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Module Demo
    Sub CloseBook(book As Excel.Workbook)
        Try
            book.Close(SaveChanges:=False)
        Finally
            Marshal.FinalReleaseComObject(book)
        End Try
    End Sub
End Module
Вопрос 7 из 30
После рефакторинга код стал короче. Какое условие по теме «Освобождение COM» нельзя потерять?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict On
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Namespace ReviewCase23_2
    Module Demo
        Sub CloseBook(reviewBook As Excel.Workbook)
            Try
                reviewBook.Close(SaveChanges:=False)
            Finally
                Marshal.FinalReleaseComObject(reviewBook)
            End Try
        End Sub
    End Module
End Namespace
Вопрос 8 из 30
Раздел «Освобождение COM»: для фрагмента с Excel добавляют регрессионный тест. Какой контракт он должен защищать?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Explicit On
Option Infer On
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Namespace BoundaryCase23_2
    Module Demo
        Sub CloseBook(edgeBook As Excel.Workbook)
            Try
                edgeBook.Close(SaveChanges:=False)
            Finally
                Marshal.FinalReleaseComObject(edgeBook)
            End Try
        End Sub
    End Module
End Namespace
Вопрос 9 из 30
Раздел «Освобождение COM»: какой вариант оставляет важное условие явным для следующего разработчика?
Вопрос 10 из 30
Какое утверждение о «Освобождение COM» выдерживает изменение имён и входных данных?
Вопрос 11 из 30
Раздел «Позднее связывание»: какое утверждение позволяет предсказать поведение фрагмента по правилам Visual Basic и .NET?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict Off
Module Demo
    Sub SetCell(sheet As Object)
        sheet.Cells(1, 1).Value = "ready"
    End Sub
End Module
Вопрос 12 из 30
Раздел «Позднее связывание»: какой вывод должен пережить рефакторинг этого фрагмента?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict Off
Namespace ReviewCase23_3
    Module Demo
        Sub SetCell(reviewSheet As Object)
            reviewSheet.Cells(1, 1).Value = "ready"
        End Sub
    End Module
End Namespace
Вопрос 13 из 30
Раздел «Позднее связывание»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict Off
Namespace BoundaryCase23_3
    Module Demo
        Sub SetCell(edgeSheet As Object)
            edgeSheet.Cells(1, 1).Value = "ready"
        End Sub
    End Module
End Namespace
Вопрос 14 из 30
Раздел «Позднее связывание»: какое решение выдержит не только демонстрационный, но и отказный сценарий?
Вопрос 15 из 30
Какое правило по теме «Позднее связывание» можно безопасно перенести из примера в реальный проект?
Вопрос 16 из 30
Не запуская фрагмент, выберите объяснение, которое учитывает весь механизм «Ошибки границы».
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Imports System.Runtime.InteropServices
Module Demo
    Sub Export(documentName As String)
        Try
            OfficeExporter.Run(documentName)
        Catch ex As COMException
            Throw New InvalidOperationException($"Office export failed for {documentName}; HRESULT={ex.HResult:X8}", ex)
        End Try
    End Sub
End Module
Вопрос 17 из 30
После рефакторинга код стал короче. Какое условие по теме «Ошибки границы» нельзя потерять?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict On
Imports System.Runtime.InteropServices
Namespace ReviewCase23_4
    Module Demo
        Sub Export(reviewDocumentName As String)
            Try
                OfficeExporter.Run(reviewDocumentName)
            Catch reviewEx As COMException
                Throw New InvalidOperationException($"Office export failed for {reviewDocumentName}; HRESULT={reviewEx.HResult:X8}", reviewEx)
            End Try
        End Sub
    End Module
End Namespace
Вопрос 18 из 30
Раздел «Ошибки границы»: какой результат следует зафиксировать до запуска отрицательного сценария?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Explicit On
Option Infer On
Imports System.Runtime.InteropServices
Namespace BoundaryCase23_4
    Module Demo
        Sub Export(edgeDocumentName As String)
            Try
                OfficeExporter.Run(edgeDocumentName)
            Catch edgeEx As COMException
                Throw New InvalidOperationException($"Office export failed for {edgeDocumentName}; HRESULT={edgeEx.HResult:X8}", edgeEx)
            End Try
        End Sub
    End Module
End Namespace
Вопрос 19 из 30
Раздел «Ошибки границы»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 20 из 30
Раздел «Ошибки границы»: какой вывод описывает семантику, а не предпочтение в оформлении?
Вопрос 21 из 30
Раздел «Проверка корректности»: в примере с OfficeSmokeTest важна не форма записи, а поведение. Какое утверждение его описывает?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Class OfficeSmokeTest
    Public Sub Run()
        If Not Environment.Is64BitProcess Then Throw New InvalidOperationException("x64 required")
        Using sample = SampleDocument.CreateCorruptedCopy()
            Assert.Throws(Of OfficeImportException)(Sub() Importer.Import(sample.Path))
        End Using
    End Sub
End Class
Вопрос 22 из 30
После рефакторинга код стал короче. Какое условие по теме «Проверка корректности» нельзя потерять?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict On
Namespace ReviewCase23_5
    Class OfficeSmokeTest
        Public Sub Run()
            If Not Environment.Is64BitProcess Then Throw New InvalidOperationException("x64 required")
            Using sample = SampleDocument.CreateCorruptedCopy()
                Assert.Throws(Of OfficeImportException)(Sub() Importer.Import(sample.Path))
            End Using
        End Sub
    End Class
End Namespace
Вопрос 23 из 30
Раздел «Проверка корректности»: какое утверждение поможет отличить настоящий дефект от случайности тестовых данных?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Explicit On
Option Infer On
Namespace BoundaryCase23_5
    Class OfficeSmokeTest
        Public Sub Run()
            If Not Environment.Is64BitProcess Then Throw New InvalidOperationException("x64 required")
            Using sample = SampleDocument.CreateCorruptedCopy()
                Assert.Throws(Of OfficeImportException)(Sub() Importer.Import(sample.Path))
            End Using
        End Sub
    End Class
End Namespace
Вопрос 24 из 30
Раздел «Проверка корректности»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 25 из 30
Раздел «Проверка корректности»: какой вывод описывает семантику, а не предпочтение в оформлении?
Вопрос 26 из 30
Какой контракт действительно соблюдает показанный фрагмент из раздела «Устойчивость к сбоям»?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Class OfficeJob
    Public Function Run(source As String, target As String) As Boolean
        Dim temp = target & ".partial"
        Try
            Exporter.Export(source, temp)
            File.Move(temp, target, True)
            Return True
        Catch
            If File.Exists(temp) Then File.Delete(temp)
            Throw
        End Try
    End Function
End Class
Вопрос 27 из 30
Раздел «Устойчивость к сбоям»: что должно остаться явным после переработки участка с OfficeJob?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Strict On
Namespace ReviewCase23_6
    Class OfficeJob
        Public Function Run(reviewSource As String, reviewTarget As String) As Boolean
            Dim reviewTemp = reviewTarget & ".partial"
            Try
                Exporter.Export(reviewSource, reviewTemp)
                File.Move(reviewTemp, reviewTarget, True)
                Return True
            Catch
                If File.Exists(reviewTemp) Then File.Delete(reviewTemp)
                Throw
            End Try
        End Function
    End Class
End Namespace
Вопрос 28 из 30
Раздел «Устойчивость к сбоям»: обычный сценарий проходит. Что следует закрепить отдельным граничным тестом?
Visual Basic / VB.NETVisual Basic · COM-взаимодействие и Office Automation
Option Explicit On
Option Infer On
Namespace BoundaryCase23_6
    Class OfficeJob
        Public Function Run(edgeSource As String, edgeTarget As String) As Boolean
            Dim edgeTemp = edgeTarget & ".partial"
            Try
                Exporter.Export(edgeSource, edgeTemp)
                File.Move(edgeTemp, edgeTarget, True)
                Return True
            Catch
                If File.Exists(edgeTemp) Then File.Delete(edgeTemp)
                Throw
            End Try
        End Function
    End Class
End Namespace
Вопрос 29 из 30
Раздел «Устойчивость к сбоям»: какое решение выдержит не только демонстрационный, но и отказный сценарий?
Вопрос 30 из 30
Какой принцип по теме «Устойчивость к сбоям» стоит закрепить в командных соглашениях?

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

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

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

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