Go · 36 строк
Продавец Wildberries загружает фото карточки товара, до 30 штук по 2–5 МБ. UploadCard грузит их параллельно и возвращает ссылки в порядке файлов: первое фото — обложка.
Отметьте строки с ошибками.
В работе: Портал продавца: создание и редактирование карточки товара.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Плюс 1 вопрос про поведение программы — на зачёт не влияют. Ответ один на подход: после него показываем разбор.
Источник: обзор транскриптов интервью: Wildberries, найди баги в конкурентном коде. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
package photosimport ("context""fmt""golang.org/x/sync/errgroup")type Storage interface {Upload(ctx context.Context, name string, data []byte) (string, error)}// UploadCard загружает фото карточки товара продавца, до 30 штук.func UploadCard(ctx context.Context, s Storage, sku int64, files [][]byte) ([]string, error) {g, gctx := errgroup.WithContext(ctx)var urls []stringfor i, data := range files {g.Go(func() error {name := fmt.Sprintf("%d/%d.jpg", sku, i)url, err := s.Upload(ctx, name, data)if err != nil {return fmt.Errorf("фото %d: %w", i, err)}urls = append(urls, url)return nil})}if gctx.Err() != nil {return nil, gctx.Err()}g.Wait()return urls, nil}