со 2 задачей мне кажется что то не то как то сильно интервьевер заморочился и мне кажется ввел в заблуждение и сам написал чехарду package main import ( "fmt" "sync" "time" ) func main() { wg := &sync.WaitGroup{} mu := sync.Mutex{} var isWorked bool var sharedStore string for i := 0; i < 10; i++ { wg.Add(1) go func(id int) { defer wg.Done() defer mu.Unlock() mu.Lock() fmt.Println("start worker id:", id) if !isWorked { fmt.Println("request slow api worker id: ", id) sharedStore = verySlowApi() isWorked = true return } fmt.Println("finish worker id:", id, sharedStore) fmt.Println("read result slow api:", sharedStore) }(i) } wg.Wait() } func verySlowApi() string { time.Sleep(5 * time.Second) return "ok" } вот на Мьютексе простая реализация примерно
И снова этот интервьюер... Он вообще готовится к интервью, которые проводит? Дал вторую задачу, которую сам толком не смог объяснить, накидал забагованный вариант и - "хорошо, погнали к следующей задаче". Ребята, что за брак вы гоните? На канале всего несколько толковых опытных ревьюеров, остальные персонажи непонятные, нельзя так. Дальше смотреть уже не мог, просто потеря времени.
На самом деле, вторая задачка - это просто паттерн дольно известный Debounce, просто интевьюер не смог его упаковать в свое творчекое изложение, поскольку в паре публикаций где я встречал описание его реализации примеры были другие. Ну хоть свое пытался сделать
А смысл собеседование вести, если человек не уверен в синтаксисе чтения из канала Go?
со 2 задачей мне кажется что то не то как то сильно интервьевер заморочился и мне кажется ввел в заблуждение и сам написал чехарду
package main
import (
"fmt"
"sync"
"time"
)
func main() {
wg := &sync.WaitGroup{}
mu := sync.Mutex{}
var isWorked bool
var sharedStore string
for i := 0; i < 10; i++ {
wg.Add(1)
go func(id int) {
defer wg.Done()
defer mu.Unlock()
mu.Lock()
fmt.Println("start worker id:", id)
if !isWorked {
fmt.Println("request slow api worker id: ", id)
sharedStore = verySlowApi()
isWorked = true
return
}
fmt.Println("finish worker id:", id, sharedStore)
fmt.Println("read result slow api:", sharedStore)
}(i)
}
wg.Wait()
}
func verySlowApi() string {
time.Sleep(5 * time.Second)
return "ok"
}
вот на Мьютексе простая реализация примерно
Отличное интервью с лайв кодингом. Очень нравится Ваша работа, ребята.
Единственное, что хотелось лучше качество картинки. Тяжело смотреть на код.
мне кажется до джуна плюс далеко парню
Воот
Миша жёсткий, думаю пару собесов пройти, теорию подтянуть и спокойно на мидла можно идти
И снова этот интервьюер... Он вообще готовится к интервью, которые проводит? Дал вторую задачу, которую сам толком не смог объяснить, накидал забагованный вариант и - "хорошо, погнали к следующей задаче". Ребята, что за брак вы гоните? На канале всего несколько толковых опытных ревьюеров, остальные персонажи непонятные, нельзя так. Дальше смотреть уже не мог, просто потеря времени.
На самом деле, вторая задачка - это просто паттерн дольно известный Debounce, просто интевьюер не смог его упаковать в свое творчекое изложение, поскольку в паре публикаций где я встречал описание его реализации примеры были другие. Ну хоть свое пытался сделать