Golang
Ինչպես ուղղել race condition-ով կոդը, որպեսզի այն դետերմինիստիկ աշխատի?
Ինչու եք անցել [ընկերություն]-ից [ընկերություն]։
Ավելին պատմեք ձեր փորձի մասին՝ ինչ էր դա նախագիծը և ինչ էր ձեր պատասխանատվությունը։
Ի՞նչ չափանիշներով եք ընտրում ընկերությունները, ինչի վրա եք հիմնվում:
Որ տվյալները չպետք է տեղադրվեն կեշում?
Կարող ենք փոխանցել slice-ը որպես պարամետր ֆունկցիային?
Պատմիր տվյալների բազաների մասին — ինչի հետ էիր աշխատել և հիմա ինչի հետ աշխատում ես?
Հարց դանդաղ ծառայության մասին Օրինակ՝ պատվերի ստեղծումը։ Կա ծառայության դիմում և պատասխան, այս երկու գործողությունների միջև մենք պահում ենք վերլուծության մեջ պատվիրած ապրանքները (օրինակ՝ ապրանքների ժողովրդականությունը հաշվելու համար): Վերլուծական ծառայությունը երբեմն աշխատում է դանդաղ կամ ժամանակավրեպ է, և մենք ժամանակին պատասխան տալու հնարավորություն չունենք, պատվերները կորցնում ենք: Ի՞նչ անել, որ այլևս չկորցնենք պատվերներն ու գումարը: Նախագծեք, թե ինչպես կարելի է պատվերը և վերլուծությունը կատարել პარալել։
Նկարագրեք իրավիճակը՝ դուք չեք կարող գտնել ընդհանուր լեզու ձեր թիմի թեստավորի հետ, ով մշտապես 'ձեզ բարկացնում է'. Ինչպե՞ս կկապվեք նրա հետ։
Ի՞նչ են հաղորդագրության բրոքերները: Որոնք եք ճանաչում: Ինչպե՞ս է RabbitMQ-ն տարբերվում Kafka-ից։
Եթե անհրաժեշտ լինի հրաժարվել Kafka-ից և փոխարինել նրան այլ հաղորդագրության բրոքերի, ինչ կլինի? Ինչպես առանձնացնել Kafka-ն արտաքին ծառայություններից?
Ինչպես է աշխատում թողարկման գործընթացը: Ինչպես անցավ վերջին թողարկումը ձեր մասնակցությամբ?
Ի՞նչ պետք է անել, որպեսզի REST API սերվերը (կոդի պահոցը) սկսի աշխատել Kubernetes-ում։
Խոսիր graceful shutdown-ի մասին՝ ի՞նչ է դա, ինչ է տեղի ունենում դրա ժամանակ, ինչպես է կոչվում: Ի՞նչ գործընթացներ է իրականացնում ծառայությունը Kubernetes-ում SIGTERM ստանալուց հետո։
Որտե՞ղ եք կարծում, սկսվում է highload-ը: Ինչպե՞ս սահմանել highload և ոչ-highload սահմանը։
Դուք ունեք ծառայություն, որը ստեղծում է շատ goroutines: Ինչպե՞ս կսահմանեք միաժամանակ աշխատող goroutines-ների քանակը։
Ձեր ծառայությունը API էր, որը օգտագործում էին այլ ծառայություններ: Redis-ում դուք պահում էիք տվյալներ լրացման համար — ինչու չէիք դիմում ամեն հարցում գրացուցակների ծառայությանը (պահեստների մասին և այլն)?
Ի՞նչ է համակարգային կանչը (syscall):
Ավելացրեք ավելի մանրամասն՝ Go նախագծերի մասին
Երբ փորձում եք առանց լրացուցիչ վերահսկողության սկսել շատ մեծ թվով goroutines (օրինակ, տասնյակ հազարներ), ինչն է ամենահավանականը տեղի ունենալ? - Հիմնական խնդիրն առաջանում է գլոբալ mutex-ի փակման պատճառով runtime-ի ներսում, ինչը կհանգեցնի ծրագրի ամբողջական կանգառի - Go պլանավորիչը կկատարի goroutine-ները փոքր խմբերով հերթականությամբ, այնպես որ դրանց թվի աճը գրեթե չի ազդի հիշողության սպառման վրա - Մասամբ ստեղծումը կարող է հանգեցնել զգալի հիշողության սպառման և պլանավորողի լրացուցիչ ծախսերի; նման դեպքերում, նպատակահարմար է օգտագործել worker pool - Եթե goroutine-ների թիվը գերազանցում է տրամաբանական պրոցեսորների թիվը, Go-ն ինքնաբերաբար կսկսի մերժել նոր goroutine-ների մեկնարկը Panic-ով