Golang
კოდი დაწერეთ worker pool-ით URL-ების სლაისის დამუშავებისთვის პარალელური HTTP მოთხოვნებით.
რა არის QUIC პროტოკოლი? რატომ შექმნეს?
რომელი პარალელური პროგრამირების ნიმუშები გეცოდინებათ? გთხოვთ, მიაწოდოთ მაგალითი Go-ს სტანდარტული ბიბლიოთეკიდან/პრაქტიკიდან სემაფორის და ახსნათ, როგორ შეიძლება გამოყენებულ იქნას არხი როგორც სემაფორი (დაკავება და გათავისუფლება).
გვითხარით გუნდს და განვითარების პროცესებს (სპრინტები, დავალებების განაწილება, კოდის მიმოხილვა).
როგორ შეიძლება ოპტიმიზაცია ჩატარდეს მონაცემთა ბაზაში ძიებაში? რა არის ინდექსები და რა არის მათი სირთულე?
როგორ მართავდით დაბრუნებებსა და გადახდებს?
რამდენი ნაკადი დაიწყებს Go-ის გეგმარებელი? და კონკრეტულად AMD EPYC-ზე 64 ბირთვით და 128 ნაკადით?
ორი სცენარის უპირატესობები და ნაკლოვანებები რა არის: დავალებების დამატება პულის დაწყებამდე და შემდეგ?
გაქვს წარმოდგენა ნაკადის და პროცესის განსხვავებაზე?
კეშის გაუქმების ტიპები. რომელებს იცნობ და რომელებს იყენებდი?
ინდექსი რა არის და რა ტიპის ინდექსები არსებობს PostgreSQL-ში?
SELECT u.id, u.name, o.id as order_id, o.amount FROM users u ? JOIN orders o ON u.id = o.user_id;
რა გასაღებები შეიძლება ჰქონდეს Map- ს Go-ში?
როგორ შევიყვანოთ 10 მილიარდი სვეტი ClickHouse-ში სწრაფად?
HAVING-ს რა მიზნით იყენებენ?
რა განსხვავებაა json.Unmarshal და json.Decoder-ს შორის, და როდის გამოიყენებთ თითოეულს?
საერთო კითხვა: მომზადება ინტერვიუზე და კითხვების წყაროები
150 მილიონი მომხმარებლის მხარდაჭერით მასშტაბირებადი შეტყობინებების სისტემის პროექტირება, რომელიც მხარს უჭერს 75 მილიონ DAU-ს, 225 მილიონ MAU-ს, 1.2M წაკითხვას / 300k დაწერას პიკ QPS-ზე, 5 მილიონ ერთდროულ მომხმარებელს, 60 PB ახალი მონაცემებით წელიწადში, 30%-იანი წლიური ზრდით, SLA 99.95%, p99 <200 ms წაკითხვისთვის, <300 ms დაწერისთვის. საკვანძო კონტექსტი აუცილებელია პროექტირება განაწილებული შეტყობინებების სისტემის, რომელიც მსგავსია WhatsApp-ის, რომელიც მხარს უჭერს 1:1 და ჯგუფურ ჩატებს, უზრუნველყოფს შეტყობინებების მიწოდებას, მომხმარებლების ონლაინ სტატუსებს და მულტიმედია ფაილების (ფოტოები, ვიდეოები, აუდიო) გადაცემას. სისტემა უნდა უზრუნველყოს მაღალი ხელმისაწვდომობა და დაბალი ლაგი, მხარი დაუჭიროს მაღალი პარალელიზმს და გლობალურად მასშტაბირდეს. ფუნქციური მოთხოვნები - მხარდაჭერა პირადი (1:1) და ჯგუფური ჩატებისთვის, მონაწილეების დამატებისა/ამოღების შესაძლებლობით - ტექსტური შეტყობინებების და მულტიმედია ფაილების გაგზავნა და მიღება არ ჩანს end-to-end დაშიფვრის მექანიზმის მკაფიო განხორციელება სერვისების ან მომხმარებლების დონეზე, გარდა ზოგადი შენიშვნის. - არ არის მკაფიო აღწერა sharding-ის და რეპლიკაციის შესახებ chat_id ან user_id-ის მიხედვით, მასშტაბურობის და შეცდომების წინააღმდეგობისთვის. - არ არსებობს მკაფიო კომპონენტი ან მექანიზმი offline შეტყობინებების და მიწოდების დადასტურებების სინქრონიზაციისთვის. - არ არის ნათელი, როგორ ხორციელდება დატვირთვის ბალანსი მონაცემთა ბაზებსა და სერვისებს შორის, განსაკუთრებით პიკების დროს. **მნიშვნელოვანი საკითხები, რომლებიც უნდა განიხილოს:**
თუ საჭიროა Kafka-ს უარის თქმა და მას სხვა შეტყობინების ბროკერის შეცვლა, რა მოხდება? როგორ იზოლირებთ Kafka-ს გარეგან სერვისებიდან?
რატომ არ ბრუნდება შეცდომები მეთოდში Process? საჭიროა გამოსწორება და სრული მუშაობის კოდის გაგზავნა.