Kotlin · 36 строк
Продавец нажимает «Синхронизировать остатки» — сервис проходит по его SKU, от 200 до 20 000, читает остаток из учётной системы и отправляет в маркетплейс. Кнопки «Стоп» и повторный запуск вызываются из разных потоков веб-сервера.
Отметьте строки с ошибками.
В работе: Интеграция складского учёта продавца с маркетплейсом.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Плюс 1 вопрос про поведение программы — на зачёт не влияют. Ответ один на подход: после него показываем разбор.
Источник: на задачах Wildberries: остатки продавцов. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
import kotlinx.coroutines.CoroutineScopeimport kotlinx.coroutines.Dispatchersimport kotlinx.coroutines.Jobimport kotlinx.coroutines.launchclass StockSync(private val api: MarketplaceApi,private val scope: CoroutineScope,) {private var job: Job? = null// Продавец нажал «Синхронизировать остатки». Кнопку можно нажать повторно.fun start(skus: List<Long>) {job?.cancel()job = scope.launch(Dispatchers.IO) {for (sku in skus) {try {val qty = api.fetchStock(sku)api.pushStock(sku, qty)} catch (e: Exception) {println("sku $sku: ${e.message}")}Thread.sleep(50) // пауза между SKU, лимит API маркетплейса}}}fun stop() {job?.cancel()}}interface MarketplaceApi {suspend fun fetchStock(sku: Long): Intsuspend fun pushStock(sku: Long, qty: Int)}