Golang
Xəritə daxili necə işləyir?
TTLCache interfeysi { Set(k string, v any, ttl time.Duration) Get(k string) (any, bool) Del(k string) bool } // Yaddaşdan sızmamalıdır // get vaxtını geri qaytarmamalıdır //icra
Əmək haqqı gözləntiləriniz nədir? Əvvəlki gəliriniz necə qurulmuşdu (əsas maaş, mükafatlar)? Mükafatlar daxil olmaqla ümumi gəliri nəzərə almağa hazırsınızmı?
Int32 nəticəsi daşmışsa, əlavə riyazi əməliyyatlar aparılarsa nə baş verəcək — səhv, panika və ya başqa bir şey olacaqmı?
Son vaxtlar həyata keçirdiyiniz çətin vəzifə və ya ən maraqlı vəzifə haqqında danışın. Nə oldu, nə etdiniz, nə nəticə verdi?
Nə qədər tez-tez buraxırsınız və hansı vaxtda?
Go-da dilim nədir?
Kod nəzərdən keçirilməsi: getExternalOrderIdFromCRM funksiyasında (HTTP-müştəri) problemlər
Monolitdən mikroxidmətlərə keçiddə təcrübəniz varmı?
Kafka vasitəsilə hansı hadisələr ötürüldü və onların səhv ardıcıllığını necə idarə etdiniz?
Çox sayda indeks elan etmək, yaddaşda yer tutma baxımından təsir edərmi?
// Müştəri, yerinə yetirmək üçün məlumatlar ilə birlikdə (Task) obyektini ötürür, // nümunəmizdə boş bir struktur istifadə edəcəyik. // // Planlayıcı maksimum N vəzifəni eyni zamanda işləyə bilər, // və X vəzifə işləmə üçün növbədə ola bilər. // Əgər növbədə yer yoxdursa, dərhal müştəriyə xəta qaytarılır. // // Vəzifə, sərbəst emalçılar mövcuddursa, qəbul edilir. // İşləmə müddətini time.Sleep(5*time.Second) ilə simulyasiya edirik. // Hər vəzifə tamamlandıqda, növbəti vəzifəni növbədən alırıq. // Əgər növbə boşdursa, yeni vəzifələr üçün gözləyirik. // // Ulduz işarəsi ilə: Task strukturunu genişləndirin və vəzifələrin statuslarını ayrıca sorğu ilə alın. 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 { // gözlənilir implementasiya } type Task interface { Do() }
Kubernetes arxitekturasını bilirsinizmi, hansı varlıqlar var, control plane nədir?
WaitGroup haqqında daha ətraflı danış: nə üçün istifadə olunur, hansı metodlar var?
Gəlin, böyük bir reklam şəbəkəsi olduğumuzu fərz edək. Biz bütün dünyada tərəfdaş saytlarında bannerlər yerləşdiririk. Real vaxt rejimində hadisələrin toplanması və işlənməsi üçün bir sistem dizayn etməliyik. Bu məlumatlar iki məqsəd üçün çox vacibdir: Fakturalama: Kliklər üçün reklamverənlərdən pul tutulması. Analitika: Kampaniyaların hazırkı effektivliyini (CTR, göstərimlər) şəxsi paneldə göstərmək. Giriş məlumatları (yükü hesablamaq üçün) Özünüz tələb olunan gücü qiymətləndirməlisiniz (RPS, trafik, saxlama), aşağıdakı metriklərə əsaslanaraq: Tərəfdaş şəbəkəsi: 500,000 aktiv sayt. Trafik: Orta hesabla hər sayt 2 səhifə baxışı alır saniyədə. Reklam blokları: Hər səhifədə eyni vaxtda 3 banner göstərilir. Konversiya: Orta CTR (Click-Through Rate) 1%. Qeyri-bərabərlik: Pik yük (axşam saatları) orta ilə müqayisədə 4 dəfə çoxdur. Hadisənin ölçüsü: Hadisə obyekti (Banner ID, Sayt ID, UserID, Timestamp, hadisə növü) təxminən 500 bayt çəkir. Texniki tələblər Near Real-Time: Analitik interfeysində məlumatlar ən çox 10 saniyə gecikmə ilə görünməlidir. Etibarlılıq: Kliklərin itirilməsi qəbul edilmir (bu birbaşa pul itkisi deməkdir). Göstərimlərin itirilməsi 0.01%-ə qədər qəbul edilir. Ölçüləbilərlik: Sistem platformaların sayındakı artımla asanlıqla genişləndirilməlidir.
Əgər funksiyanın içində çox sayda element əlavə etsək, nə baş verər?
SELECT user_id, COUNT(*) AS order_count FROM orders WHERE price_total >= 1000 GROUP BY user_id ORDER BY order_count DESC;
Xidmətin memarlığını düzgün şəkildə necə qurmaq olar: komandaları, domeni varlıqları, səhvləri harada saxlamaq lazımdır?
Nəticədə hansı həlləri seçdiniz? ClickHouse, ELK və başqa nə?
Range ilə sətirdə və dilim dəyişiklikləri ilə proqram nə göstərəcək?