Sobes.tech

Golang

Jak są przetwarzane wiadomości wysyłane do użytkowników w trybie offline?

139

Czy korzystałeś z chmur publicznych? Jeśli tak, to z jakich dostawców i usług?

139

/* Musimy przekazać dane z pewnego źródła do pewnego odbiorcy. Źródło zwraca dane w małych partiach (~dziesięć rekordów), podczas gdy odbiorca działa efektywniej z dużymi partiami (~tysiąc rekordów). Przykład rzeczywisty to przesyłanie danych z kolejek typu Kafka do bazy danych Clickhouse. Źródło: - Praktycznie nieskończone. - Źródło nigdy nie zwraca więcej niż MaxItems rekordów w jednym wywołaniu Next. - W ramach jednej "sesji" (jednego wywołania funkcji Pipe), źródło za każdym razem zwraca nowe dane na każde wywołanie Next. - Jednak po restarcie, źródło zacznie od poprzedniej "potwierdzonej" pozycji, określanej przez cookie. Dlatego *każda* wartość cookie, którą zwróci Next, po zapisaniu danych w odbiorniku, musi być potwierdzona wywołaniem Commit, w tej samej kolejności, w jakiej zostały zwrócone przez Next. Odbiornik: - Nie może przetworzyć więcej niż MaxItems naraz. Wymagana jest implementacja funkcji func Pipe(p Producer, c Consumer) error która czyta dane ze źródła, grupuje je w bufor o rozmiarze nie większym niż MaxItems i zapisuje do odbiornika, a następnie potwierdza postęp w źródle. */ const MaxItems = 9999 type Producer interface { // Next zwraca: // - partę elementów do przetworzenia // - cookie do potwierdzenia po zakończeniu przetwarzania // - błąd Next() (items []any, cookie int, err error) // Commit służy do oznaczenia partii danych jako przetworzonych Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

139

Jak sprawdzić, czy okno zawiera wszystkie potrzebne znaki?

139

Opowiedz nam o swoich ostatnich projektach i używanym stosie technologicznym.

138

4 - szybko akceptuj nadchodzące zadania, 5 - zwracaj wynik zadania na żądanie 6 - jeśli nie ma wyniku, zwróć odpowiedni status /* Procesor - usługa wykonująca długotrwałą, zasobożerną operację. Jest już zaimplementowana Błędy, które zwraca, są wyłącznie związane z niepoprawnymi danymi wejściowymi, są stabilne i powtarzanie ich jest bezcelowe */ type Processor interface { Process([]byte) ([]byte, error) } /* Zakładamy, że mamy generator unikalnych identyfikatorów (np. UUID). Generator gwarantuje, że nie dojdzie do kolizji */ type ID string // func NewID() ID /* Harmonogram przyjmuje zadania od klientów, umieszcza je w kolejce i uruchamia w przetwarzaniu. Zapewnia, że jednocześnie uruchomionych jest nie więcej niż 'threads' metod przetwarzania Umożliwia sprawdzenie statusu zadania i uzyskanie wyniku nie blokuje metod publicznych swojego interfejsu do przetwarzania */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // logika inicjalizacji return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementacja return "" }

136

Opisz algorytm rozwiązania problemu maxSegment

136

Opowiedz, co się dzieje ostatecznie — jak gromadzimy bufor?

135

Czy to prawda, że obecnie mieszkasz w [mieście] i byłoby dla Ciebie wygodne pracować w formacie hybrydowym z wizytami w biurze?

129

Czy masz doświadczenie w pisaniu programów z wielowątkowością lub operacjami asynchronicznymi?

128

Jakie antiwzorce w architekturze mikroserwisów znasz?

127

[imię] zapytał: przy zachowaniu pozycji elementu mniejszej niż X, jaka będzie pozycja?

126

Jeśli zaoferują Ci pracę i ją przyjmiesz, jak szybko będziesz gotowy do rozpoczęcia pracy?

125

Rozważmy przykład: first=[1,1,2], second=[1,2]. Co powinien zwrócić Twój algorytm i czy działa poprawnie z duplikatami?

125

Balancer musi rozumieć, że backend odpowiada błędami, i po przekroczeniu progu na określony czas, wykluczyć go z równoważenia (Circuit Breaker)

124

Czy masz doświadczenie w tworzeniu i wsparciu systemów rozproszonych?

122

Z jakimi bazami danych lub innymi magazynami danych pracowałeś? Ile zapytań na sekundę (RPS) na zapis i odczyt?

122

Czy przez cały okres pracy zajmowałeś się zadaniami lidera?

122

Jaka była największa ilość przechowywanych danych?

119
/11