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

CSV, XML и табличные данные

CSV, XML и табличные данные: практический тест по PowerShell с чтением кода, поиском причины ошибки и выбором надёжного решения. Темы: Импорт через Import-Csv, Типизация значений, Данные в формате XML, Сопоставление схем, Диагностика: табличные форматы, Безопасная эксплуатация: табличные форматы. Базовая линия — PowerShell 7.6.3; Windows-зависимые команды и отличия Windows PowerShell 5.1 отмечены в условиях.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант; близкие ответы различаются механизмом, порядком выполнения, областью действия или эксплуатационной границей. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и подробные объяснения.
Вопрос 1 из 30
CSV с точкой с запятой импортируется с Delimiter. На каком правиле основан результат?
PowerShellCSV с точкой с запятой импортируется с Delimiter
$result = & { Import-Csv .\data.csv -Delimiter ";" -Encoding utf8 }
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 2 из 30
Заголовки отсутствуют. Какое объяснение не зависит от случайностей окружения?
PowerShellЗаголовки отсутствуют
$result = Import-Csv .\data.csv -Header Id,Name,Amount
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 3 из 30
Повторяющиеся заголовки встречаются в файле. Какой вариант точнее выражает контракт?
PowerShellПовторяющиеся заголовки встречаются в файле
$result = Get-Content .\data.csv -First 1
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 4 из 30
Поле содержит перевод строки в кавычках. Какой вывод можно подтвердить?
Вопрос 5 из 30
Файл очень большой. Что следует сделать до запуска в автоматизации?
Вопрос 6 из 30
Amount из Import-Csv сортируется как строка. Какое действие не создаст новой скрытой зависимости?
PowerShellAmount из Import-Csv сортируется как строка
Import-Csv .\data.csv | ForEach-Object {[pscustomobject]@{Id=$_.Id;Amount=[decimal]::Parse($_.Amount,[Globalization.CultureInfo]::InvariantCulture)}}
Вопрос 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
Вопрос 8 из 30
Логическое поле содержит yes/no. Какое утверждение верно для этого случая?
PowerShellЛогическое поле содержит yes/no
switch -Regex ($row.Enabled){"^(?i:true|yes|1)$"{$true};"^(?i:false|no|0)$"{$false};default{throw "bad boolean"}}
Вопрос 9 из 30
Пустая строка и null смешиваются. Какой принцип PowerShell здесь работает?
Вопрос 10 из 30
Идентификатор с ведущими нулями приводится к int. Что следует сделать до запуска в автоматизации?
Вопрос 11 из 30
XML приводится к [xml]. Какой результат увидит вызывающий код?
PowerShellXML приводится к [xml]
[xml]$doc=Get-Content .\config.xml -Raw
$doc.configuration.appSettings.add
Вопрос 12 из 30
В XML есть namespace по умолчанию. Какое решение здесь надёжнее?
PowerShellВ XML есть namespace по умолчанию
$ns=[Xml.XmlNamespaceManager]::new($doc.NameTable);$ns.AddNamespace("x","urn:demo");$doc.SelectNodes("//x:item",$ns)
Вопрос 13 из 30
Внешние сущности разрешаются из недоверенного XML. Как поступить, чтобы поведение осталось предсказуемым?
PowerShellВнешние сущности разрешаются из недоверенного XML
$settings=[Xml.XmlReaderSettings]::new();$settings.DtdProcessing=[Xml.DtdProcessing]::Prohibit
$valueType = if($null -eq $settings){'<null>'}else{$settings.GetType().FullName}
[pscustomobject]@{ Value=$settings; Type=$valueType; Count=@($settings).Count }
Вопрос 14 из 30
InnerText и InnerXml используются взаимозаменяемо. Что точнее всего описывает поведение?
Вопрос 15 из 30
XmlDocument изменён, но не сохранён. Как следует читать этот фрагмент?
Вопрос 16 из 30
CSV проверяется по обязательным столбцам. Какой вывод можно подтвердить?
PowerShellCSV проверяется по обязательным столбцам
$required="Id","Name","Amount";$headers=(Get-Content .\data.csv -First 1)|ConvertFrom-Csv|Get-Member -MemberType NoteProperty|Select-Object -Expand Name
Вопрос 17 из 30
JSON/XML версия схемы указана в документе. Какой принцип PowerShell здесь работает?
PowerShellJSON/XML версия схемы указана в документе
$version=$doc.DocumentElement.GetAttribute("schemaVersion")
$valueType = if($null -eq $version){'<null>'}else{$version.GetType().FullName}
[pscustomobject]@{ Value=$version; Type=$valueType; Count=@($version).Count }
Вопрос 18 из 30
Поля источника переименованы. Какой принцип PowerShell здесь работает?
PowerShellПоля источника переименованы
$map=@{customer_id="CustomerId";total="Amount"}
$valueType = if($null -eq $map){'<null>'}else{$map.GetType().FullName}
[pscustomobject]@{ Value=$map; Type=$valueType; Count=@($map).Count }
Вопрос 19 из 30
Неизвестные поля просто игнорируются. Какое скрытое допущение делает решение ненадёжным?
Вопрос 20 из 30
Схема проверяет только синтаксические типы. Что остаётся непроверенным после успешного запуска?
Вопрос 21 из 30
Количество строк отличается после round-trip CSV. Какое действие не создаст новой скрытой зависимости?
PowerShellКоличество строк отличается после round-trip CSV
$a=Import-Csv .\in.csv;$a|Export-Csv .\out.csv -NoTypeInformation;$b=Import-Csv .\out.csv;"$($a.Count):$($b.Count)"
Вопрос 22 из 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 }
Вопрос 23 из 30
XPath ничего не находит. Как исправить причину, а не только симптом?
PowerShellXPath ничего не находит
# Сценарий для ревью: XPath ничего не находит.
$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('//*')
Вопрос 24 из 30
Файл принят, но одна строка плохая. Как следует читать этот фрагмент?
Вопрос 25 из 30
Память растёт на большом XML. Какое объяснение не зависит от случайностей окружения?
Вопрос 26 из 30
CSV открывается оператором в Excel. Какой вывод можно подтвердить?
PowerShellCSV открывается оператором в 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 }
Вопрос 27 из 30
XML принимает DTD. Какой вывод был бы слишком сильным?
PowerShellXML принимает 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('//*')
Вопрос 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 }
Вопрос 29 из 30
Отчёт содержит персональные данные. На каком правиле основан результат?
Вопрос 30 из 30
Выходной файл заменяет предыдущий напрямую. Какое решение здесь надёжнее?

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

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

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

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