Golang
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() }
Mesélj a tervezési mintákról. Mi az a double-checked locking (kettős ellenőrzéses zárolás) és mire használják?
Hogyan jutottál el a PostgreSQL optimalizálásához, és milyen optimalizációs módszereket alkalmaztál?
//Le kell írni a könyvtár modelljét. 3 entitás van: "Szerző", "Könyv", "Olvasó" Fizikailag csak egy könyv van, és csak egy olvasónál lehet. A könyvtár tábláit ennek figyelembevételével kell elkészíteni.
Miért hatékonyabbak a goroutine-ok, mint az operációs rendszer szálai?
Hogyan optimalizáltad a lekérdezéseket a gyakorlatban? Mit nézel, amikor a kézifék lassul?
Hogyan hasonlítjuk össze a térképen lévő elemeket? Hogyan ellenőrizzük, hogy két térkép egyezik-e?
Milyen technológiáknak köszönhetően lehetséges a konténerizáció Linuxon?
Milyen cache stratégiát válasszunk — cache-aside vagy write-through — figyelembe véve a felhasználók viselkedési mintáját a rendelés állapotának ellenőrzésekor?
Melyik könyvtárban találhatók a Linuxban futó folyamat fájldeskriptorai?
Milyen színű tárgyakat távolítanak el a szemétgyűjtő munka végén?
Lehetséges korlátot szabni a Go nyelvben egyszerre működő szálak számára?
Milyen állapotai vannak egy goroutine-nak?
Meséljen részletesebben a tapasztalatáról: miről szólt a projekt, és mi volt a felelőssége?
A harmadik évben kezdtél dolgozni?
Hogyan kezelik a hibákat Go-ban? Miben különböznek az errors.Is és errors.As?
Miért került a jelölt felelősségi körébe az antifraud ellenőrző szolgáltatás?
Mi az az engedélyezési token, és milyen típusai vannak?
Mennyire érdekelne egy ilyen projekt (a partnerbankok adatinak feldolgozása és szűrése)?
Dolgozott már architektúrával? Meséljen néhány architekturális megoldásról