💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов, на работу отведено 55 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 4 тематические шкалы и подробные объяснения.
Вопрос 1 из 20
Что увидит разработчик после выполнения этого примера по теме «Массивы»? Не упускайте из виду следующее: мутация массива, границы индекса и стоимость операций.
Swift Массивы · фрагмент для разбора Копировать
var values = [1, 2, 3]
let removed = values.removeFirst()
values.append(4)
print(removed, values)
removeFirst возвращает 2, после append массив содержит [2, 3, 4].
removeFirst возвращает 1, после append массив содержит [2, 3, 4].
removeFirst возвращает 1, после append массив содержит [3, 3, 4].
Операция с `values` корректна, поскольку словарь возвращает обычное значение, а не Optional, для отсутствующего ключа.
removeFirst возвращает 1, после append массив содержит [2, 3, 5].
Вопрос 8 из 20
Что именно делает этот фрагмент неверным или неочевидным с точки зрения «Преобразования коллекций»? Сосредоточьтесь на следующем: map, compactMap, lazy и сохранение структуры данных.
Swift Преобразования коллекций · фрагмент для разбора Копировать
let input = ["1", "x", "3"]
let numbers = input.map(Int.init)
print(numbers)
flatMap сохраняет число элементов, поэтому получается массив Optional: [1, nil, 3].
Причина сбоя в том, что доступ к элементу массива по индексу всегда безопасен после любой мутации массива.
map сохраняет число элементов, поэтому получается массив Result: [1, nil, 3].
map сохраняет число элементов, поэтому получается массив Optional: [1, nil, 3].
map сохраняет число элементов, поэтому получается массив Optional: [1, nil, 4].
Вопрос 9 из 20
Что нужно поменять в реализации или сигнатуре, чтобы отрицательный сценарий стал корректным? Здесь оценивается мутация массива, границы индекса и стоимость операций.
Swift Массивы · фрагмент для разбора Копировать
let values = [10, 20]
print(values[2])
Правка сводится к локальному обходу: словарь возвращает обычное значение, а не Optional, для отсутствующего ключа.
Сигнатуру можно не менять, если считать, что цепочка `map` и `filter` всегда выполняется лениво.
Достаточно изменить работу с `values`, исходя из того, что доступ к элементу массива по индексу всегда безопасен после любой мутации массива.
Проверять indices или использовать безопасную обёртку доступа, если индекс приходит извне.
Проверять indices или использовать безопасную обёртку доступа, если индекс приходит извнутри. Так сохраняются существующие вызовы values и не требуется менять публичную форму «Массивы».
Вопрос 12 из 20
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Важно учесть: map, compactMap, lazy и сохранение структуры данных.
Swift Преобразования коллекций · фрагмент для разбора Копировать
let input = ["1", "x", "3"]
let numbers = input.map(Int.init)
print(numbers)
Использовать compactMap, если неудачные преобразования нужно отбросить, либо сохранить nil, если позиционная связь важна.
Правка сводится к локальному обходу: цепочка `map` и `filter` всегда выполняется лениво.
Использовать map, если неудачные преобразования нужно отбросить, либо сохранить nil, если позиционная связь важна.
Исправление — оставить контракт прежним и учитывать, что доступ к элементу массива по индексу всегда безопасен после любой мутации массива.
Достаточно изменить работу с `input`, исходя из того, что словарь возвращает обычное значение, а не Optional, для отсутствующего ключа.
Вопрос 13 из 20
Какую предпосылку стоит явно записать в документации и тестах? Проверяется мутация массива, границы индекса и стоимость операций.
Контрпример появляется, когда копия коллекции немедленно создаёт независимую копию всего буфера.
Индекс Array начинается с startIndex, обычно 1, но универсальный код Collection не должен предполагать целочисленный ноль.
Индекс Array начинается с startIndex, обычно 0, но универсальный код Collection не должен предполагать целочисленный ноль.
Индекс Array начинается с startIndex, обычно 0, но универсальный код Collection должен предполагать целочисленный ноль.
Индекс Set начинается с startIndex, обычно 0, но универсальный код Collection не должен предполагать целочисленный ноль.
Вопрос 20 из 20
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Проверяется map, compactMap, lazy и сохранение структуры данных.
Цепочки преобразований стоит оценивать по сохранению порядка, числа элементов и моменту вычисления, а только по краткости.
Цепочки преобразований стоит оценивать по сохранению порядка, числа элементов и моменту вычисления, а не только по краткости.
Главным проектным принципом здесь является утверждение, что цепочка `map` и `filter` всегда выполняется лениво.
В API и тестах следует исходить из правила: словарь возвращает обычное значение, а не Optional, для отсутствующего ключа.
Для устойчивого решения достаточно принять, что доступ к элементу массива по индексу всегда безопасен после любой мутации массива.