Golang
Терминалдарды текшерүүдө ар бир URL үчүн өзүнчө goroutine түзүү керекпи?
Эмне үчүн иш өндүрүшкө даяр деп ойлойсуз?
Өз техникаңыз менен иштегиңиз келеби же иш берүүчүнүн техникасы керекпи?
Goroutine менен агымдын айырмасы эмнеде?
Чыгаруу процесси кандайча иштейт? Соңку чыгаруу сиздин катышууңуз менен кандай өттү?
Kubernetesте REST API сервери (код сактагычы) иштей башташы үчүн эмне кылуу керек?
Scrum иш-чаралары эмне?
Go-дан мурун кайсы программалоо тилдери менен иштедиңиз жана качан программалоо менен алектендиңиз?
Кайсы критерийлер боюнча жаңы компанияны тандайсың? Эмне иште маанилүү болот?
Маалыматтар базасындагы көрсөткүчтөр жана алардын көп болушунун кемчиликтери жөнүндө айтып бериңиз.
Go-догу контекст жөнүндө айтып бер: эмне үчүн колдонулат, кантип иштейт болгуу?
Эмне сиз үчүн иште маанилүү: чоң компанияда так жана расмий тапшырмаларбы же кичи компанияда жогорку деңгээлде өз алдынчалык жана чыгармачылыкпы? Кантип тапшырмалар сизди көбүрөөк кызыктырат: жогорку белгисиздик деңгээли менен же сызыктуу код жазуу менен?
Процедура түзүңүз жана андан SELECT жасаңыз.
Кандай көйгөйлөр пайда болушу мүмкүн жалпы эс тутумду агымдар менен колдонууда? Race condition деген эмне?
Масштабдуу билдирүү системасын долбоорлоо, ал 150 миллион колдонуучуну, 75 миллион DAU, 225 миллион MAU, 1.2 миллион окуу / 300k жазуу QPS, 5 миллион бир убакта иштеп жаткан колдонуучу, жылына 60 PB жаңы маалымат, жылдык өсүш 30%, P99 <200 мс окуу үчүн, <300 мс жазуу үчүн, SLA 99.95%: КОНТЕКСТ WhatsApp сыяктуу бөлүштүрүлгөн билдирүү системасын долбоорлоо керек, ал 1:1 жана топтук чаттарды колдойт, билдирүүлөрдү жеткирүүнү камсыздайт, колдонуучулардын онлайн абалдарын көрсөтөт жана мультимедиалык файлдарды (сүрөттөр, видеолор, аудио) өткөрөт. Система жогорку жеткиликтүүлүк жана төмөн кечигүү менен камсыз кылышы керек, жогорку параллелизмди колдойт жана глобалдык деңгээлде масштабдай алат. Функционалдуу талаптар - Жеке (1:1) жана топтук чаттарды колдоо, катышуучуларды кошуу/алып салуу мүмкүнчүлүгү менен - Тексттик билдирүүлөрдү жана мультимедиалык файлдарды жөнөтүү жана кабыл алуу Нефункционалдуу талаптар: - Кызматтар же кардарлар деңгээлинде end-to-end шифрлөө так ишке ашырылбайт, жалпы белгилөө менен гана. - chat_id же user_id боюнча базалардын sharding жана репликациясы так сүрөттөлбөйт, масштабдуулук жана каталарга туруктуулук үчүн. - Offline билдирүүлөрдүн синхрондоштуруу жана жеткирүү маалымдамалары үчүн так компонент же механизм жок. - Жүктүн балансировкасы базалар жана кызматтар арасында, өзгөчө чокулук жүктөөлөрдө, кандай ишке ашырылары так эмес. **Маанилүү эскертүүлөр:** (Диаграмма Load Balancer, API Gateway, Message Queue, Service, Cache, Database, Object Storage жана CDN менен архитектураны көрсөтөт)
package main import ( "fmt" "time" ) func main() { ch := make(chan int) go func() { ch <- 1 }() time.Sleep(time.Millisecond * 500) close(ch) for i := range ch { fmt.Println(i) } time.Sleep(time.Millisecond * 100) }
Сүрөт менен контейнердин айырмасы эмнеде?
Маған суроолоруң барбы?
// товарлар таблицасы: // ID | cnt_view // ----------- // 1 | 100 // эки колдонуучу бир убакта 1 номери менен товарды карай башташты // жана биздин базада 2 параллел транзакция ишке киргизилди // натыйжа кандай болот? postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
Go-догу функция менен методтун айырмасы эмнеде? Эстелик менен иштөө жагынан техникалык айырма эмнеде?