Milyen könyvtárakkal írják a metrikákat Go-ban?
Golang
Miért íródott ez a kód? Milyen üzleti-technikai problémát old meg?
Milyen metrikák? Milyen eszközökkel fogjuk ezeket a metrikákat írni?
// Feladat 4 // Egy "tipikus" CRUD szolgáltatásban - egy idő után néhány módszer lassan működött, és a szolgáltatás időtúllépést kezdett el. // A szolgáltatás a következőkből áll: // * Application Load Balancer (L7) - bejövő kérések fogadása és TLS végrehajtása // * Backend (rest, java/kotlin vagy golang) - bejövő kérések feldolgozása és üzleti logika // * Adatbázis (postgres) - SQL lekérdezések tárolása és feldolgozása // Hogyan kell helyesen eljárni a problémák okának megértése és a helyzet javítása érdekében?
// 3. feladat // Írja le, milyen feladatot old meg ez a kód // Milyen problémák vannak ebben a megoldásban? // Hogyan írnád át ezt a kódot?
Mit tegyünk az adatbázissal és a load balancerrel teljesítményproblémák esetén?
Mit csináltál a munkában?
Hogyan lehet hozzáférni a pprof profilozóhoz a production szerveren?
// Feladat 3 // Írja le, milyen feladatot old meg ez a kód // Milyen problémák vannak ebben a megoldásban? // Hogyan írnád át ezt a kódot? var c int type Trace struct { // Néhány mező itt } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Hogyan működik a partíció a PostgreSQL-ben a motorháztető alatt?
Milyen indexeket használtál a munkában? Mit alkalmaztál gyakorlatban? A Wildberries-nél?
Mit fogsz tenni, ha a csapatodnál minden nap változnak a prioritások, és új sürgős feladatok jelennek meg?
Milyen indexeket használsz PostgreSQL-ben?
Milyen problémák vannak a globális számlálóval rendelkező kódban? Hogyan javítható?
Melyik grafikonon látta a problémát a pprof használata közben?
Hogyan lehet az Increaser-t univerzálissá tenni — nem kötve a 100-as számhoz?
// 3. kérdés // Írja le, milyen feladatot old meg ez a kód // Milyen problémák vannak ebben a megoldásban? // Hogyan írnád át ezt a kódot? var c int var mu sync.RWMutex type Trace struct { // Néhány mező itt } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }
func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }
Tudnád elmesélni, hogyan tervezted és valósítottad meg a REST és gRPC API-kat a platform belső és külső szolgáltatásaihoz?
Lehet az Increaser a Sender megvalósítása? Miben különbözik logikailag az Increaser a Sendetől?