Eapteka / Еаптека (Сбер Еаптека)
- что такое слайс, а массив? как связаны, особенности аппенда
go/slices-arrays - что будет если писать в закрытый канал или читать из него, а канал nil?
go/channels - что такое сервис меш
architecture/microservices - что такое дата рейс, а просто рейс?
go/concurrency - как синхронизировать горутины
go/concurrency - кафка - 1 партишн и 3 консьюмера, 3 партишена - 1 консьюмер
brokers/kafka - cap/pacelc теоремы
architecture/general - какие паттерны микросервисов знаешь?
architecture/microservices - как ускорить запросы в sql (индексы и view)
sql/indexes - Что выведется на экран и почему?
go/puzzles
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»func main() { nums := []int{1, 2, 3}
addNum(nums[0:2]) fmt.Println(nums)
addNums(nums[0:2]) fmt.Println(nums)}
func addNum(nums []int) { nums = append(nums, 4)}
func addNums(nums []int) { nums = append(nums, 5, 6)}- Что выведется на экран и почему?
go/puzzles
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»func main() { var wg sync.WaitGroup for i := 1; i <= 5; i++ { wg.Add(1) go func() { defer wg.Done() worker(i) }() } wg.Wait() fmt.Println("Jobs done ")}
func worker(id int) { fmt.Printf("Worker %d starting\n ", id) time.Sleep(time.Second) fmt.Printf("Worker %d done\n ", id)}- Что выведется на экран и почему?
go/puzzles
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»func main() { ch := make(chan int) go func() { for i := 0; i < 5; i++ { ch <- i } fmt.Println("writing finished ") }()
go func() { for v := range ch { fmt.Println(v) } fmt.Println("reading finished ") }()
time.Sleep(2 * time.Second) fmt.Println("end main ")}- Реализовать in-memory кэш менеджер для хранения пользователей
go/memory-gc
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»// Функциональные требования:// - добавление юзера по ключу с указанием времени хранения// - получение юзера по ключу// - удаление юзера по ключу// - удаление юзера по истечении времени хранения// - учесть параллельную работу с кэшем
type User struct { UUID string Name string Age int}
func main() { // person := User{ // UUID: "ada8012f-21b7-4e53-84f3-3f8975a0f215 ", // Name: "Alex ", // Age: 20, // } // // storage.Set(person.UUID, person, 10*time.Second) // storage.Get(person.UUID) // storage.Delete(person.UUID)}- Реализовать rate limiter
architecture/system-design
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»type RateLimiter struct { // TODO}
func NewRateLimiter(limit int) *RateLimiter { // TODO}
func (rl *RateLimiter) Process(f func()) error { // TODO}
func main() { rl := NewRateLimiter(10) http.HandleFunc("/request ", func(w http.ResponseWriter, r *http.Request) { err := rl.Process(func() {}) if err != nil { w.WriteHeader(http.StatusTooManyRequests) w.Write([]byte("Too many requests ")) } }) http.ListenAndServe(":8080 ", nil)}- Реализовать worker pool для параллельной обработки запросов к различным ресурсам
go/concurrency
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»// Функциональные требования// - добавление задач для воркера// - получение результатов обработки задачи (url, httpCode, error)
func main() { // urls := []string{ // "https://mail.ru/", // "https://yandex.ru/", // //... // }}- Реализовать фильтрацию продуктов по цене и заголовку наиболее быстрым способом
network/http
Задача: (код без описания) go/basics
Заголовок раздела «Задача: (код без описания) go/basics»type ( product struct { title string price int }
filters struct { priceMin int priceMax int title string })
func main() { products := []product{ { title: "Ингавирин ", price: 900, }, { title: "Нурофен Форте ", price: 500, }, { title: "Аспирин ", price: 1000, }, { title: "Нурофен Экспресс ", price: 1100, }, { title: "Нурофен Интенсив ", price: 900, }, }
fl := filters{ priceMin: 400, priceMax: 1000, title: "Нурофен ", }
broker.Produce(filter(products, fl)) // { // title: "Нурофен Форте ", // price: 500, // }, // // { // title: "Нурофен Интенсив ", // price: 900, // },}
// TODO implement itfunc filter(products []product, fl filters) <-chan product { // TODO}