Golang
Қандай жағдайларда оқшаулау деңгейін көтересіз? Қашан Serializable қолдану керек?
Репозиторий қабаты не көре алады?
Жаңа компанияны таңдау кезінде қандай критерийлерді қолданасыз? Жұмыста не маңызды болады?
Құрылым өрісін JSON-ға түрлендіру әдісін қалай қайта анықтау керек?
Go тіліндегі goroutine жоспарлаушы туралы не білесіз?
Қызмет архитектурасын қалай дұрыс құру керек: командаларды, домендік объектілерді, қателерді қайда сақтау керек?
Жабық каналға жазғанда, жабық каналдан оқығанда, nil каналынан жазғанда/оқығанда не болады?
Go тілінде defer кілт сөзі не білдіреді?
Apache Kafka архитектурасы: негізгі компоненттері, өндірушілер мен тұтынушылар қалай байланысады? Rebalancing деген не? Хабарламаларды ретті оқуды қалай қамтамасыз етуге болады?
Ағымдағы командаңыз бен жобаңыз туралы айтыңыз.
Go тілінде қандай линтерлер қолданасыз және оларды қайда іске қосасыз?
Сіз архитектуралық тапсырмалармен айналысқан кезіңіз болды ма? Архитектуралық шешімдер қалай қабылданды?
PostgreSQL-де Xmin және Xmax деген не екенін білесің бе?
issued_at өрісі не білдіреді?
Қашан жұмысқа шығуға дайынсыз? Жұмыстан кеткеннен кейін демалу уақытыңыз керек пе?
Жұмыс барысында әріптестермен қақтығыстар болды ма немесе өз ойыңыз бар, ал әріптесіңіз басқа ойда болды ма?
Идемпотенттілік дегеніміз не? Идемпотентті кілт қажет болатын жағдайды мысал келтіріңіз.
Go тілінде қоқыс жинау туралы айтыңыз.
/* Екі PostgreSQL сервері бар: * PROD - OLTP сервері, * STATS - ұзақ аналитикалық сұраулар үшін сервер. Қазіргі сервердегі prod дерекқорында үлкен (10Tb) кесте бар: CREATE TABLE profiles( id SERIAL, data JSONB ) Кестеде "жарықтар" болуы мүмкін, яғни кейбір `id` пропущены болуы мүмкін. PROD-тан STATS-қа profiles кестесін көшіру үшін бағдарлама жазу керек. Дерекқорлармен жұмыс істеу үшін келесі интерфейстер пайдаланылады: type Row []interface{} type Database interface { // интерфейсінің жүзеге асырылуы қосылуларды қайта орнатуды біледі // SaveRows шақыруы идемпотентті io.Closer GetMaxID(ctx context.Context) (uint64, error) LoadRows(ctx context.Context, minID, maxID uint64) ([]Row, error) // [minID, maxID] SaveRows(ctx context.Context, rows []Row) error } func Connect(ctx context.Context, dbname string) (Database, error) // CopyTable // Егер full=false болса, онда деректерді алдыңғы қателік орын алған жерден жалғастыру керек // Егер full=true болса, барлық деректерді көшіру керек func CopyTable(fromName string, toName string, full bool) error { // ... өз кодыңыз } Егер `full=false` опциясы берілсе, бағдарлама алдыңғы қателік орын алған жерден деректерді көшіруді жалғастыруы керек. Егер `full=true` болса, барлық деректерді көшіру керек. **Базалық деңгей**: - деректерді бір ағынмен біртіндеп көшіру - ақаулардан қалпына келтіру (опция `full=false`) Қосымша ақпарат: - қажет болған жағдайда интерфейсті кеңейтуге болады, өз әдістеріңізді қосуға болады - қажет болған жағдайда **database/sql** пакетін тікелей пайдалана аласыз
Жергілікті түрде қайталанбайтын өндірістік қызметтегі жады ағып кетуін қалай анықтауға болады?