Sobes.tech

Golang

Jakie środki synchronizacji goroutines są dostępne w Go? Napraw przykład z wyścigiem, używając atomic

212

Gdybyś musiał wybrać między dwoma firmami lub dwoma zespołami, na co zwróciłbyś uwagę i jak dokonałbyś wyboru?

208

Jak działa tablica haszująca? Jaka jest złożoność wstawiania i odczytu? Cechy implementacji w Go.

207

Czy masz wyobrażenie, w jakim zespole chciałbyś pracować? Jakie ono powinno być?

206

Czy zdarzyło Ci się robić coś przez długi czas, a ostatecznie nie zostało to wdrożone lub odłożone na stos?

201

Jak często przeprowadzaliście przegląd kodu w zespole?

200

Należy zaprojektować architekturę backend dla komunikatora (Slack, Teams, Mattermost). Wymagania i ograniczenia: Tylko czaty 1 na 1, bez czatów grupowych Tylko wiadomości tekstowe, bez załączników Usługa dostępna przez internet Do 10 000 użytkowników w systemie Wiadomości muszą być dostarczane szybko, w ciągu kilku sekund Należy zachować kolejność wiadomości, bez duplikatów Możliwość przewijania czatu wstecz, czyli przechowywania wiadomości Klienci to urządzenia mobilne, ich projektowanie nie jest konieczne Projektowanie autoryzacji nie jest konieczne

198

Jak klient dowiaduje się o wiadomościach otrzymanych, gdy był offline?

197

Aby poprawnie wykonać kod: punkt wejścia -- funkcja main w pakiecie 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("Błąd: oczekiwano %q, otrzymano %q\n", exp, act) ok = false } } if ok { fmt.Println("Wszystkie testy zakończyły się sukcesem") } }

194

Czego teraz bardziej chcesz: rozwijania produktu czy platformy?

191

Jaka jest różnica między procesami, wątkami a goroutines w Go?

191

SELECT * c.id, -- wybierz wszystkie czaty (c.id, c.name) dla wszystkich użytkowników po imieniu ($1) where text > 'abc'

190

Czym jest HTTPS? Czym różni się od HTTP? Jak chroni przed atakiem 'człowiek w środku'?

190

Warunek Istnieją 3 encje: użytkownik, czat, wiadomość • Użytkownik ma nazwę i datę rejestracji • Czat ma nazwę i datę utworzenia • Wiadomość ma tekst, autora i datę utworzenia • Użytkownik może być jednocześnie w wielu czatach • Wiadomość musi należeć do czatu, nie może należeć do więcej niż jednego czatu jednocześnie • Należy opisać dziedzinę w formie tabel -- rozproszony -- message_count w czatach limit 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 );

189

Opowiedz ogólnie o projekcie — co to było dla końcowego użytkownika?

189

Czym jest sharding i do czego służy? Jak wybrać klucz sharding dla tabel w serwisie taksówkowym (kierowcy, klienci, zamówienia)?

189

Napisz zapytanie SQL wyświetlające autorów, którzy mają więcej niż 10 książek (tabele: autorzy, książki, relacja wiele-do-wielu)

187

Jak zabić proces w Linux? Co zrobić, jeśli kill pid nie działa?

185
/4