Golang
Պատմեք ձեր աշխատանքային փորձի մասին: Ինչու հեռացաք ընկերությունից: Ինչու եք ցանկանում փոխել ձեր ներկայիս աշխատանքը: Ի՞նչ էր ձեր դերը վերջին նախագծում:
Եթե AddTask-ում օգտագործվի RLock, ապա ինչպես կվարվեն երկու համաժամանակյա AddTask կանչերը: Նրանք միմյանց կխոչընդոտեն?
Կա՞ր կոնֆլիկտային իրավիճակ գործընկերոջ հետ, երբ կարծիքները չհամընկնեցինք։
Ինչպե՞ս իրականացվեց դիպլոյը: Ինչո՞վ էինք այն տեղադրում Kubernetes-ում:
Ինտերֆեյսները պրակտիկայում որտեղ են օգտակար? Տվեք իրական օրինակ։
Պատմեք, ինչ է տեղի ունենում վերջում — ինչպես ենք մենք հավաքում բուֆերը?
Ինչպես են աշխատում գորուտինները (GMP մոդել)?
Ինչքա՞ն հարմար է աշխատանքային գրաֆիկը 10-ից մինչև 19-ը:
Ծառայությունը կարդում էր տվյալներ Kafka-ից, դրանք հարուստ էր դարձնում Redis-ից տվյալներով — և հետո ինչ էր անում?
Որտե՞ղից կսկսեիք այս մեթոդում pagination-ի իրականացմանը:
Ի՞նչ են ձեր աշխատավարձի սպասումները։
Հիմա պատրաստ եք գրել երկու լեզուներով՝ PHP և Go?
Ինչպես են աշխատում քարտեզները Go-ում?
Դուք կարգավորել եք հետևողականությունը?
Հաճախորդը կարող է ուղիղ հոսել ձայնը S3-ից՝ CDN-ի միջոցով, ինչպես պատկերների դեպքում՝ բեռնելով ամենամոտ CDN-ին ըստ աշխարհագրական դիրքի։
Արդյո՞ք ճիշտ է, որ B-թաղանթային ինդեքսը PostgreSQL-ում ձգտում է լայնանալ:
Եթե դուք պահպանում եք, ինչ կփոխեիք Go-ում?
Ինչու է ընտրվել PostgreSQL-ը գրառումների պահեստավորման համար: Ինչպես հասկանալ, որ ինչ բեռների դեպքում որ տեխնոլոգիան կարող է աշխատել առանց շարդինգի և ռեպլիկացիայի (Postgres, Kafka, Redis, ծառայություն Go-ում)?
Ով էր զբաղվում ճարտարապետությամբ թիմում?
// GetUsersList օգտագործում է օգտվողների ցանկը։ (մատչելի է մոտ 1 միլիոն օգտվող տվյալների բազայում) // Օգտագործվում է ադմինիստրատիվ պանելում օգտվողների ցուցակը ցուցադրելու համար։ Եթե isActive = true, վերադարձվում են միայն ակտիվ օգտվողները։ func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("գործողության սխալ օգտվողների ցանկը ստանալիս") } var users []User // Լրացրեք օգտվողների մասին տեղեկությունները։ for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Ստացեք օգտվողի էլփոստի ցանկը err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("գործողության սխալ օգտվողների ցանկը ստանալիս") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Ստացեք պրոֆիլի տեղեկատվությունը VK API-ից profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("գործողության սխալ օգտվողների ցանկը ստանալիս") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("գործողության սխալ օգտվողների ցանկը ստանալիս") } }