Sobes.tech

Golang

Şu anda çalışıyor musunuz yoksa değil misiniz, ve hangi formatta: ofis, hibrit, uzaktan mı?

245

Algoritmanın zaman ve bellek karmaşıklığı nedir?

244

/* Bir kaynaktan bir tüketiciye veri aktarmamız gerekiyor. Kaynak, verileri küçük paketler halinde (~on kayıt) verirken, tüketici daha büyük paketlerle daha verimli çalışır. Gerçek bir örnek, Kafka türü kuyruklardan Clickhouse veritabanına veri aktarımıdır. Kaynak: - Neredeyse sonsuz. - Kaynak, bir Next çağrısında hiçbir zaman MaxItems'ten fazla kayıt döndürmez. - Bir "oturum" (bir Pipe fonksiyon çağrısı) içinde, kaynak her Next çağrısında yeni veriler döndürür. - Ancak, yeniden başlatıldıktan sonra, kaynak önceki "onaylanmış" konumdan, cookie ile belirlenen noktadan başlar. Bu nedenle, Next'in döndürdüğü her cookie değeri, veriler alıcıya kaydedildikten sonra, aynı sırayla Commit çağrısı ile onaylanmalıdır. Alıcı: - Aynı anda MaxItems'ten fazla işleyemez. Temel seviye: Gerekli olan, func Pipe(p Producer, c Consumer) error fonksiyonunu uygulamaktır, bu fonksiyon kaynaktan veri okur, bunları MaxItems boyutunda bir tamponda gruplar ve alıcıya kaydeder, ve ardından kaynaktaki ilerlemeyi onaylar. */ const MaxItems = 9999 type Producer interface { // Next,: // - işlenmek üzere öğe paketleri döner // - işleme tamamlandığında onaylanacak cookie // - hata Next() (items []any, cookie int, err error) // Commit, işlenmiş veri paketini işaretlemek için kullanılır Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

242

Son projedeki çalışmanızı değerlendirirken hangi performans göstergelerini kullandınız?

Junior — Middle
242

func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; 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 }

240

L4 yük dengeleme ile L7 yük dengeleme arasındaki fark nedir?

239

""" Sinema koltukları tek bir sırada dizilmiştir. Yeni gelen izleyici, sıradaki diğer izleyicilerden mümkün olan en uzak mesafeye oturmak için bir koltuk seçer. Yani, izleyicinin oturacağı koltuk ile en yakın izleyici arasındaki mesafe maksimum olmalıdır. Her zaman boş koltuklar olduğunu ve en az bir izleyicinin oturduğunu garanti eder. Verilen bir koltuk sırası (sıfırlar ve birler dizisi) için, seçilen koltuk ile en yakın izleyici arasındaki mesafeyi (araları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] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

239

""" Sinema koltukları tek bir sırada dizilmiştir. Yeni gelen bir izleyici, sıradaki diğer izleyicilerden en uzak olacak şekilde bir koltuk seçer. Yani, seçilen koltuktan en yakın izleyiciye olan mesafe maksimum olmalıdır. Her zaman boş koltuklar olduğu ve en az bir izleyicinin oturduğu garanti edilir. Verilen bir koltuk dizisi (sıfırlar ve birler dizisi) verildiğinde, seçilen koltuktan en yakın izleyiciye olan 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 """

237

/* * Bir tamsayı dizisi ve X sayısı verildiğinde, * minimum değeri X olan en uzun boş olmayan alt dizi bulunmalıdır. * Bu alt dizinin uzunluğunu döndürün veya böyle bir alt dizi yoksa -1. */

236

Teknik mülakat için hangi projeyi seçmeli ve nasıl tanımlamalısınız?

234

Map veri yapısına anahtar ile öğe ekleme işleminin çalışma süresi nasıl belirlenir?

Junior — Middle
233

Bir öğenin Map veri yapısında benzersiz olduğunu görsel veya algoritmik olarak nasıl belirlenir?

Junior — Middle
231

Veri yazarken ulaşılmış olan saniye başına istek göstergesi nedir?

Junior — Middle
230

Neden iki tane if kontrolü gerekiyor (satır 79'da ve len(buf)==MaxItems olan satırda), bir tane değil?

228

[isim] belirtti: 20. satırda uniq, benzersiz karakter sayısı değil, başka bir şey içeriyor. Tam olarak nedir?

227

// İki sıralanmış artan düzende tam sayı dizisi verildi. // Birinci dizide olup ikinci dizide olmayan tüm öğeleri geri döndürmek gerekir. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }

226

Çözümlediğiniz en zor ve ilginç görevi, özellikle mimari deneyimle ilgili olanı anlatın.

225

// İki tamsayı dizisi uzunluğu N olan, // 1’den N’ye kadar olan tüm K için, K uzunluğundaki öneklerdeki ortak sayıların sayısını hesapla. // Dizideki sayılar tekrar edebilir, kesişim tekrar sayısı dikkate alınmadan hesaplanır. // A dizisinin K uzunluğundaki öneki, A dizisinin ilk K elemanıdır // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]

224

Kaydırmalı pencere algoritmasında pencere nasıl hareket ettirilir?

223

Şu anda Moskova'da mı yaşıyorsun? Hangi şehri düşünüyorsun? Hibrit çalışma formatını mı düşünüyorsun? Arama aşamasında mısın?

223
/11