Quali strumenti di sincronizzazione delle goroutine ci sono in Go? Correggi l'esempio con la race usando atomic
Golang
Se dovessi scegliere tra due aziende o due team, a cosa presterei attenzione e come sceglierei?
Perché ti serve un responsabile al lavoro? A cosa serve?
Cos'è lo sharding e a cosa serve? Come scegliere la chiave di sharding per le tabelle del servizio taxi (autisti, clienti, ordini)?
Come funziona una tabella hash? Qual è la complessità di inserimento e lettura? Caratteristiche dell'implementazione in Go.
Hai un'idea di quale team vorresti lavorare? Com'è dovrebbe essere?
Cos'è l'entità Service in Kubernetes?
Ti è mai capitato di fare qualcosa per molto tempo e alla fine non essere implementato o essere rinviato in pila?
Quanti anni di esperienza commerciale nello sviluppo con Go?
Quanto spesso si effettuavano revisioni del codice nel team?
È necessario progettare l'architettura backend per un messenger (Slack, Teams, Mattermost). Requisiti e restrizioni: solo chat 1x1, senza chat di gruppo solo messaggi di testo, senza allegati il servizio è accessibile tramite internet fino a 10.000 utenti nel sistema i messaggi devono essere consegnati rapidamente, entro pochi secondi l'ordine dei messaggi deve essere mantenuto, senza duplicati deve essere possibile scorrere indietro nel chat, quindi i messaggi devono essere archiviati i clienti sono dispositivi mobili, non è necessario progettare la progettazione dell'autenticazione non è necessaria
Come fa il cliente a sapere dei messaggi ricevuti mentre era offline?
Come avverrà il processo di invio e ricezione dei messaggi tra due clienti? Descrivi il flusso completo.
Per l'esecuzione corretta del codice: il punto di ingresso -- la funzione main nel pacchetto main package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := RecoverPassword(h) if act != exp { fmt.Printf("Errore: atteso %q, ottenuto %q\n", exp, act) ok = false } } if ok { fmt.Println("Tutti i test sono passati con successo") } }
Cos'è HTTPS? In cosa si differenzia da HTTP? Come protegge dagli attacchi 'man-in-the-middle'?
SELECT * c.id, -- seleziona tutte le chat (c.id, c.name) per tutti gli utenti per nome ($1) where text > 'abc'
Cosa preferisci di più in questo momento: sviluppo di prodotti o sviluppo di piattaforme?
Qual è la differenza tra processi, thread e goroutine in Go?
Condizione Ci sono 3 entità: utente, chat, messaggio • L'utente ha un nome e una data di registrazione • La chat ha un nome e una data di creazione • Il messaggio ha testo, autore e data di creazione • Un utente può essere in più chat contemporaneamente • Il messaggio appartiene obbligatoriamente a una chat, non può appartenere a più di una chat contemporaneamente • È necessario descrivere il dominio sotto forma di tabelle -- distribuito -- message_count nelle chat limite a 100 --getShard(time zone) -> shard_id -> 1 --getShard(time zone) -> shard_id -> 2 --shard1 [1..100] --shard2 [101..200] CREATE TABLE users ( id int PRIMARY KEY, name varchar(255) NOT NULL, reg_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE TABLE chats ( id int PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), message_count int NOT NULL CHECK <= 100 ); CREATE TABLE user_chats ( user_id int not null REFERENCES users(id), chat_id int NOT NULL REFERENCES chats(id), PRIMARY KEY (user_id, chat_id) ); CREATE TABLE messages ( id int PRIMARY KEY, chat_id int NOT NULL REFERENCES chats(id), author_id int NOT NULL REFERENCES users(id), created_at TIMESTAMP NOT NULL DEFAULT NOW(), text TEXT NOT NULL );
Parla in modo generale del progetto — cosa rappresentava per l'utente finale?