💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант; близкие ответы различаются механизмом, порядком выполнения, областью действия или эксплуатационной границей. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и подробные объяснения.
Вопрос 7 из 30
Дата без часового пояса преобразуется в DateTime. На каком правиле основан результат?
PowerShell Дата без часового пояса преобразуется в DateTime Копировать
$result = [datetimeoffset]::ParseExact($row.At,"o",[Globalization.CultureInfo]::InvariantCulture)
$summary = [ordered]@{ IsNull=($null -eq $result); Count=@($result).Count }
if($null -ne $result){$summary.Type=$result.GetType().FullName};[pscustomobject]$summary
Если нули значимы, это строковый идентификатор, а не число; тип выбирают по смыслу, не по набору цифр.
CSV возвращает строки; перед вычислением нужно разобрать decimal с явно выбранной культурой и обработать ошибочные значения.
Формат должен определить культуру и DateTimeStyles; иначе одна строка означает разные даты или локальное время на разных машинах.
Приведение [bool] непустой строки даст true и для "no"; нужен явный словарь допустимых значений.
Поля, начинающиеся с =,+,-,@, могут выполнить формулу; недоверенные значения нейтрализуют или используют формат без формул.
Вопрос 19 из 30
Неизвестные поля просто игнорируются. Какое скрытое допущение делает решение ненадёжным?
Нужны доменные ограничения: диапазоны, уникальность, ссылки между таблицами и согласованность единиц.
Для расширяемых форматов это может быть допустимо, но критичные контракты должны хотя бы журналировать неизвестные поля и проверять версию.
До обработки сравнивают набор заголовков, запрещают дубли и неизвестные критичные поля, затем валидируют каждую строку.
Поля, начинающиеся с =,+,-,@, могут выполнить формулу; недоверенные значения нейтрализуют или используют формат без формул.
Слой сопоставления должен централизованно переводить внешние имена в внутренний DTO и выдавать ошибку на неоднозначность.
Вопрос 26 из 30
CSV открывается оператором в Excel. Какой вывод можно подтвердить?
PowerShell CSV открывается оператором в Excel Копировать
$safe=if($value -match "^[=+\-@]"){"'$value"}else{$value}
$valueType = if($null -eq $safe){'<null>'}else{$safe.GetType().FullName}
[pscustomobject]@{ Value=$safe; Type=$valueType; Count=@($safe).Count }
Минимизируют поля, маскируют идентификаторы, задают срок хранения и ACL; удобный CSV не должен становиться теневой базой.
Неоднозначные имена нарушают схему и могут быть переименованы PowerShell; вход нужно отклонить или нормализовать до обработки.
Поля, начинающиеся с =,+,-,@, могут выполнить формулу; недоверенные значения нейтрализуют или используют формат без формул.
Для чувствительных пакетов проверяют владельца, путь без symlink/reparse surprises, размер и хеш, затем читают неизменяемую копию.
Пишут временный файл на том же томе, проверяют чтение и затем атомарно заменяют, сохраняя предыдущую версию для отката.
Вопрос 27 из 30
XML принимает DTD. Какой вывод был бы слишком сильным?
PowerShell XML принимает DTD Копировать
# Сценарий для ревью: XML принимает DTD.
$settings = [Xml.XmlReaderSettings]::new()
$settings.DtdProcessing = [Xml.DtdProcessing]::Parse
$reader = [Xml.XmlReader]::Create('.\input.xml',$settings)
$doc = [Xml.XmlDocument]::new(); $doc.Load($reader); $doc.SelectNodes('//*')
Парсер следует настраивать так, чтобы DTD/внешние сущности были запрещены, защищаясь от XXE и чтения локальных ресурсов.
Пишут временный файл на том же томе, проверяют чтение и затем атомарно заменяют, сохраняя предыдущую версию для отката.
Поля, начинающиеся с =,+,-,@, могут выполнить формулу; недоверенные значения нейтрализуют или используют формат без формул.
Минимизируют поля, маскируют идентификаторы, задают срок хранения и ACL; удобный CSV не должен становиться теневой базой.
Запрещают внешние сущности и ограничивают размер/глубину, иначе возможны XXE и «миллиард смехов».
Вопрос 28 из 30
Импортируемый файл заменяется во время чтения. Что стоит изменить в первую очередь?
PowerShell Импортируемый файл заменяется во время чтения Копировать
# Сценарий для ревью: Импортируемый файл заменяется во время чтения.
$path = '.\incoming\data.csv'
$hashBefore = (Get-FileHash -LiteralPath $path).Hash
$rows = Import-Csv -LiteralPath $path
$hashAfter = (Get-FileHash -LiteralPath $path).Hash
[pscustomobject]@{ Rows=$rows.Count; Stable=($hashBefore -eq $hashAfter); Culture=[cultureinfo]::CurrentCulture.Name }
Для чувствительных пакетов проверяют владельца, путь без symlink/reparse surprises, размер и хеш, затем читают неизменяемую копию.
До обработки сравнивают набор заголовков, запрещают дубли и неизвестные критичные поля, затем валидируют каждую строку.
Поля, начинающиеся с =,+,-,@, могут выполнить формулу; недоверенные значения нейтрализуют или используют формат без формул.
Минимизируют поля, маскируют идентификаторы, задают срок хранения и ACL; удобный CSV не должен становиться теневой базой.
Пишут временный файл на том же томе, проверяют чтение и затем атомарно заменяют, сохраняя предыдущую версию для отката.
Вопрос 29 из 30
Отчёт содержит персональные данные. На каком правиле основан результат?
Поля, начинающиеся с =,+,-,@, могут выполнить формулу; недоверенные значения нейтрализуют или используют формат без формул.
Минимизируют поля, маскируют идентификаторы, задают срок хранения и ACL; удобный CSV не должен становиться теневой базой.
Результат должен содержать номер записи, исходный идентификатор и причину, позволяя карантин строки без потери успешных данных.
Запрещают внешние сущности и ограничивают размер/глубину, иначе возможны XXE и «миллиард смехов».
Пишут временный файл на том же томе, проверяют чтение и затем атомарно заменяют, сохраняя предыдущую версию для отката.