Sobes.tech

რა საშუალებები არსებობს Go-ში goroutine-ების სინქრონიზაციისთვის? გამოასწორეთ race-ის მაგალითი atomic-ის გამოყენებით

212

თუ უნდა აირჩიო ორი კომპანია ან ორი გუნდი, რა გექნება ყურადღება და როგორ აირჩევ?

210

რატომ გჭირდება სამსახურში ხელმძღვანელი? რა მიზნით?

208

როგორ მუშაობს ჰეშ-სცხრილი? რა არის ჩაწერის და წაკითხვის სირთულე? Go-ში განხორციელების მახასიათებლები.

207

შენ გესმის, რომელ გუნდში გსურს მუშაობა? როგორ უნდა იყოს ის?

206

Kubernetes-ში Service ობიექტი რა არის?

204

გახსოვთ, რომ რამე დიდხანს გააკეთეთ და საბოლოოდ ის არ იქნა განხორციელებული ან გადადებული ფურცელზე?

201

რამდენად ხშირად ხორციელდებოდა კოდის გადამოწმება გუნდში?

200

მესენჯერის (Slack, Teams, Mattermost) ბექენდის არქიტექტურის პროექტირებაა საჭირო. მოთხოვნები და შეზღუდვები: მხოლოდ 1x1 ჩატები, ჯგუფური ჩატები არ არის მხოლოდ ტექსტური შეტყობინებები, დანართების გარეშე სერვისი ხელმისაწვდომია ინტერნეტით სისტემაში მაქსიმუმ 10,000 მომხმარებელი შეტყობინებები უნდა მიეწოდოს სწრაფად, რამდენიმე წამში შეტყობინებების სია უნდა იყოს შენახული, დუბლიკატები არ უნდა იყოს შესაძლებელია ჩატში უკან გადახვევა, ანუ შეტყობინებები უნდა იყოს შენახული კლიენტები — მობილური მოწყობილობები, მათი პროექტირება საჭირო არ არის ავტორიზაციის პროექტირება საჭირო არ არის

198

როგორ იცის მომხმარებელმა მიღებული შეტყობინებები, როდესაც ის იყო ოფლაინში?

197

კოდს სწორი შესრულებისთვის: შესვლის წერტილი -- main პაკეტში არსებული main ფუნქცია package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := RecoverPassword(h) if act != exp { fmt.Printf("შეცდომა: ელოდებოდა %q, მიიღო %q\n", exp, act) ok = false } } if ok { fmt.Println("ყველა ტესტი წარმატებით ჩაიარა") } }

194

შარდირების რა არის და რა მიზნით გამოიყენება? როგორ შევარჩიოთ შარდირების გასაღები ტაქსის სერვისის ცხრილებისთვის (მძღოლები, მომხმარებლები, შეკვეთები)?

193

რა არის HTTPS? როგორ განსხვავდება HTTP-დან? როგორ იცავს 'შუალედური ადამიანი' თავდასხმებისგან?

192

ახლა რა გსურთ უფრო მეტად: პროდუქტის ან პლატფორმის განვითარება?

192

რა განსხვავებაა პროცესებს, ნაკადებს და goroutines-ებს შორის Go-ში?

191

Шарт 3 ұғым бар: пайдаланушы, чат, хабарлама • Пайдаланушының аты және тіркелу күні бар • Чаттың аты және құру күні бар • Хабарламаның мәтіні, авторы және құру күні бар • Пайдаланушы бір уақытта бірнеше чатта болуы мүмкін • Хабарлама міндетті түрде чатқа тиесілі болуы керек, ол бір уақытта бірнеше чатқа тиесілі бола алмайды • Ауданды кестелер түрінде сипаттау керек -- тарату -- message_count в чаттарда лимит 100 --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 );

191

SELECT * c.id, -- ყველა მომხმარებლის სახელით ($1) ყველა ჩატის არჩევა (c.id, c.name) where text > 'abc'

190

საერთო ჯამში ისაუბრე პროექტზე — რა იყო ეს საბოლოო მომხმარებლისთვის?

189

SQL სვეტების დაწერა, რათა გამოიტანოთ ავტორები, რომლებსაც მეტი 10 წიგნი აქვთ (ცხრილები: ავტორები, წიგნები, ბევრი-კი-მრავალი ურთიერთობა)

187

როგორ მოკვდინოთ პროცესი Linux-ში? რა უნდა გააკეთოთ, თუ kill pid არ ეხმარება?

185
/4