Golang
Opowiedz o pracy z slices w Go: jak działają capacity i length, co się stanie po przekroczeniu granic?
Opowiedz mi o planatorze Go. Jak radzi sobie z operacjami blokującymi?
Opowiedz o poprzednim projekcie (Cloud.ru): czym on był, czym się zajmowałeś?
Jaki masz poziom: middle, middle+, senior?
Analiza kodu w Go: co robi kod, jakie są problemy?
Czy masz wyższe wykształcenie? W którym roku ukończyłeś?
Co się stanie, jeśli odczytasz z zamkniętego kanału w Go?
Jak bardzo byłbyś zainteresowany takim projektem (przetwarzanie i filtrowanie danych od banków partnerskich)?
Usługa przetwarza żądanie, zaczyna coś robić, ponawia próbę, a w tym momencie pod się restartuje. Co się stanie?
Czy zapytania agregacyjne były wykonywane na tej samej bazie, na której aktywnie trwały zapisy? Czy wystąpiły jakieś efekty uboczne? Jak PostgreSQL reaguje na zmiany danych podczas długotrwałej agregacji?
Opowiedz o modelu GMP w Go. Jak działają kolejki, czym jest handoff, work stealing, netpoller?
Projekt skalowalnego systemu wiadomości obsługującego 150 mln użytkowników, 75 mln DAU, 225 mln MAU, 1,2 mln odczytów / 300 tys. zapisów szczytowych QPS, 5 mln użytkowników jednocześnie, 60 PB nowych danych rocznie, roczny wzrost o 30%, SLA 99,95%, p99 <200 ms dla odczytu, <300 ms dla zapisu. KONTEKST Należy zaprojektować rozproszony system wiadomości, podobny do WhatsApp, obsługujący czaty 1:1 i grupowe, zapewniający dostarczanie wiadomości, wyświetlanie statusów online użytkowników i przesyłanie plików multimedialnych (zdjęcia, wideo, audio). System musi zapewniać wysoką dostępność i niskie opóźnienia, obsługiwać wysoki poziom równoległości i skalować na poziomie globalnym. WYMAGANIA FUNKCYJNE - Obsługa czatów osobistych (1:1) i grupowych z możliwością dodawania/usuwania uczestników - Wysyłanie i odbieranie wiadomości tekstowych i plików multimedialnych Brak wyraźnej implementacji mechanizmu end-to-end encryption na poziomie usług lub klientów, poza ogólną adnotacją. - Brak wyraźnego opisu sharding i replikacji baz danych według chat_id lub user_id dla skalowalności i odporności na awarie. - Brak wyraźnego komponentu lub mechanizmu do obsługi offline'owej synchronizacji wiadomości i potwierdzeń dostarczenia. - Nie jest jasne, jak realizowane jest równoważenie obciążenia między bazami danych a usługami, szczególnie przy szczytowych obciążeniach. **Krytyczne punkty do rozważenia:**
Wypisz główny stos w Go
Jeśli chodzi o zatrudnienie — zdalnie, w biurze czy hybrydowo, co rozważasz?
""" Miejsca w kinie są ułożone w jeden rząd. Nowo przybyły widz wybiera miejsce, aby siedzieć jak najdalej od innych widzów w rzędzie. To znaczy, odległość od tego miejsca, na którym usiądzie widz, do najbliższego widza powinna być maksymalna. Gwarantuje się, że w rzędzie zawsze są wolne miejsca i że już siedzi co najmniej jeden widz. Napisz funkcję, która na podstawie podanego rzędu miejsc (tablicy zer i jedynek) zwróci odległość (liczbę przerw między fotelami) od wybranego miejsca do najbliższego widza. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }
Kiedy należy usuwać indeksy? Czym jest denormalizacja?
Ile mniej więcej mikroserwisów było w systemie?
Czym jest rywalizacja o blokadę?
Co się stanie, jeśli pojemność nie wystarczy podczas dodawania (append) do podtablicy?
// Co jest złego w tym kodzie? Jak go ulepszyć? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }