Sobes.tech

Golang

Shart 3 ta mavjudlik mavjud: foydalanuvchi, chat, xabar • Foydalanuvchining ismi va ro'yxatdan o'tish sanasi bor • Chatning nomi va yaratilgan sanasi bor • Xabar matn, muallif va yaratilgan sana bilan • Foydalanuvchi bir vaqtning o'zida bir nechta chatlarda bo'lishi mumkin • Xabar majburiy ravishda chatga tegishli bo'lishi kerak, u bir vaqtning o'zida bir nechta chatga tegishli bo'lishi mumkin emas • Domenni jadval shaklida tasvirlash kerak -- taqsimlangan -- message_count chatlarda 100 bilan cheklangan --getShard(time zone) -> shard_id -> 1 --getShard(time zone) -> shard_id -> 2 --shard1 [1..100] --shard2 [101..200] CREATE TABLE users ( id int PRIMARY KEY, name varchar(255) NOT NULL, reg_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE TABLE chats ( id int PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), message_count int NOT NULL CHECK <= 100 ); CREATE TABLE user_chats ( user_id int not null REFERENCES users(id), chat_id int NOT NULL REFERENCES chats(id), PRIMARY KEY (user_id, chat_id) ); CREATE TABLE messages ( id int PRIMARY KEY, chat_id int NOT NULL REFERENCES chats(id), author_id int NOT NULL REFERENCES users(id), created_at TIMESTAMP NOT NULL DEFAULT NOW(), text TEXT NOT NULL );

Senior
Ozon ФинтехOzon Финтех
75

Hozirda boshqa suhbatlar yoki takliflaringiz bormi?

Senior
DST Lab
75

Sizga ma'lum bo'lgan barcha HTTP-yo'llarini (fe'llar) nomlang.

Middle
АО Медиа Эффект
75

Yuklama oldindan ma'lum bo'lmagan holda, kesh uchun shardlar sonini tanlashda nima asos qilib olinishi mumkin?

Middle
Ozon FreshOzon Fresh
75

PostgreSQLni qanday joylashtirdingiz? Barqarorlik va kengaytuvchanlik haqida gapiring.

Middle+
РамблерРамблер
75

GPH orqali rasmiylashtirish ishga qabul qilish kitobida aks etmayaptimi?

Senior
Hi Rockits
75

Kafka iste'molchilarining miqyosini qanday amalga oshirdingiz? Qaysi mezonlarga asoslangan?

Middle+
ВайлдберрисВайлдберрис
75

asosiy paket import ( "fmt" "sync" ) func main() { for i := 0; i < 5; i++ { go fmt.Println(i) } }

Senior
X5 techX5 tech
75

Interfeysni implementatsiya qilish joyida yoki foydalanish joyida aniqlash yaxshiroqmi?

Senior
Магнит Тех
75

Partitionlash va sharding nima? Ularni ishlatdilarmi?

Senior
А7
75

Xizmat statistik funktsiyasiga 10-chi do'kondan so'ng to'xtab qoldi. Nima qilasiz? Ma'lumotlar bazasini qanday tashxis qilish va optimallashtirish mumkin?

Middle+
X5 groupX5 group
75

Xarita bilan bir xil hashlar (kollisionlar) bo'lsa nima bo'ladi?

Middle+
WaterWal
75

Tinkoffdagi tajribangiz haqida gapiring — qanday ishga qabul qilindingiz va nima bilan shug'ullandingiz?

Middle+
КуперКупер
75

Jonli kodlash: goroutine'lar bo'yicha vazifa — umumiy ma'lumotlarga konkurent kirish, poyga sharti, mutex orqali yechim. sync.Mutex va sync.RWMutex o'rtasidagi farq.

Middle+
Веро Трейс
75

Bufferli va buffersiz kanallar o'rtasidagi farq nima?

Senior
Финтехробот
75

Hozir yangi ish joyingizda o'zingiz uchun nima qidiryapsiz?

Middle+
plata
75

Transformator arxitekturasi haqida gapira olasizmi?

Middle
Graveling
75

Qaysi holatlarda dasturchi AI tomonidan ishlab chiqilgan yechimlarga tayanmasdan, kodni qo'lda yozishi ma'qulroq bo'ladi?

Senior
AndersenAndersen
75

Hujjatlar bo'yicha yangilanishlar xizmatga keladi message Document { string Url = 1; // Hujjat URL, uning noyob identifikatori uint64 PubDate = 2; // e'lon qilingan vaqti uint64 FetchTime = 3; // ushbu hujjat yangilanishining qabul qilish vaqti, versiya identifikatori sifatida qaralishi mumkin. Juftlik (Url, FetchTime) noyob. string Text = 4; // hujjat matni uint64 FirstFetchTime = 5; // dastlab mavjud emas, to'ldirilishi kerak } Hujjatlar istalgan tartibda kelishi mumkin (yangilashlar qachon amalga oshirilganiga qarab emas), shuningdek, takroriy xabarlar bo'lishi mumkin. Chiqishda, shunday xabarlar shakllantirish kerakki, ular bilan bir xil bo'lsa, lekin quyidagi qoidalarga muvofiq tuzatilgan maydonlar bilan (quyida aytilganlar, Url maydoniga mos keladigan hujjatlar guruhiga taalluqlidir): Text va FetchTime maydonlari, hozirgacha olingan eng katta FetchTime bilan bir xil bo'lishi kerak. PubDate maydoni, eng kichik FetchTime bilan bir xil bo'lishi kerak. FirstFetchTime maydoni, eng kichik FetchTime qiymatiga teng bo'lishi kerak. Boshqacha qilib aytganda, har doim FetchTime bo'yicha saralangan birinchi versiyadan PubDate va FirstFetchTime, va oxirgi versiyadan Text olinadi. Kodni quyidagicha amalga oshirish mumkin: type Processor interface { Process(doc *Document) (*Document, error) } Ushbu kod, Kafka yoki shunga o'xshash navbatdan xabarlarni o'qiydigan va natijani ham navbatga yozadigan xizmatda ishlaydi. Agar Process Null qaytarilsa, hech narsa navbatga yozilmaydi.

Senior
VKVK
75

Linuxni bilasizmi va qaysi darajada?

Middle+
ООО Макс
75
/412