Sobes.tech

Inbox жана Outbox үлгүлөрүн колдондуңузбу?

274

Маселе: «Timeout менен пинг-понг» pingPong деген функцияны жазгыла: - Эки горутин башта: бири "ping" билдирүүлөрүн чыгарат, экинчиси — "pong". - Горутиңдер билдирүүлөрдү катуу кезек менен жалпы канал аркылуу алмашышы керек. - Алмашуу 3 секундга созулат, андан кийин программа аяктайт (жакшы жабуу). - Тайм-аут менен жок кылуу үчүн контекстти колдонгула. - Ар бир билдирүүнү экранга чыгарыңдар, башталгандан бери убакыт менен (миллисекундда). Күтүлгөн чыгуу мисалы: 0ms: ping

216

Жөнөкөй түз берүү тапшырмасы (негизги атаандаштык) Шарт: Ар бир URL үчүн HTTP GET суроо жүргүзүүчү жана жооптун денеси (жол) менен ачкыч катары URL турган карта кайтарган fetchAll(urls []string) map[string]string функциясын жаз. Эгер суроо ийгиликсиз болсо (каталар, 200 эмес), анда мааниси бош жол болот. Чектөөлөр: - Чет тилдик китепканаларды колдонууга болбойт (тек стандарттык). - Кол коймону өзгөртүүгө болбойт. - Программа http.Getде паника болсо кулап калбоо керек. Кирүү мисалы: ["[link]" "[link]" "[link]"]

201

негізгі пакет import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }

185

Кандидат менен маек куруп жатканда (эгер сурашса) "Мен ишчилердин белгиленген санын камтыган worker pool колдонмокмун, тапшырмалар үчүн канал жана sync.WaitGroup. Ишчілер суроолорду аткарат, убакыттын өтүшү жана токтотуу контекст аркылуу көзөмөлдөнөт. Натыйжаларды mutex менен корголгон буферге чогултам (же өзүнчө канал аркылуу)." Эми сенин кезиң Бул чатта код жаз. Мен текшерип, кайтарым берем. Эмне менен баштоо керектигин билбесең, кеңеш сура. Ийгилик!

177

Идempotенттикти кандай камсыз кылышты?

176

// барлық элементтер слайс ішінде бірегей болуы керек + жалпы 1000 элемент болуы керек // бағдарлама артық уақыт күтпестен тоқтауы керек func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("қайталанатын арттыру") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }

159

Pointer деген эмне жана эгер функциянын аргументі — pointer болсо, эмне болот?

159

Мьютекссиз слайсты толтуруп, анын ичинде бардык 1000 элемент болсун.

148

Postgres'teki бөгөттөө жөнүндө сөз кылыңыз.

145

DELETE менен TRUNCATE ортосундагы айырма эмне?

144

Бөлүштүрүлгөн көзөмөл жөнүндө уккансыңбы?

136

Акыркы долбооруң жөнүндө айтып бер.

123