Jak zmienić semafor Acquire/Lock, aby oczekiwanie można było anulować lub ograniczyć czasowo?
Golang
W jakim kierunku chcesz się rozwijać?
Jakimi kryteriami będziesz wybierać ofertę, jeśli będzie ich kilka?
Czy nadal kontaktujesz się z innymi firmami? Może już masz oferty?
Opowiedz o netpoller w Go.
Jakie obciążenia na ostatnich miejscach pracy (RPS)?
Co się dzieje, gdy deklarujesz pole jako klucz główny w PostgreSQL?
WaitGroup w jądrze korzysta z Atomic do liczenia. WaitGroup może przyjmować wagę pracy. Jak byś przepisał semafor, aby metody Lock(weight int), TryLock(weight int) i Release(weight int) przyjmowały wagę? Gorutyna od razu rezerwuje zasoby na całą operację, a po każdym etapie (IO-bound, CPU-bound) zwalnia trochę. Jak byś to zaimplementował?
Opowiedz o modelu GMP w Go: jak działają G, M i P, planista, netpoller i sysmon?
W jakich momentach i jak przełączają się goroutines?
Jak działa context.WithCancel z anulowaniem?
Czym jest własność idempotentności operacji?
Opowiedz o swoim najciekawszym projekcie w całym doświadczeniu zawodowym. Co zrealizowałeś, jakie były zadania techniczne i biznesowe?
Jaki typ indeksu jest domyślny w PostgreSQL?
Dlaczego zdecydowałeś się wejść na rynek? Co ci się nie podoba w twoim obecnym miejscu pracy?
Czy możesz opowiedzieć o swoim ostatnim projekcie: czym się zajmowałeś, co napisałeś sam i jak wyglądał zespół?
Czym różni się map od sync.Map?
Problem bezpieczeństwa wątków: jeśli dwie goroutines jednocześnie wywołują Lock z pętlą, mogą się pomieszać. Jak to naprawić?
Co cię interesuje? Jakie zadania chciałbyś? Jaka domena?
typ Interfejs Sem { Lock() error //zwraca błąd, jeśli kanał jest pełny TryLock() bool // po prostu próbujemy zablokować, jeśli się uda, zwraca true Release() //zwolnienie kanału Cap() int // liczba gorutyn w pracy FreeSpace() int //pokazuje, ile jest wolnego miejsca w kanale } //struktura //channel - pomyśleć o buforze //capacity int //mutex