Golang
Algoritmanın zaman ve bellek karmaşıklığı nedir?
Neden yapıda bağlamı kesmemiz gerekiyor? Neden işçileri sonlandırıyoruz? Stop metodunu kesmek istiyoruz.
Şu anda neden yeni bir iş arıyorsunuz? Mevcut işinizde sizi ne rahatsız ediyor?
Nereye büyümek istiyorsun, neyle çalışmak istiyorsun, hangi deneyimi kazanmak istiyorsun?
Şimdi HeadHunter'a gidip filtrelere göre adaylar aramak istiyoruz — bunu nasıl mimari hale getirebiliriz?
İkinci dilimle ilgili veriler ne olacak, ilk dilimden kapasite 5 ile oluşturulup kapasite 10'a çıkarılırsa?
PostgreSQL'de indeksler: nedir, hangi türleri biliyorsun, B-tree neden Hash'ten daha iyidir?
func (c *Client) Send(ctx context.Context, messages []Message, maxWorkers int) error { sem := make(chan struct{}, maxWorkers) var wg sync.WaitGroup var resultErr error var once sync.Once for _, msg := range messages { wg.Add(1) go func(msg Message) { defer wg.Done() sem <- struct{}{} defer func() { <-sem }() body, err := json.Marshal(msg) if err != nil { once.Do(func() { resultErr = err; cancel() }) return } req, _ := http.NewRequestWithContext( ctx, http.MethodPost, c.url, bytes.NewReader(body), ) req.Header.Set("Content-Type", "application/json") resp, err := c.httpClient.Do(req) if err != nil { once.Do(func() { resultErr = err; cancel()}) return } defer resp.Body.Close() if resp.StatusCode >= 500 { once.Do(func() { resultErr = fmt.Errorf("server error") cancel()}) return } c.sentCount.Add(1) time.Sleep(time.Second) }(msg) } wg.Wait() }
Hangi görevler için goroutine ve kanalları kullandınız?
Tasarım kalıpları hakkında bana anlat. Double-checked locking (çift kontrol kilidi) nedir ve ne için kullanılır?
Teknik tarama veya mülakatlara katılma deneyiminiz var mı?
PostgreSQL optimizasyonu aşamasına nasıl geldiniz ve hangi optimizasyon yöntemlerini kullandınız?
Goroutine'ler neden işletim sistemi thread'lerinden daha etkilidir?
15. satırda map bildirimi neden köşeli parantez içinde olmalı, süslü değil?
Semafor nedir?
Map'teki öğeleri nasıl karşılaştırırsınız? İki map'in aynı olup olmadığını nasıl kontrol edersiniz?
PostgreSQL'de silinen kayıtlarla fiziksel olarak ne oluyor? Ne zaman silinirler?
Linux'ta konteynerleştirmenin mümkün olduğu teknolojiler nelerdir?
Go'da genel ticari geliştirme deneyiminiz nedir?
Geliştirme sırasında bilinmesi gereken kanal çalışma kuralları nelerdir (kapalı, açık, ne zaman ne yapılabilir)?