Dağıtık sistemleri destekleme veya geliştirme deneyiminiz var mı?
Golang
Kamu bulutlarını kullandın mı? Evet ise, hangi sağlayıcılar ve hizmetler?
Mimarlık üzerinde nasıl çalışıyorsunuz — ekipte bir mimar, platform, komite var mı?
Yüksek RPS (örneğin, 30.000 RPS ve 10 backend) durumunda tüm backend'lerin lineer taraması ne kadar hızlı çalışacaktır?
type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Backends sayısında 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs tüm yük dengeleyicilerin adreslerini içerir func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Hizmet kaç ana bilgisayarda çalışıyordu ve kaç örnek başlatıldı?
En yoğun trafikli hizmette saniyede en yüksek kaç istek vardı?
Veritabanlarıyla çalışırken karşılaştığınız en büyük veri hacmi nedir?
Aramalar ne kadar aktif? Belki de zaten bazı teklifler var mı?
2019'dan 2021'e kadar ilk işin hakkında daha fazla bilgi ver.
Pencerede tüm sembollerin olduğunu hızlıca nasıl kontrol edersiniz (iki haritayı karşılaştırma)?
/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { n := len(str) res := make([]byte, 0, n) i := 0 for i < n { if str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') { ch := str[i+2] i += 2 for i < n && str[i] == ch { i++ } } else { res = append(res, str[i]) } } return string(res) }
Çalıştığınız en büyük projede kaç kişi yer aldı? Onun altında mı, onlarca mı, yüzlerce mi?
En az yüklü backend'i seçmek yerine daha basit ve daha hızlı yük dengeleme yöntemleri var mı?
Birden fazla örneğe sahip dağıtılmış bir sistemde paralel istek sınırlandırma sorununu, kullanıcının hata almak yerine beklemesi gerekiyorsa nasıl çözebilirsiniz?
Düzeltilmiş kodda sözdizimi hatalarını bulun
Message Service mesajları neden Kafka yerine doğrudan gRPC üzerinden gidiyor?
func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) for right := 0; right < len(s); right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }
Proto dosyasına dayalı olarak BulkCreateUsers yöntemini uygulayın: proje yapısını, iş mantığını, deposunu ve SQL sorgularını SOLID ilkelerine uygun şekilde oluşturun
""" Sinema koltukları tek bir sırada dizilmiştir. Yeni gelen bir izleyici, sıradaki diğer izleyicilerden mümkün olan en uzak mesafeye bir koltuk seçer. Yani, seçtiği koltuktan en yakın izleyiciye olan mesafe maksimum olmalıdır. Sırada her zaman boş koltuklar olduğu ve en az bir izleyicinin oturduğu garanti edilir. Verilen bir koltuk sırası (sıfır ve birlerden oluşan bir dizi) için, seçilen koltuk ile en yakın izleyici arasındaki mesafeyi (koltuklar arasındaki boşluk sayısı) döndüren bir fonksiyon yazın. [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] -> 3 [1, 0, 0, 0] -> 3 place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }