Sobes.tech

Golang

Kto wchodzi do zespołu pod względem wielkości?

Middle+
AvitoAvito
73

Co jest Ci bliższe — rozwój produktu czy infrastruktury?

Middle+
OZONOZON
73

Jak bardzo aktywne jest obecnie poszukiwanie? Czy już zamierzacie odejść z [firma], czy na razie tylko przyglądacie się interesującym ofertom?

Senior
AvitoAvito
73

Aktualizacje dokumentów trafiają do usługi message Document { string Url = 1; // URL dokumentu, jego unikalny identyfikator uint64 PubDate = 2; // deklarowany czas publikacji dokumentu uint64 FetchTime = 3; // czas otrzymania tej aktualizacji dokumentu, może być traktowany jako identyfikator wersji. Para (Url, FetchTime) jest unikalna. string Text = 4; // tekst dokumentu uint64 FirstFetchTime = 5; // początkowo nieobecne, musi zostać uzupełnione } Dokumenty mogą docierać w dowolnej kolejności (nie w kolejności, w jakiej były aktualizowane), mogą też występować duplikaty wiadomości. Wynikiem na wyjściu jest konieczność utworzenia takich samych wiadomości, ale z poprawionymi polami zgodnie z następującymi zasadami (wszystko poniżej dotyczy grupy dokumentów z tym samym polem Url): Pole Text i FetchTime powinny być takie, jak w dokumencie z największym FetchTime, otrzymanym do tej pory. Pole PubDate powinno być takie, jak w wiadomości z najmniejszym FetchTime. Pole FirstFetchTime powinno być równe minimalnej wartości FetchTime. Inaczej mówiąc, w każdym momencie bierzemy PubDate i FirstFetchTime z pierwszej wersji otrzymanej do tej pory (jeśli posortujemy je według FetchTime), a Text z ostatniej. Interfejs w kodzie można zaimplementować tak: type Processor interface { Process(doc *Document) (*Document, error) } Ten kod będzie działał w serwisie, który odczytuje wiadomości z kolejki (Kafka lub podobnej), i zapisuje wynik również do kolejki. Jeśli Process zwraca Null, nic nie jest zapisywane do kolejki.

Senior
VKVK
73

Czy pprof zawsze pokaże wyciek pamięci lub przekroczenie limitu?

Senior
ВайлдберрисВайлдберрис
73

Opowiedz krótko, czym zajmowałeś się w poprzednich miejscach pracy i jakie funkcje zaimplementowałeś.

Middle+
Яндекс
73

Zaimplementuj funkcję, która przyjmuje []any i delta int. Należy zwiększyć o delta tylko pierwsze wystąpienia unikalnych liczb (int). Inne typy i powtarzające się liczby pozostawić bez zmian. Funkcja powinna zwrócić zaktualizowaną listę i 2 liczby: updated – ile unikalnych liczb zostało zmienionych, duplicates – ile elementów liczbowych okazało się duplikatami func IncrementUniqueIntsInMixed(xs []any, delta int) ([]any, int, int) { // twój kod } // Przykład: xs := []any{1, "a", 5, "b", 1, 0, 5} u, d, s := IncrementUniqueIntsInMixed(xs, 3) // xs == []any{4, "a", 8, "b", 1, 3, 5} // u == 3 // unikalne liczby: 1, 5, 0 // d == 2 // duplikaty: drugi 1, drugi 5

Middle+
OZONOZON
73

Czy masz doświadczenie w pracy z Dockerem i Kubernetes? Na jakim poziomie?

Senior
X5
73

Opowiedz o wzorcu Transactional Outbox — jak on działa i do czego służy?

Senior
ИП Ганус Александр Андреевич
73

Czy masz doświadczenie w optymalizacji zapytań w relacyjnych bazach danych?

Middle
VKVK
73

Jakie są Twoje oczekiwania finansowe i preferowany format prezentacji?

Middle
Nau
73

Ile goroutine można utworzyć na jednym komputerze? Jak to obliczyć?

Senior
СБК ПАРУС
73

Jak zoptymalizowałeś skrypty wyszukiwania?

Senior
Cloud.ru
73

// Mamy metodę do pobierania informacji o produktach, ta metoda jest wywoływana bardzo często // czy są problemy w tym kodzie i jak je naprawić? baza danych postgress func (r *ProductRepository) GetProductDetails(ctx context.Context, productIDs []int) []Product { products := make([]Product, 0, len(productIDs)) for _, id := range productIDs { go func(id int) { var p Product query := "SELECT name, price, description FROM products WHERE id = $1" err := r.db.QueryRowContext(ctx, query, id).Scan(&p.Name, &p.Price, &p.Desc) if err != nil { r.logger.Error("error get product", "err", err) return } products = append(products, p) }(id) } return products }

Middle+
Lenta Tech
73

**Warunek** Zapytania do wielu adresów URL powinny być wykonywane równolegle. Należy wyświetlić statusy HTTP i obsłużyć błędy.

Senior
Бюро 1440Бюро 1440
73

Dlaczego wybrałeś Go dla siebie?

Senior
Spectr
73

Jakie systemy konteneryzacji i orkiestracji znasz?

Senior
КасперскийКасперский
73

Jak często korzystałeś z triggerów, tylko w przypadku z historią czy były też inne przypadki?

Middle+
МВидео/эльдорадо
73

Czym jest stos i czym jest sterta?

Senior
sber tech
73

Jakie frameworki, standardy i pakiety używasz w Go?

Senior
wilix
73
/412