💡 Инструкция: Выберите один ответ из пяти. В тесте 30 вопросов, на работу отведено 85 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 6 тематических шкал и подробные объяснения.
Вопрос 6 из 30
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Проверяется жизненный цикл задач, соединений и кеша.
Swift Память и архитектура приложения · фрагмент для разбора Копировать
import Foundation
actor ImageCache23 { private var data: [URL: Data] = [:]; func value(for url: URL) -> Data? { data[url] }; func insert(_ d: Data, for url: URL) { data[url] = d } }
Для этого примера достаточно учесть, что реальная сеть делает модульный тест надёжнее управляемого транспорта.
Actor защищает словарь, но без лимита стоимости кеш всё равно не может занять неограниченную память.
Actor защищает словарь, но без лимита стоимости кеш всё равно может занять неограниченную память.
Операция с `ImageCache23` корректна, поскольку кеш должен удерживать ответы бессрочно, пока процесс не завершится.
Наблюдаемый результат определяется тем, что создание `URLSessionDataTask` автоматически запускает запрос без `resume()`.
Вопрос 14 из 30
Какое изменение устраняет именно показанную причину и сохраняет ясный контракт «Обработка ответа»? Здесь оценивается разделение транспортного и протокольного успеха.
Swift Обработка ответа · фрагмент для разбора Копировать
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
let (data23, _) = try await URLSession.shared.data(from: URL(string: "https://example.com")!)
let model23 = try JSONDecoder().decode([String:Int].self, from: data23)
Правка сводится к локальному обходу: реальная сеть делает модульный тест надёжнее управляемого транспорта.
Достаточно изменить работу с `model23`, исходя из того, что повтор POST-запроса всегда безопасен после тайм-аута.
Нужно адаптировать только вызов `model23`, поскольку создание `URLSessionDataTask` автоматически запускает запрос без `resume()`.
Проверить тип ответа, статус, MIME при необходимости и только затем декодировать либо построить доменную ошибку.
Сигнатуру можно не менять, если считать, что кеш должен удерживать ответы бессрочно, пока процесс не завершится.
Вопрос 18 из 30
Какой вариант ремонта вы бы приняли после содержательной проверки кода? Сосредоточьтесь на следующем: жизненный цикл задач, соединений и кеша.
Swift Память и архитектура приложения · фрагмент для разбора Копировать
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
final class Client23: @unchecked Sendable {
func load(_ url: URL) {
URLSession.shared.dataTask(with: url) { data, _, _ in
self.consume(data)
}.resume()
}
func consume(_ data: Data?) {}
}
Достаточно изменить работу с `Client23`, исходя из того, что повтор POST-запроса всегда безопасен после тайм-аута.
Определить владение запросом, отменять его с владельцем, ограничивать кеш по стоимости и декодировать большие данные вне главного исполнителя.
Определить владение запросом, отменять его с владельцем, ограничивать кеш по стоимости и декодировать большие данные внутри главного исполнителя.
Правка сводится к локальному обходу: реальная сеть делает модульный тест надёжнее управляемого транспорта.
Сигнатуру можно не менять, если считать, что кеш должен удерживать ответы бессрочно, пока процесс не завершится.
Вопрос 23 из 30
Где заканчивается гарантия, продемонстрированная в обычном примере «Управляемый сетевой транспорт»? Проверяется управляемый транспорт и полезная наблюдаемость.
Ограничение определяется предположением, что повтор POST-запроса всегда безопасен после тайм-аута.
Мок, который сразу возвращает модель, проверяет URL, заголовки, статус и декодирование — то есть обходит половину сетевого слоя.
Граница применимости проходит там, где кеш должен удерживать ответы бессрочно, пока процесс не завершится.
Контрпример появляется, когда реальная сеть делает модульный тест надёжнее управляемого транспорта.
Мок, который сразу возвращает модель, не проверяет URL, заголовки, статус и декодирование — то есть обходит половину сетевого слоя.
Вопрос 29 из 30
Какое решение уменьшит число скрытых состояний и упростит расследование следующего сбоя? Сосредоточьтесь на следующем: управляемый транспорт и полезная наблюдаемость.
В API и тестах следует исходить из правила: любой ответ без транспортной ошибки считается успешным независимо от HTTP-кода.
Диагностика должна связывать метод, нормализованный URL, статус, длительность и request ID, исключая токены и персональные данные.
Для устойчивого решения достаточно принять, что создание `URLSessionDataTask` автоматически запускает запрос без `resume()`.
Архитектуру стоит строить из предположения, что кеш должен удерживать ответы бессрочно, пока процесс не завершится.
Диагностика не должна связывать метод, нормализованный URL, статус, длительность и request ID, исключая токены и персональные данные.
Вопрос 30 из 30
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Не упускайте из виду следующее: жизненный цикл задач, соединений и кеша.
Для устойчивого решения достаточно принять, что создание `URLSessionDataTask` автоматически запускает запрос без `resume()`.
В API и тестах следует исходить из правила: любой ответ без транспортной ошибки считается успешным независимо от HTTP-кода.
Разделить транспорт, кодирование, политику повтора, кеш и доменное отображение ошибок — так каждую часть можно тестировать и заменять отдельно.
Разделить транспорт, кодирование, политику повтора, кеш и доменное отображение ошибок — не так каждую часть можно тестировать и заменять отдельно.
Разделить транспорт, кодирование, политику повтора, кеш и доменное отображение ошибок — так каждую часть нельзя тестировать и заменять отдельно.