Golang
// Βρίσκουμε το μέγιστο ζυγό αριθμό package main import "fmt" func main() { var max int for i := 1000; i > 0; i-- { go func() { if i%2 == 0 && i > max { max = i } }() } fmt.Printf("Το μέγιστο είναι %d", max) } func maxEvent(n, workers int) int { var wg sync.WaitGroup results := make(chan int, workers) jobs := make(chan int, workers) for w := 0; w < workers; w++ { wg.Add(1) go func() { defer wg.Done() localMax := -1 for num := range jobs { if num%2 == 0 && num > localMax { localMax = num } } result <- localMax }() } go func() { for i := 1; i <= n; i++ { jobs <- i } close(jobs) }() go func() { wg.Wait() close(results) }() globalMax := -1 for localMax := range results { if localMax > globalMax { globalMax = localMax } } return globalMax }
// αριθμοί από το 1 έως το 10 func main() { done := make(chan struct{}, 10) for i:=1; i<=10; i++{ go func(){ defer func() {done<-struct{}{}}() printNumber(n) }() } for i:=1; i<=10; i++{ <-done } } func printNumber(n int) { time.Sleep(time.Second) fmt.Println(n) }
Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα του pgx;
Ποιος είναι ο σκοπός μιας ομάδας καταναλωτών στο Kafka;
Πείτε μας για τη βελτιστοποίηση ερωτημάτων στη βάση δεδομένων: πώς βρήκατε τα προβληματικά ερωτήματα και τι κάνατε;
Τι ακριβώς κάνατε με το Postgres — ερωτήματα, δείκτες;
Τι συμβαίνει αν μπλοκάρει η κλήση συστήματος (syscall);
Υπάρχει τρόπος να διαχειριστείτε και να ρυθμίσετε τον stop-the-world συλλέκτη απορριμμάτων στο Go;
// πίνακας αγαθών: // ID | cnt_view // ----------- // 1 | 100 // δύο χρήστες άρχισαν να βλέπουν το προϊόν με id = 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() }
Τι σε κινητοποιεί, γιατί σου αρέσει να δουλεύεις ως προγραμματιστής;
Ποια linters χρησιμοποιείς στο Go και πού τα τρέχεις;
Αποσπάστε την ερώτηση/εργασία της συνέντευξης από αυτό το στιγμιότυπο οθόνης. Διατηρήστε τη γλώσσα του πρωτοτύπου.
Γιατί προκύπτουν αποχρώσεις με το μήκος της συμβολοσειράς σε UTF-8;
Πες μου για την εμπειρία σου με τους brokers μηνυμάτων (Kafka, NATS).
Δεδομένης μιας συμβολοσειράς S, πρέπει να μετρήσετε τον αριθμό των υποσυμβολοσειρών σε αυτήν που περιέχουν όλους τους χαρακτήρες αυτής της συμβολοσειράς τουλάχιστον μία φορά. Παραδείγματα: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg
Είσαι έτοιμος να μετακομίσεις στην Yelabuga;
Ξέρεις τι είναι μια συναλλαγή και ποια είναι τα χαρακτηριστικά της (ACID);
Ποια είναι τα πλεονεκτήματα των goroutines σε σύγκριση με τα νήματα του λειτουργικού συστήματος;
Έχετε εμπειρία στην προφίλ των υπηρεσιών;
Τι είναι μια goroutine;