Go · 28 строк
Каждый показ карточки объявления дёргает HandleView, продавец смотрит цифры через HandleStats. net/http обслуживает каждый запрос в своей горутине.
Отметьте строки с ошибками.
В работе: Счётчик «просмотров сегодня» в карточке объявления.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Плюс 1 вопрос про поведение программы — на зачёт не влияют. Ответ один на подход: после него показываем разбор.
Источник: на задачах Авито: статистика объявлений. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
package viewsimport ("encoding/json""net/http""strconv")var counts = map[int64]int{} // id объявления → просмотрыfunc HandleView(w http.ResponseWriter, r *http.Request) {id, err := strconv.ParseInt(r.URL.Query().Get("item"), 10, 64)if err != nil {http.Error(w, "bad item", http.StatusBadRequest)return}counts[id]++w.WriteHeader(http.StatusNoContent)}func HandleStats(w http.ResponseWriter, r *http.Request) {id, err := strconv.ParseInt(r.URL.Query().Get("item"), 10, 64)if err != nil {http.Error(w, "bad item", http.StatusBadRequest)return}json.NewEncoder(w).Encode(map[string]int{"views": counts[id]})}