Тех собес на middle Golang Разработчик в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории Golang Разработчик

Посмотреть видео в категории

(2024-07-05)

Техническое собеседование

  • Вопросы по опыту

Задание на ревью кода

Необходимо хранить список из username и почты в памяти программы. Пользователи программы могут добавлять и просматривать userов. Разработчик написал данный код, но не прошел ревью. Нужно указать на ошибки и исправить, либо оставить комментарий о том, что можно улучшить.

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

// Необходимо хранить список из username и почты в памяти программы.
// Пользователи программы могут добавлять и просматривать userов.
// Разработчик написал данный код, но не прошел ревью.
// Нужно указать на ошибки и исправить, либо оставить комментарий о том, что можно улучшить.

var users = []string{}

type User struct {
    Username string json:"username"
    email    string json:"email"//Email
}
//context
func addUser(w http.ResponseWriter, r *http.Request) {
    var newUser User
    err := json.NewDecoder(r.Body).Decode(&newUser)
    if err != nil {
        http.Error(w, "Error parsing JSON", http.StatusBadRequest)
        return
    }
    //lock
    users = append(users, newUser.Username)// [100]
    //unlock
    fmt.Fprintf(w, "Added user")
}
//context
func getUsers(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    json.NewEncoder(w).Encode(users)
    //return
}
//goruntine
func main() {
    http.HandleFunc("/addUser", addUser)
    http.HandleFunc("/getUsers", getUsers)
    fmt.Println("Server starting on port 8080...")
    http.ListenAndServe(":8080", nil)
}