Идемпотенттілік дегеніміз не?
Golang
Go тілінде арналар дегеніміз не? Қандай түрлері бар? Олар қалай жүзеге асырылады?
// Тапсырыс жаңартылған кезде, біз бірнеше қызметке (шеткі API-лерге) тапсырыс деректерін жіберуіміз керек // қызметтердің саны өсуде (мүмкін мыңдаған+) // біз код жаздық, бәрі жақсы болды, бірақ уақыт өте келе біздің қызмет көп жады тұтынатын болды func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Ұзақ уақытты желілік шақыру деп ойлаңыз response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "жіберу сәтсіз", err) return } s.logger.Info(ctx, "сәтті", response) }() } }
Go тілінде context деген не? context.WithTimeout пен context.WithDeadline қалай ерекшеленеді?
Go тілінде жолдарды қосу тәсілдері қандай? + және strings.Builder арасындағы айырмашылық неде?
Пессимистік блокировка дегеніміз не?
Барлық оқиғалар бір тапсырыс бойынша бір Kafka бөлімшесіне түсетінін қалай қамтамасыз етуге болады?
Redis толып қалса және шығару саясаттары өшірілсе, Redis пен клиенттерге не болады?
Деректер кэштеу қалай жүзеге асырылды? Қандай кэштеу саясаты қолданылды?
Dead Letter Queue (DLQ) деген не?
Слайс дегеніміз не? Оның астында не жатыр? Append функциясы қалай жұмыс істейді?
// кесте тауарлары: // ID | қарау саны // ----------- // 1 | 100 // 2 пайдаланушы бір уақытта тауарды қарауды бастады, оның id = 1 // және біздің дерекқорда екі параллель транзакция іске қосылды // нәтижесі қандай болатынын түсіндіру керек? postgress func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
Қалайша 25% саны есептелді? Неліктен 20 немесе 30 емес?
Mutex пен RWMutex деген не? Олардың айырмашылықтары қандай?
Go тілінде қоқыс жинағыш қалай жұмыс істейді? Ол қашан іске қосылады? Оны қолмен іске қосуға бола ма?
func (r *OrderRepository) GetActiveOrderIDs(ctx context.Context, offset, limit int) ([]uint32, error) { var ( res []uint32 args []interface{} ) query := `SELECT id FROM "order" WHERE is_terminated = false LIMIT $1 OFFSET $2;` args = append(args, limit, offset) rows, err := r.slave.Query(ctx, query, args...) if err != nil { return nil, err } for rows.Next() { var orderID uint32 if err = rows.Scan(&orderID); err != nil { return nil, err } res = append(res, orderID) } return res, nil }
Go тілінде жолдар дегеніміз не? Олар ішкі жағында не көрсетеді?
Go тілінде қандай профилирлеу құралдары бар?
Kafka-ны енгізуде қандай да бір нюанстар мен қиындықтар болды ма? Бұл сіздің алғашқы тәжірибеңіз бе?
Go тілінде құрылымдардың туралануы дегеніміз не? Жады үшін құрылым өрістерін қалай оңтайландыруға болады?