Size: a a a

Dev Seagulls Chat

2020 April 28

ЗА

Заур Ашурбеков in Dev Seagulls Chat
источник

A

Abdu in Dev Seagulls Chat
источник

AA

Ali Abdulmadzhidov in Dev Seagulls Chat
@mrZuffar у тебя ж много опыта в Go. Можешь скинуть какие-нибудь тестовые задания, которые дают на собеседованиях по нему?
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Конечно, ща поищу, у меня были где-то
источник

AA

Ali Abdulmadzhidov in Dev Seagulls Chat
можно что-то прикладное, решающее реальную проблему, а не формата напиши вычисление Фибоначчи
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Там обычно такие и бывают
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
На знание всей системы
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Это раз
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Два:
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Нужно написать back-end для сервиса, который бы исполнял http-запросы к другим ресурсам.
Алгоритм работы.
Клиент просит сервис выполнить http запрос к некому ресурсу. В просьбе в формате json описаны поля {метод, адрес} (опционально: заголовки, тело). Например, {GET http://google.com}.
Сервис выполняет запрос из просьбы и в качестве ответа клиенту возвращает json объект с полями {сгенерированный id запроса, http статус, заголовки, длинна ответа}.
Список просьб должен сохраняться на сервере, например в map.
Выше описана операция создания просьбы (FetchTask). Предусмотреть ещё операции получения всех существующих просьб (опционально постранично), операция удаления просьбы по id.

Задача предполагает, что кандидат покажет знание перечисленных выше пунктов за исключением, может быть, goroutine/chan/sync.Mutex. Так же мы хотели бы увидеть код приближённый к продакшн версии с понятными наименованиями переменных и http route-ов. Если кандидат уверен в своих силах, для выполнения просьб можно реализовать worker на goroutine, который бы получал задания из канала, выполнял их и безопасно в смысле многопоточности, сохранял результаты.
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Три
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
err := parallel.Run(ctx, func(ctx context.Context, spawn parallel.SpawnFn) error {
    db, err := service1.New(...)
    if err != nil {
        return err
    }

    httpServer, err := service2.New(...)
    if err != nil {
        return err
 }

    init, err := service3.New(...)
    if err != nil {
        return err
 }

 spawn("db", parallel.Fail, db.Run)
    spawn("httpServer", parallel.Exit, httpServer.Run)
    spawn("init", parallel.Continue, init.Run)
    return nil
})

// Реализовать библиотеку parallel, удовлетворяющую сингатурам выше.
// 1. функция Run выполняет переданную в нее функцию, затем ожидает завершения запущенных с помощью spawn горутин.
// 2. функция spawn запускает горутину. Параметры – (имя сервиса для дифференциации сообщений в общем логе, вариант выхода, функция для запуска).
// 3. Fail означает, что при завершении горутины, все остальные горутины должны быть завершены и функция должна вернуть ошибку.
//  Exit – все остальные горутины должны быть завершены и функция завершается нормально.
//  Continue – завершение данной горутины игнорируется, остальные горутины продолжают свою работу.
// 4. в функции может вызываться произвольное число горутин с помощью spawn.
// 5. при ошибке во время инициализации (выполнении вложенной в Run функции),
// Логгер передается в контексте.
// Сопроводить тестами для этих 3 случаев.

// Упрощенная версия:
// Оставить только вариант Fail.
// Не использовать логгер.

// Усложненная версия:
// Предусмотреть возможность graceful shutdown.
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
На первое выходные дали, на второе и третье по 4 5 часов
источник

AA

Ali Abdulmadzhidov in Dev Seagulls Chat
скопирую себе. Позже подробнее посмотрю. Спасибо
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
👌
источник

ЗА

Заур Ашурбеков in Dev Seagulls Chat
Ес чо у меня много таких есть 😀 обращайся
источник

k

kudanoff in Dev Seagulls Chat
😴
источник

AA

Ali Abdulmadzhidov in Dev Seagulls Chat
Заур Ашурбеков
Ес чо у меня много таких есть 😀 обращайся
D баркаллагь, пока с этим разберусь D
источник

СМ

Стас М in Dev Seagulls Chat
🤔
источник