Sobes.tech

Идемпотенттүүлүк эмне?

199

Go-догу каналдар эмне? Канча түрү бар? Ички түзүлүшү кандай?

194

// Буйрутманы жаңарту кезінде біз бірнеше қызметке (үшінші тарап 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) }() } }

Middle+
194

Goда context деген эмне? context.WithTimeout менен context.WithDeadline ортосунда эмнеге айырма бар?

191

Goда жолдорлорду бириктирүүнүн кандай жолдору бар? + менен strings.Builder ортосунда кандай айырма бар?

191

Пессимисттик бөгөлүү деген эмне?

190

Redis толуп кетсе жана чыгаруу саясаты өчүрүлгөн болсо, Redis жана кардарлар менен эмне болот?

189

Бир заказ боюнча бардык окуялар бир Kafka бөлүмүнө кантип киргизсе болот?

187

Маалыматтарды кэшке салуу кандай ишке ашты? Кантип кэш саясаты колдонулду?

187

Dead Letter Queue (DLQ) эмне?

184

Слайс деген эмне? Слайстин капотунун астында эмне бар? append функциясы кантип иштейт?

184

// товарлар таблицасы: // ID | cnt_view // ----------- // 1 | 100 // эки колдонуучу бир убакта 1 номери менен товарды карай башташты // жана биздин базада 2 параллел транзакция ишке киргизилди // натыйжа кандай болот? postgresql 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() }

Middle+
178

25% санын кантип эсептешти? Неге 20 же 30 эмес?

176

Mutex жана RWMutex деген эмне? Алар кандай айырмаланат?

175

Go-догу калдык чогултуучу кантип иштейт? Канча убакытта ишке кирет? Кол менен ишке киргизсе болобу?

173

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 }

Middle+
172

Go-догу саптар эмне? Алар капоттун астында эмне көрсөтөт?

169

Goда профайлдоо үчүн кандай инструменттер бар?

167

Kafkaны киргизүүдө нюанстар жана кыйынчылыктар болду беле? Бул сиздин биринчи киргизүү тажрыйбаңызбы?

166

Go-догу түзүмдөрдүн тууралашы эмнеге? Түзүмдөрдүн талааларын эс тутумда кантип оптималдаштыруу керек?

166
/3