Golang
Opowiedz o kontekście w Go: do czego służy, jak działa anulowanie?
Czy kiedykolwiek musiałeś samodzielnie dodawać zadania do backlogu, na przykład, gdy zauważyłeś test, który nie przechodzi, lub nieaktualną bibliotekę?
Jak realizowana jest anulacja kontekstu? Co się dzieje w środku?
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 );
Czy w implementacji z gorutyną i kanałem dla predictableFunc z timeoutem może wystąpić deadlock?
Jak szybko będzie działać liniowe przeszukiwanie wszystkich backendów przy wysokim RPS (np. 30 000 RPS i 10 backendów)?
Czy pracowałeś z transakcjami na poziomie procesów biznesowych — SELECT FOR UPDATE, rollback w przypadku awarii zewnętrznego API?
Co działo się w pipeline po inbox? Jak dane były zapisywane w bazie danych?
Czym jest advisory lock (blokada doradcza)?
Opisz algorytm zliczania podłańcuchów ze wszystkimi unikalnymi znakami
Opowiedz o swoim ostatnim projekcie. Jaką rolę tam pełniłeś?
Czym są generyki w Go? Jak je rozumiesz?
Jakie są zalety goroutines w porównaniu do wątków systemu operacyjnego?
Czy możesz opowiedzieć o gorutynach? Co o nich wiesz, jakie są ich cechy?
Czy masz długi techniczne?
Jakie testy były na projekcie i jak je uruchamiali?
Czym jest partycjonowanie i sharding? Czy je używaliście?
Co się dzieje, gdy pojemność slice'a się wyczerpie i dodany zostanie kolejny element?
Co się zmieni, jeśli podczas tworzenia slice'a przekażesz początkową pojemność?
Czy klucz główny jest indeksem?