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

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

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

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

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

(2024-07-05)

Task 1

package main

import (
    "context"
    "fmt"
    "math/rand"
    "time"
)

func main() {
    fmt.Println(Do(context.Background(), []User{{"aaa"}, {"bbb"}, {"ccc"}, {"ddd"}, {"eeee"}}))
}

type User struct {
    Name string
}

func fetchByName(ctx context.Context, userName string) (int, error) {
    // Тут проихсодит сетевой поход, который по userName возвращает UserID

    time.Sleep(10 * time.Millisecond) // имитация сетевого похода
    return rand.Int() % 100_000, nil
}

func Do(ctx context.Context, users []User) (map[string]int, error) {
    collected := make(map[string]int)
    for _, u := range users {
        userID, err := fetchByName(ctx, u.Name)
        if err != nil {
            return collected, err
        }
        
        collected[u.Name] = userID
    }

    return collected, nil
}
  • Как работает этот код? Что он выведет?
  • Как ускорить этот код? (речь про Do)

Task 2

Напишите и протестируйте функцию преобразования числа(Integer) в десятичную строку ("string") Пример: 123 -> "123"

Ограничения:

  • Встроенные функции преобразования использовать нельзя.
  • StringBuilder использовать нельзя.
  • fmt только в тестах.
func solve(num int) string {
    // ...
}