Golang
Ontwerp een worker voor de asynchrone verwerking van financiële transacties
// 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() }
Waarom queue (van welk woord Q)?
Formelere naam — benaderingsstringovereenkomst (het vinden van een benaderingsovereenkomst). Het is nodig om te controleren of de eerste string een subsequente is van de tweede. Een subsequente is wanneer je de eerste string uit de tweede kunt krijgen door sommige tekens te verwijderen. Input: 'car', 'cartwheel' Output: true Input: 'cwhl', 'cartwheel' Output: true Input: 'cwhee', 'cartwheel' Output: true Input: 'cartwheel', 'cartwheel' Output: true Input: 'cwheeel', 'cartwheel' Output: false Input: 'lw', 'cartwheel' Output: false
Hoe oud bent u?
Welke webservers ken je naast Nginx?
Hoe hebt u de schaalvergroting van Kafka-consumers uitgevoerd? Op basis van welke criteria?
Hoe zou je definiëren dat een chat goed werkt als de gebruiker geen alternatief heeft?
Wat is een reverse proxy en hoe kan het worden geïmplementeerd?
// Vraag 1. Wat wordt er op het scherm weergegeven? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }
Kun je me vertellen, wat is de samenstelling van het team qua aantal?
In HTTP/1.1 kunnen binaire gegevens in de request body worden verzonden — wat is dan het fundamentele verschil met HTTP/2?
Wie heeft het project ontworpen — jij als feature-lead, samen met het team, of als teamleider?
Vertel iets over jezelf en je werkervaring.
[naam] vroeg: kent u het Saga-patroon?
Hoe los je het probleem van concurrerende reserveringen bij het overstappen naar een echte database?
Wat zijn snelle spellen?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil }
Formaliteit van de vereisten voor het matchmaking-systeem: hoe een match zoeken, wat te doen als geen tegenstander wordt gevonden, hoe zetten we zetten om te valideren, is een timer nodig, hoe de rating bijwerken, is een geschiedenis van partijen nodig, wat te doen bij disconnectie?
Zijn er pre-offers in handen?