Golang
Où est stockée la configuration de Redis si elle est sur une machine séparée?
Quels critères sont importants pour toi lors du choix d'un travail ? Tes attentes salariales ?
Comment créer au mieux une tranche avec une mémoire préallouée via make ? Pourquoi spécifier la capacité à l'avance ?
Pourquoi avez-vous démissionné?
Y a-t-il une date limite?
Avez-vous déjà aidé des collègues moins expérimentés ? Comment cela se passait-il généralement ?
Parlez-nous de votre expérience professionnelle et pourquoi vous avez décidé de chercher un emploi.
// Corrigez le code pour que les requêtes soient concurrentes et que le code de réponse soit affiché // et en cas d'erreur, enregistrez-la et continuez le traitement package main import "net/http" var addrs = []string{"[link]"} func main() { for _, url := range addrs { resp, err := http.Get(url) if err != nil { log.Error(err) continue } // Traiter resp si nécessaire } }
Démontrez l'algorithme de recherche d'un élément dans un arbre binaire de recherche en utilisant un exemple (comparaison avec la clé du nœud, déplacement à gauche/droite).
HeadHunter peut envoyer une réponse via webhook, mais pas Avito — il faut le faire manuellement. Comment gérer cela?
Avez-vous utilisé des déclencheurs en pratique?
Que attendez-vous de votre nouveau lieu de travail?
Quelle alternative à VACUUM FULL connais-tu qui libère également de l'espace, mais sans verrouillage strict ?
Pourquoi dans ce cas précis, gRPC a-t-il été choisi pour le service d'agrégation?
Dans votre CV, il est mentionné que vous avez accompagné 3 microservices en Golang. Qu'avez-vous fait d'autre en plus de la normalisation et de la validation des données ? S'agissait-il de support ou de développement ?
Comment obtiendriez-vous, en une seule requête, la liste des vendeurs non bloqués, en ayant une table avec tous les vendeurs et une autre uniquement avec les vendeurs bloqués?
Qu'est-ce que le verrouillage optimiste?
Comment ClickHouse trouve-t-il la relation entre les colonnes?
Sur quelle base ont-ils effectué la partition dans Amazon Athena?
package stockage import ( "database/sql" "errors" "fmt" "time" "github.com/company/my-service/internal/event" "github.com/company/my-service/internal/metric" ) type Partner struct { ID string `db:"id" json:"id"` Balance float32 `db:"balance" json:"balance"` Hold float32 `db:"hold" json:"hold"` } type PayoutRepository struct { db sql.DB eventPublisher event.Publisher metricCollector metric.Collector totalPayouts int } func NewPayoutRepository() *PayoutRepository { db, err := sql.Open("postgres", "host=localhost user=postgres password=postgres dbname=affiliate") if err != nil { panic(err) } r := PayoutRepository{ db: db, eventPublisher: event.NewKafkaPublisher("localhost:9092"), metricCollector: metric.NewPrometheusCollector("localhost:9090"), } go func() { for range time.Tick(time.Minute) { _ = r.metricCollector.Send("TotalPayouts", r.totalPayouts) } }() return r } 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 } func (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner not found") } return p, err } return p, nil } func (r *PayoutRepository) save(p Partner) error { _, err := r.db.Exec( fmt.Sprintf("UPDATE partners SET balance = %s, hold = %s WHERE id = %s", p.Balance, p.Hold, p.ID), ) if err != nil { return err } if err := r.eventPublisher.Publish("BalanceChanged", p); err != nil { return err } return nil }