Kas ir idempotence?
Golang
Kas ir pesimistiska bloķēšana?
// Atjauninot pasūtījumu, mums jānosūta pasūtījuma dati vairākām pakalpojumiem (trešo pušu API) // pakalpojumu skaits pieaug (var būt tūkstoš+) // mēs uzrakstījām kodu, sākumā viss gāja labi, bet ar laiku mūsu pakalpojums sāka patērēt daudz atmiņas func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Iedomājieties, ka tas ir ilgs tīkla zvans response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "neizdevās nosūtīt", err) return } s.logger.Info(ctx, "veiksmīgi", response) }() } }
Kas ir kanāli Go? Kādi ir? Kā tie ir uzbūvēti iekšpusē?
Kā tika īstenota datu kešošana? Kāda kešatnes politika tika izmantota?
Kādi ir veidi, kā savienot virknes Go? Kāda ir atšķirība starp + un strings.Builder?
Kas ir konteksts Go? Kāda ir atšķirība starp context.WithTimeout un context.WithDeadline?
Kā nodrošināt, lai visi pasūtījuma notikumi nonāktu vienā Kafka daļā?
Kas notiks ar Redis un klientiem, ja Redis ir pilns un izslēgtas ir izslēgtas izslēgšanas politika?
Kas ir Dead Letter Queue (DLQ)?
Kas ir slice? Kas ir zem slice? Kā darbojas append funkcija?
// preču tabula: // ID | cnt_view // ----------- // 1 | 100 // divi lietotāji sāka vienlaikus skatīties preces ar ID = 1 // un mūsu datu bāzē tika palaistas 2 paralēlas transakcijas // kāds būs rezultāts? 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() }
Kas ir Mutex un RWMutex? Ar kāda starpība?
Kā darbojas atkritumu savākšanas sistēma Go? Kad tas tiek palaists? Vai to var palaist manuāli?
Kā tika aprēķināts 25% skaitlis? Kāpēc ne 20 vai 30?
Kas ir virknes Go? Ko tās pārstāv zem motora pārsega?
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 }
Vai Kafka ieviešanā bija nianses un grūtības? Vai tā bija jūsu pirmā ieviešanas pieredze?
Kādi profilēšanas rīki ir Go?
Kas ir struktūru izlīdzināšana Go? Kā optimizēt struktūras laukus atmiņā?