Сіз Inbox және Outbox паттерндерін қолдандыңыз ба?
Golang
Тапсырма: «Тайм-аутпен пинг-понг» pingPong функциясын жазыңыз, ол: - Екі горутинді іске қосады: біреуі "ping" хабарламаларын генерациялайды, екіншісі — "pong". - Горутиндер жалпы арна арқылы бір-бірімен кезек-кезек хабар алмасуы керек. - Алмасу 3 секундқа созылады, содан кейін бағдарлама аяқталуы керек (жұмсақ тоқтату). - Тоқтату үшін контекстті пайдаланыңыз. - Әр хабарламаны экранға уақытпен бірге шығарыңыз (миллисекундпен басталғаннан бері). Күтілетін шығу мысалы: 0мс: ping
Жай live coding тапсырмасы (негізгі бәсекелестік) Шарт: Әр URL үшін HTTP GET сұрауын бір уақытта орындап, нәтижесінде карта қайтару керек, онда кілт — URL, мән — жауап денесі (жол). Егер сұрау сәтсіз болса (қате, 200 емес), мән — бос жол. Шектеулер: - Сыртқы кітапханаларды қолдануға болмайды (тек стандартты). - Қолтаңбаны өзгертуге болмайды. - Бағдарлама http.Get паникасы кезінде құлап қалмауы керек.
пакет негізгі импорт ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }
Жазбалар қайда сақталады?
Идемпотенттілікті қалай қамтамасыз етесіз?
Интервьюерге не айту керек (егер сұраса) «Мен жұмысшылар пулын тұрақты санымен, тапсырмалар үшін арнамен және sync.WaitGroup-пен қолданар едім. Жұмысшылар сұрауларды орындайды, ал уақытша шектеу мен тоқтату контекст арқылы бақыланады. Нәтижелерді мьютекс арқылы қорғалған тізімге жинаймын (немесе бөлек арна арқылы).»} Енді сенің кезің Бұл чатта код жаз. Мен қарап шығамын және кері байланыс беремін. Егер қайдан бастау керектігін білмесең – кеңес сұра. Сәттілік!
Мьютекссіз элементтері бар slice-ты қалай толтыруға болады, ол барлық 1000 элементті қамтиды.
Pointer дегеніміз не және егер функция аргументі pointer болса, не болады?
// барлық слайс элементтері бірегей болуы керек + нәтижесінде 1000 элементтен тұруы керек // бағдарлама уақытты босқа жоғалтпау керек, себебі time.sleep 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)) }
DELETE мен TRUNCATE арасындағы айырмашылық неде?
Postgres-те блоктау туралы айтып беріңіз.
Таралған трассировка туралы естідіңіз бе?
Redis-ті қалай қолдандыңыз?
Соңғы жобаңыз туралы айтыңыз.