Golang
// Nepieciešams īstenot funkciju, kas komprimē virkni, izmantojot run-length encoding algoritmu. // Ja sastopas vienādu vērtību virknējums, tas tiek aizstāts ar virknējuma garumu un vērtību. func Encode(s string) string { panic("nepildīts") }
N elementu masīva in-place ātrās kārtošanas vidējās asimptotiskās laika un papildu atmiņas sarežģītība Laikam O(n log n), steka atmiņai O(log n) Laikam O(n log n), atmiņai O(1) Laikam O(n^2), steka atmiņai O(log n) Laikam O(n log n), atmiņai O(n)
Pastāsti par savu darba pieredzi un ar ko nodarbojies.
Vai vari sniegt piemēru par patstāvīgu darbu — kāds bija maksimālais laiks, ko jūs strādājāt pie viena uzdevuma vai problēmas?
Kas ir observability? Ko ietver šī koncepcija un kas ir nepieciešams, lai pakalpojums būtu gatavs ražošanai? Kāpēc ir nepieciešamas metriku, trace' un logu?
func (r *OrderRepository) GetActiveOrderIDs(ctx context.Context, offset, limit int) ([]uint32, error) { var ( res []uint32 args []interface{} ) query := `SELECT id FROM "order" WHERE is_terminated = false LIMIT $1 OFFSET $2;` args = append(args, limit, offset) rows, err := r.slave.Query(ctx, query, args...) if err != nil { return nil, err } for rows.Next() { var orderID uint32 if err = rows.Scan(&orderID); err != nil { return nil, err } res = append(res, orderID) } return res, nil }
Vai jums pašreiz ir citas intervijas vai piedāvājumi?
Mērogo ziņojumu sistēmas projektēšana, kas atbalsta 150 miljonus lietotāju, 75 miljonus DAU, 225 miljonus MAU, 1,2 miljonus lasījumu / 300 tūkstošus rakstu QPS, 5 miljonus vienlaicīgu lietotāju, 60 PB jaunu datu gadā, 30% gada pieaugumu, P99 <200 ms lasīšanai, <300 ms rakstīšanai, SLA 99,95%. KONTEKSTS Nepieciešams izstrādāt izplatītu ziņojumu sistēmu, līdzīgu WhatsApp, kas atbalsta 1:1 un grupu tērzēšanu, nodrošina ziņojumu piegādi, parāda lietotāju tiešsaistes statusus un pārsūta multimediju failus (attēlus, video, audio). Sistēma jānodrošina ar augstu pieejamību un zemu latentumu, jāatbalsta augsts paralēlisms un jāpaplašina globālā mērogā. FUNKCIONĀLIE PRASĪBAS - Atbalsts personīgiem (1:1) un grupu tērzēšanas ar iespēju pievienot/noņemt dalībniekus - Teksta ziņojumu un multimediju failu sūtīšana un saņemšana NEFUNKCIONĀLIE PRASĪBAS - Nav skaidras end-to-end šifrēšanas īstenošanas pakalpojumu vai klientu līmenī, izņemot vispārēju piezīmi. - Nav skaidri aprakstīts sharding un replikācija datu bāzēs pēc chat_id vai user_id, lai nodrošinātu mērogojamību un kļūdu tolerance. - Nav skaidrs komponentu vai mehānisma offline ziņojumu sinhronizācijai un piegādes apliecinājumiem. - Nav skaidrs, kā tiek veikta slodzes balansēšana starp datu bāzēm un pakalpojumiem, īpaši plūsmu laikā. **Svarīgi aspekti, kas jāņem vērā:** (Diagrama rāda arhitektūru ar Load Balancer, API Gateway, Message Queue, Service, Cache, Database, Object Storage un CDN)
Kas ir konteksts Go? Kāda ir atšķirība starp context.WithTimeout un context.WithDeadline?
Vai jūs rakstījāt Helm diagrammas un manifestus no nulles?
Kā sinhronizēt darbiniekus caur PostgreSQL (izplatīts bloķējums datu bāzē)?
7. rindā tiek secināts, ka iekšējais masīvs būs pārpildīts un tiks izveidots jauns. Kāpēc tā nolēmi?
Kas ir Outbox modelis un kā tas tiek īstenots?
Kā pārlūkprogramma attēlo lapas? Kas ir compositing?
Kāda ir pārmaiņu motivācija? Kāpēc nolēmāt ienākt tirgū?
Kādu tipu izmantot, lai īstenotu set Go valodā?
Kādas ir atšķirības starp HTTP/1, HTTP/2 un HTTP/3?
Pastāstiet par Fan-In modeli, kam tas ir nepieciešams?
Vai GeoDNS un Nginx slodzes balansētāji ir dažādas lietas?
Kuras PostgreSQL iespējas jūs plaši izmantojāt?