Inbox жана Outbox үлгүлөрүн колдондуңузбу?
Golang
Маселе: «Timeout менен пинг-понг» pingPong деген функцияны жазгыла: - Эки горутин башта: бири "ping" билдирүүлөрүн чыгарат, экинчиси — "pong". - Горутиңдер билдирүүлөрдү катуу кезек менен жалпы канал аркылуу алмашышы керек. - Алмашуу 3 секундга созулат, андан кийин программа аяктайт (жакшы жабуу). - Тайм-аут менен жок кылуу үчүн контекстти колдонгула. - Ар бир билдирүүнү экранга чыгарыңдар, башталгандан бери убакыт менен (миллисекундда). Күтүлгөн чыгуу мисалы: 0ms: ping
Жөнөкөй түз берүү тапшырмасы (негизги атаандаштык) Шарт: Ар бир URL үчүн HTTP GET суроо жүргүзүүчү жана жооптун денеси (жол) менен ачкыч катары URL турган карта кайтарган fetchAll(urls []string) map[string]string функциясын жаз. Эгер суроо ийгиликсиз болсо (каталар, 200 эмес), анда мааниси бош жол болот. Чектөөлөр: - Чет тилдик китепканаларды колдонууга болбойт (тек стандарттык). - Кол коймону өзгөртүүгө болбойт. - Программа http.Getде паника болсо кулап калбоо керек. Кирүү мисалы: ["[link]" "[link]" "[link]"]
негізгі пакет import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }
Логдор кай сакталды?
Кандидат менен маек куруп жатканда (эгер сурашса) "Мен ишчилердин белгиленген санын камтыган worker pool колдонмокмун, тапшырмалар үчүн канал жана sync.WaitGroup. Ишчілер суроолорду аткарат, убакыттын өтүшү жана токтотуу контекст аркылуу көзөмөлдөнөт. Натыйжаларды mutex менен корголгон буферге чогултам (же өзүнчө канал аркылуу)." Эми сенин кезиң Бул чатта код жаз. Мен текшерип, кайтарым берем. Эмне менен баштоо керектигин билбесең, кеңеш сура. Ийгилик!
Идempotенттикти кандай камсыз кылышты?
// барлық элементтер слайс ішінде бірегей болуы керек + жалпы 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)) }
Pointer деген эмне жана эгер функциянын аргументі — pointer болсо, эмне болот?
Мьютекссиз слайсты толтуруп, анын ичинде бардык 1000 элемент болсун.
Postgres'teki бөгөттөө жөнүндө сөз кылыңыз.
DELETE менен TRUNCATE ортосундагы айырма эмне?
Бөлүштүрүлгөн көзөмөл жөнүндө уккансыңбы?
Redisти кандайча колдондуңуз?
Акыркы долбооруң жөнүндө айтып бер.