Gin veb çərçivəsi ilə işləmə təcrübəniz varmı? Onun köməyi ilə həll etdiyiniz vəzifələr haqqında daha ətraflı məlumat verin.
Data Engineer
İki əməliyyat mövcuddur. Birinci əməliyyat əvvəlcə bir əmri icra edir. Sonra, ikinci əməliyyat bir əmri icra edir. Daha sonra, birinci əməliyyat davam edir. Hansı ardıcıllıq qarşılıqlı bloklanmaya səbəb olar? ```sql -- birinci əməliyyat update accounts set balance = balance + 100 where id = ?; -- ikinci əməliyyat update accounts set balance = balance - 50 where id = ?; update accounts set balance = balance + 200 where id = ?; ```
PostgreSQL-də tranzaksiyaların performansını minimum izolasiya səviyyəsi ilə optimallaşdırmaq lazımdır ki: • paralel tranzaksiyalar bir-birinin tamamlanmamış dəyişikliklərini görə bilsin; • "kirlənmiş oxuma" (dirty read) mümkün olsun. Bu məqsədə çatmaq üçün tranzaksiya üçün hansı izolasiya səviyyəsini göstərmək lazımdır? PostgreSQL-də dirty read mümkün deyil repeatable read read uncommitted read committed serializable
Uzaqdakı şaxədən işləri necə bərpa etmək olar? `git checkout hotfix/missing-footer` əmri ilə cəhd etdiyinizdə şaxə tapılmadığı barədə xəta mesajı alırsınızsa.
Reklam kampaniyalaridagi foydalanuvchi faoliyatini tahlil qilish Kompaniya reklama kampaniyalari bilan bog'liq voqealarni hisobga oladi. Ikkita jadval taqdim etilgan: • campaigns — reklama kampaniyalari ro'yxati, ularning identifikatorlari va nomlari bilan; • events — kampaniyalarga oid foydalanuvchi voqealari, voqea turi (masalan, 'click' (bosish)) va vaqt bilan. Har bir kampaniya uchun quyidagi ko'rsatkichlar bilan hisobot tayyorlash kerak: • Umumiy voqealar soni. • Voqealarni amalga oshirgan yagona foydalanuvchilar soni. • Kampaniya bo'yicha birinchi va oxirgi voqea vaqti. • Kampaniya reytingi, umumiy voqealar soniga ko'ra kamayish tartibida. Reyting har bir satrga ma'lumotlar asosida berilgan raqamdir. Agar ikki yoki undan ortiq satrda bir xil qiymat bo'lsa, ular bir xil reyting oladi, ammo keyingi reyting o'tkazib yuboriladi. Hisobot faqat voqeasi bo'lgan kampaniyalarni o'z ichiga oladi: voqeasi bo'lmagan kampaniyalar hisobga olinmaydi. Yakuniy hisobot avval kampaniya reytingiga ko'ra o'sish tartibida, keyin campaign_name bo'yicha alfavit tartibida bo'lishi kerak. Kirish formati • campaign_name (string) — reklama kampaniyasining nomi • start_date (timestamp) — kampaniyaning boshlanish vaqti • end_date (timestamp) — kampaniyaning tugash vaqti Eventlar jadvali: • event_id (int) — voqea uchun yagona identifikator • user_id (int) — voqea uchun yagona identifikator • campaign_id (int) — kampaniyaning yagona identifikatori • event_type (string) — voqea turi, masalan, 'click' yoki 'conversion' • event_time (timestamp) — voqea vaqti Ma'lumotlar bo'sh yoki noto'g'ri qiymatlarni o'z ichiga olmaydi. Chiqish formati So'rov quyidagi maydonlarni o'z ichiga olgan jadvalni qaytarishi kerak: • campaign_name (string) — reklama kampaniyasining nomi • total_events (int) — kampaniya bilan bog'liq umumiy voqealar soni • unique_users (int) — voqealarni amalga oshirgan yagona foydalanuvchilar soni • first_event_time (timestamp) — kampaniyaning birinchi voqeasi vaqti • last_event_time (timestamp) — kampaniyaning oxirgi voqeasi vaqti • campaign_rank (int) — umumiy voqealar soniga ko'ra kampaniya reytingi Ma'lumotlarni kampaniya reytingiga ko'ra o'sish tartibida, va keyin campaign_name bo'yicha alfavit tartibida saralang.
Əgər siz submodulun göstərdiyi filialı dəyişmək istəyirsinizsə, nə etməlisiniz? - Submodullar filial dəyişimini dəstəkləmir - Submodulu silin və yenidən lazım olan filial ilə əlavə edin - Submodulda filialı dəyişin və əsas depozitdə commit edin - Submodulda lazım olan filialda git checkout icra edin və dəyişiklikləri əsas depozitdə qeyd edin - git submodule update --branch əmri ilə yeni filialı göstərin
İndiki zamanda iş təkliflərini niyə nəzərdən keçirirsiniz?
Şəkildə göstərilən cədvəl quruluşu yaradılıb. Şəkildə göstərilən sorğunu icra etmək lazımdır. [...]-in yerinə hansı join növü istifadə edilməlidir ki, nəticədə type = 'table_aw' üçün 'naming' sütunu doldurulsun və type = 'table2' üçün 'serial_number' sütunu doldurulsun? create table multirelation( type varchar not null, entity_id integer not null ); create table table_aw( id integer primary key, naming varchar not null ); create table table2( id integer primary key, serial_number varchar not null ); -- cədvəl strukturu select m.type,m.entity_id, ta.naming, t2.serial_number from multirelation m [...] join table_aw ta on m.entity_id = ta.id and m.type='table_aw' [...] join table2 t2 on m.entity_id = t2.id and m.type='table2'; -- sorğu Boş buraxın inner cross right left
Xüsusiyyət filialı bir neçə uğursuz şəkildə qeyd olunmuş config.yaml faylı olan commitlər ehtiva edir və daha sonra düzəldilmişdir. Nəticədə, komanda gizli konfiqurasiya ayarlarının açıqlanmasının qarşısını almaq üçün fayldakı bütün dəyişiklikləri tarixdən tamamilə silməyə qərar verdi. Filialın ilkin vəziyyəti (git log --oneline çıxışı): 1 a4b5c67 (HEAD -> feature) Xidmət məntiqini yenidən qurdu 2 d9f0a11 config.yaml yazım səhvini düzəltdi 3 7c1d3f2 Müvəqqəti config.yaml əlavə etdi 4 e3a98cd İlkin commit 5 Tarixi yenidən yazaraq config.yaml faylını siləndən sonra, git log --oneline çıxışı belə oldu: 6 b9e7d42 (HEAD -> feature) Xidmət məntiqini yenidən qurdu 7 41f3b60 İlkin commit Komanda hansı əməliyyatı həyata keçirdi? - git revert əməliyyatını config.yaml olan commit üzərində həyata keçirdi - git filter-branch --index-filter "git rm --cached config.yaml" -- --all əməliyyatını yerinə yetirdi - git rebase -i əməliyyatını, fayl dəyişiklikləri olan commitləri silərək həyata keçirdi - git commit --amend və git push --force əməliyyatlarını istifadə etdi - git cherry-pick əməliyyatını, config.yaml olmadan yeni bir filial yaratmaq üçün istifadə etdi
Nə baş verdi və işi necə bərpa etmək olar?
Zəhmət olmasa, bu vakansiya ilə niyə maraqlandığınızı bildirin.
Bildirişlər cədvəlində status sahəsi var və onun dəyərləri: 'sent', 'delivered', 'read'. Hansı sorğu düzgündür? select * from notifications where status like '%sent%' order by created_at desc limit 5 select * from notifications where status = 'read' order by created_at desc limit 5 select * from notifications order by status desc limit 5 select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5 select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5
PostgreSQL-də, sətirin versiya başlığı xmax parametrini əhatə edir. Bu, tranzaksiya idarə edilməsində hansı rolu oynayır? - Cədvəldə unikal sətir identifikatoru yaratmaq üçün - Digər tranzaksiyalar tərəfindən sətirin görünürlüğünü yoxlamaq üçün - Sətiri silən və ya yeniləyən tranzaksiya nömrəsini göstərmək üçün - Bir neçə tranzaksiya tərəfindən eyni zamanda edilən dəyişikliklərə qarşı sətiri bloklamaq üçün - Rəqəmsal sütunda yazıla biləcək maksimum dəyəri göstərmək üçün
Proyektning asosiy katalogidan qaysi buyruq docs/ submodulini masofadagi repozitoriyadan eng so'nggi versiyasiga yangilash va bu o'zgarishni commit uchun tayyorlash uchun ishlatilishi kerak? git fetch docs/ && git merge docs/FETCH_HEAD git pull --recurse-submodules git submodule update --remote docs/ cd docs/ && git pull && cd .. && git commit -am "Yangilash" git submodule update --init docs/
Bir neçə faylı sürətli şəkildə son commit versiyasına qaytarmaq istəyirsinizsə, digər dəyişiklikləri təsir etmədən. Necə hərəkət etməli? git reset --hard HEAD Faylları sil və yenidən yarad git fetch və git merge git revert HEAD git checkout HEAD^ <fayl1> <fayl2>
Fitness klublarında ziyarətlərin analizi Siz fitness klublarının şəbəkəsində analistsiniz. İstifadəçilərin ziyarətləri və onların aldığı abunəliklər haqqında məlumatlarınız var. Abunəliklərin istifadəsinin effektivliyini təhlil etmək lazımdır. Hər abunəlik növü üçün aşağıdakıları hesablayın: • Bu abunəlik növünü istifadə edən ümumi istifadəçi sayı. Yalnız unikal user_id-ləri nəzərə alın; • Bu abunəliklə edilən ümumi ziyarətlərin sayı. Bu abunəliklə əlaqəli bütün istifadəçi ziyarətlərini nəzərə alın; • Bu abunəlik növündəki istifadəçilərin ümumi istifadəçilər sayına nisbətini faizlə (bir ondalıq ilə yuvarlaqlaşdırılmış). İstifadəçilərin nisbətini hesablamaq üçün, bu abunəlik növünə malik istifadəçi sayını ümumi unikal istifadəçi sayına bölün. Hər istifadəçi yalnız bir abunəyə sahib ola bilər. Nəticəni abunəlik növünə görə alfabetik sırayla sıralayın. Giriş formatı Cədvəl memberships: • membership_id (int) — abunəlik unikal identifikatoru • user_id (int) — istifadəçi unikal identifikatoru • membership_type (text) — abunəlik növü Cədvəl visits:
Nə baş verdi və işi necə geri qaytarmaq olar?
Əvvəlki Scala layihələrində hansı layihələrdə işlədiniz? Bu texnologiyada konkret tapşırıqları və nailiyyətləri paylaşın.
Aşağıdakı sorğunun düzgünlüyü haqqında nə deyə bilərik? select * from sessions where ended_at is null and status != 'pending';
İki əlaqəli cədvəl var: first_table və second_table. TRUNCATE TABLE second_table CASCADE; əmri icra etmək istəyirsiniz; bu, second_table cədvəlindən bütün sətirləri və onlara bağlı olan bütün məlumatları siləcək. Bu əmrin icrası hansı nəticələrə səbəb ola bilər? create table first_table ( id integer primary key ); create table second_table ( id serial primary key, first_table_fk integer references first_table(id) ); - second_table_id_seq ardıcıllığı başlanğıc dəyərinə sıfırlanacaq. - second_table ilə xarici açar vasitəsilə əlaqəli olan first_table-dəki bütün qeydlər silinəcək. - mövcud indekslər second_table üçün silinəcək və avtomatik olaraq yenidən yaradılacaq. - sonrakı əlavə etmələrdə, id üçün standart dəyər yanlış bir dəyərlə başlaya bilər. - Xəta baş verəcək, çünki CASCADE əmri xarici açar olan cədvəllər üçün qadağandır.