Sobes.tech

Golang

Wat zijn kanalen in Go? Welke zijn er? Hoe zijn ze van binnen opgebouwd?

194

// Bij het bijwerken van een bestelling moeten we de bestelgegevens naar meerdere services sturen (derde partij API's) // het aantal services groeit (kan duizenden+ zijn) // we hebben de code geschreven, in het begin ging alles goed, maar na verloop van tijd begon onze service veel geheugen te gebruiken func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Stel je voor dat dit een lange netwerkoproep is response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "fout bij verzenden", err) return } s.logger.Info(ctx, "succes", response) }() } }

Middle+
194

Wat is de context in Go? Wat is het verschil tussen context.WithTimeout en context.WithDeadline?

191

Welke manieren zijn er om strings te concatenëren in Go? Wat is het verschil tussen + en strings.Builder?

191

Wat is pessimistische blokkering?

190

Hoe is het cachen van gegevens geïmplementeerd? Welke cache-beleid werd gebruikt?

187

Hoe zorg je ervoor dat alle gebeurtenissen van een bestelling in één Kafka-partitie terechtkomen?

187

Wat gebeurt er met Redis en de clients als Redis vol is en de verwijderingsbeleid is uitgeschakeld?

185

Wat is een slice? Wat zit er onder de motorkap van een slice? Hoe werkt de functie append?

184

Wat is de Dead Letter Queue (DLQ)?

184

// tabel goederen: // ID | cnt_view // ----------- // 1 | 100 // twee gebruikers begonnen tegelijkertijd naar het product met id = 1 te kijken // en er zijn in onze database 2 parallelle transacties gestart // wat zal het resultaat zijn? 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

Wat zijn Mutex en RWMutex? Hoe verschillen ze?

175

Hoe is het getal van 25% berekend? Waarom niet 20 of 30?

174

Hoe werkt de garbage collector in Go? Wanneer wordt deze gestart? Kan deze handmatig worden gestart?

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

Wat zijn strings in Go? Wat stellen ze voor onder de motorkap?

169

Welke profiling tools zijn er in Go?

167

waren er nuances en moeilijkheden bij de implementatie van Kafka? Was dit je eerste implementatie-ervaring?

166

Wat is de uitlijning van structuren in Go? Hoe optimaliseer je de velden van een structuur in het geheugen?

166
/3