Sobes.tech

Golang

Úgy döntöttél, hogy írni fogod a WaitGroup-ot, mert megjelent egy csatorna, vagy mert valamiért goroutine-okat írtál?

Senior
174

Mi ragadott meg ebben az állásban, és miért hagyod el a korábbi munkahelyedet?

Senior
174

Van kérdése hozzám?

Senior
173

Mit mond a Go-konvenció a WaitGroup használatáról és a visszatérési típusokról (interfészek elfogadása, konkrét típusok visszaadása)?

Senior
172

Tölcsérrel ellátott csatornánál írhat-e közvetlenül egy goroutine egy másik goroutine-ba?

Senior
170

Milyen index típusokat használtak a PostgreSQL-ben a B-tree mellett?

Senior
167

Milyen szereped volt a keresőszolgáltatás fejlesztése során az architektúra döntéseiben?

Senior
166

Szeretnél egy klasszikus worker pool-t írni?

Senior
166

Milyen technológiát/eszközt használsz?

Senior
166

// Az ügyfél egy objektumot (Task) ad át bemenetként, amely tartalmazza az adatokat a feladat végrehajtásához, // példánkban egy üres struktúrát fogunk használni. // // A kezelő maximum N feladatot képes egyszerre feldolgozni, // és legfeljebb X feladat lehet a sorban várakozásban. // Ha nincs hely a sorban, azonnal hibát adunk vissza az ügyfélnek. // // A feladat akkor kerül feldolgozásra, ha van szabad feldolgozó. // A feldolgozás időtartamát szimuláljuk a time.Sleep(5*time.Second) segítségével. // Amint egy feladat befejeződik, a következőt vesszük ki a sorból. // Ha a sor üres, új feladatokat várunk az ügyfelektől. // // Csillaggal: bővítsd a Task struktúrát, és külön kérésen keresztül szerezd meg a feladatok státuszát. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // implementáció várható } type Task interface { Do() }

Senior
164

Használtál gyakorlatban kontextusokat? Mesélj.

Senior
163

func New(workers, queue, int) Scheduler { s := &scheduler { queue := make(chan Task, queue) for i := 0; i < workers; i++ { wg.Add(1) go func() { defer wg.Done() for task := range s.queue { task.Do() } }() } } return s } func (s *scheduler) Close() { close(s.queue) s.wg.Wait() } type Task interface { Do() }

Senior
163

Használtad a CTE-t? Mesélj róla.

Senior
162

Mi a különbség a SELECT FOR UPDATE és a SELECT FOR SHARE között?

Senior
161

Hogyan kezelhetnénk külsőleg az olyan hibákat, amelyek feladatok során fordulnak elő, ha szeretnénk ezt megtenni?

Senior
161

Vannak még adatversenyek a megvalósításban? Különösen a Keys módszerben, amely egy kulcs szeletet ad vissza?

Senior
160

Csak a Orosz Föderáció területén engedélyezett a munka?

Senior
160

Létezik-e olyan, hogy csak a replikán hozzunk létre indexet, de nem a masteren?

Senior
159

Replikáció típusok a PostgreSQL-ben

Senior
158

Milyen dokumentumokat tároltak az ELK-ben?

Senior
156
/7