Fitness klublarına ziyarətlərin analizi Siz fitness klublarının şəbəkəsində analitiksiniz. İstifadəçilərin ziyarətləri və onların aldığı abunəliklər haqqında məlumatınız var. Abunəliklərin istifadəsinin effektivliyini təhlil etmək lazımdır. Hər abunəlik növü üçün 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ət 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əçi sayına nisbəti faizlə (bir ondalıq dəqiqliklə). Hesablama üçü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ə əlifba sırasına görə sıralayın. Giriş formatı Memberships cədvəli: • membership_id (int) — unikal abunəlik identifikatoru • user_id (int) — istifadəçi identifikatoru • membership_type (text) — abunəlik növü Visits cədvəli: • visit_id (int) — unikal ziyarət identifikatoru • user_id (int) — istifadəçi identifikatoru • visit_date (timestamp) — ziyarət tarixi və saatı Məlumatlar boş və ya düzgün olmayan dəyərlər içermir. Çıxış formatı Sorğu aşağıdakı sahələri sıralı şəkildə ehtiva edən cədvəl qaytarmalıdır: • membership_type (text) — abunəlik növü • users_count (int) — bu abunəlik növünə malik unikal istifadəçi sayı • total_visits (int) — bu abunəliklə əlaqəli istifadəçilərin ümumi ziyarət sayı • user_share (numeric) — bu abunəlik növünə malik istifadəçilərin ümumi istifadəçi sayına nisbəti faizlə, bir ondalıq dəqiqliklə, yuvarlaqlaşdırılmış. Nəticə abunəlik növünə görə əlifba sırasına görə sıralanır.
Data Engineer
Domain Driven Design (DDD) metodologiyası ilə tanışsınızmı? Əgər bəli isə, layihələrinizdə onun tətbiqi nümunələrini paylaşın.
Layihədən alt modul və onunla əlaqəli faylları necə silmək olar? git submodule remove <alt-modul-yolu> git rm --cached <alt-modul-yolu>; .gitmodules bölməsini sil; git commit git clean --submodules <yol> git submodule delete <yol> git remove submodule <yol>
Niyə aşağıdakı sorğu indeks istifadə etməyəcək, əgər records cədvəlində (id) sadə B-tree indeksi yaradılıbsa? select * from records where id % 2 = 0 - id üçün GIN tipi indeks lazımdır - İndekslər WHERE-də ifadələrlə işləməz - % müqayisə əməliyyatıdır, filtrasiya deyil - limit və offset indeks optimallaşdırması üçün vacibdir - Sorğu ədədi sahəyə müraciət edir, mətnə deyil
Əvəzetmə yerində [...] ifadəsi avtomatik olaraq indeksin yaradılmasına səbəb olacaq? Mobil platformada kodun üfüqi sürüşməsi mövcuddur create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)
Logistika şirkəti üçün hesabat Siz logistika şirkətində analistsiniz və anbarlardakı əməliyyatları qeyd edirsiniz. Hər bir anbarın effektivliyi haqqında hesabat hazırlamalısınız. Hər bir anbar üçün hesablayın: • ümumi əməliyyatların sayı (count_operations); • anbarın işlənmiş ümumi məhsul sayı (sum_quantity); • yalnız göstərilən vaxtla (NULL olmayan) əməliyyatları nəzərə alaraq, əməliyyatın orta işləmə vaxtı (avg_processing_time), ən yaxın tam sayıya yuvarlanmış; • bir əməliyyatda işlənmiş maksimum və minimum məhsul sayı (max_quantity, min_quantity); • hər əməliyyat növü üçün ayrı sütunlarda: tədarük əməliyyatları (supply_operations), göndərmə əməliyyatları (shipment_operations), transfer əməliyyatları (transfer_operations). Anbarları filtrləyin, onların ümumi əməliyyat sayı 2-dən çox və orta işləmə vaxtı 60 dəqiqədən çox olmayan. Nəticəni anbar ID-ə görə artan sırayla sıralayın. Giriş formatı Əməliyyatlar cədvəli: • operation_id (int) — əməliyyatın unikal identifikatoru • warehouse_id (int) — anbar ID • operation_type (text) — əməliyyat növü: «tədarük», «göndərmə», «transfer» • quantity (int) — əməliyyatda olan məhsul sayı • operation_date (timestamp) — əməliyyatın tarixi və vaxtı • processing_time (int) — əməliyyatın işləmə vaxtı Processing_time sütunu NULL dəyərlər içərə bilər. Çıxış formatı Sorğu aşağıdakı sahələrlə birlikdə cədvəl qaytarmalıdır: • warehouse_id (int) — anbarın unikal ID-si • count_operations (int) — anbar daxilində həyata keçirilmiş ümumi əməliyyatların sayı • sum_quantity (int) — anbar daxilində işlənmiş ümumi məhsul sayı • avg_processing_time (numeric) — əməliyyatın orta işləmə vaxtı (dəqiqələrdə), yalnız NULL olmayan əməliyyatlar nəzərə alınaraq, ən yaxın tam sayıya yuvarlanmış • max_quantity (int) — bir əməliyyatda işlənmiş maksimum məhsul sayı • min_quantity (int) — bir əməliyyatda işlənmiş minimum məhsul sayı • supply_operations (int) — «tədarük» növündə əməliyyatların sayı • shipment_operations (int) — «göndərmə» növündə əməliyyatların sayı • transfer_operations (int) — «transfer» növündə əməliyyatların sayı
Xüsusi ardıcıllıq yaradılıb və adı even_sequence-dir, yalnız cüt ədədlər yaradır. [...]-ın yerinə nə qoyulmalı ki, even_column dəyəri daxil edilmədikdə, dəyər even_sequence-dən götürülsün? create table some_table( even_column [...] ); integer computed as nextval('even_sequence') integer generated always as identity (start with 2 increment by 2) integer default nextval('even_sequence') integer unique default nextval('even_sequence') integer generated by even_sequence’
git bisect ilə işləmə prosesində, lazım olan mühitin olmaması səbəbindən yoxlana bilməyən commit ilə qarşılaşdınız. Bu vəziyyətdə nə etməlisiniz? - Digər hash-lərlə git bisect start əmrinə təkrar edin - Bu commit-i git bisect skip əmri ilə keçin - git bisect reset əmri ilə bisect-i sıfırlayın - Commit-i git bisect good əmri ilə yaxşı kimi işarələyin - Commit-i git bisect bad əmri ilə pis kimi işarələyin
Git LFS-nin texniki şəkildə necə işlədiyini və böyük fayllarla işləyərkən standart Git-ə nisbətən hansı üstünlüklər təqdim etdiyini izah edin.
Langchain kitabxanası ilə işləmə təcrübəniz varmı? Onun köməyi ilə hansı tapşırıqları həll etdiniz?
Komandamızda nə etmək istəyirsiniz?
Git Flow yeni tətbiqin buraxılmasını necə tövsiyə edir? - Yeni issue-şaxəsini yaradaraq - master-dən hotfix-şaxəsini yaradaraq - develop-dən ayrıca release-şaxəsini yaradaraq - Birbaşa master-şaxəsinə commit edərək - master-şaxəsini birbaşa develop ilə birləşdirərək
İstifadəçilərin hamısını və varsa, onların son sifarişlərini göstərən bir görünüş yaradırsınız. Cədvəllər: users(id, name) və orders(id, user_id, created_at). Hansı növ birləşmə istifadə edilməlidir ki, sifarişləri olmayan istifadəçilər də siyahıya daxil olsun? CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN
Git əsas deposunun tarixində kritik vacib məxfi məlumatları ehtiva edən commitlər mövcuddur. Bu məlumatların bütün tarixdən tamamilə silinməsi lazımdır. Aşağıdakı strategiyanı istifadə etməyin nə qədər düzgün və təhlükəsiz olacağını qiymətləndirin: mövcud fayl versiyasından məxfi məlumatları silən yeni commit yaradın və onu main-ə göndərin. - Düzgün, amma optimal deyil. Commitləri geri almaq üçün git revert istifadə etmək daha yaxşıdır - Şərti olaraq düzgün. Bu, məlumatların silinməsi üçün daha radikal vasitə tapılana qədər müvəqqəti həldir - Yanlış və təhlükəsiz deyil. Məlumatlar mövcud versiyadan silinəcək, amma tarixdə mövcud olacaq - Yanlış. Bu commit digər budaqlarla birləşdirmə zamanı yeni münaqişələrə səbəb ola bilər - Düzgün və təhlükəsiz. Bu üsul məlumatların silindiyindən əmin olur və yenidən depozitdə görünməz
Aşa əməliyyatların genişləndirilmiş Git Flow və dəyişikliklərin tarixinin idarə olunması baxımından nəticələrini əks etdirən aşağıdakı ifadələrdən hansı doğrudur?
Siz dev şaxında yeni bir xüsusiyyət üzərində işləyirsiniz. Birdən, README.md faylında yazım səhvini tez düzəltmək üçün main şaxına keçmək zərurəti yaranır. Sizdə bir neçə qeydə alınmamış dəyişiklik var: src/feature.js (qeydə alınmayıb) və styles/main.css (qeydə alınıb). Bütün bu dəyişiklikləri müvəqqəti saxlamaq və sonra dev şaxına qayıtmaq istəyirsiniz. Bunun üçün hansı əmrlər ardıcıllığını istifadə etməlisiniz? git stash save "WIP on feature" && git checkout main && [fix] && git checkout dev && git stash pop git stash push -m "WIP on feature" && git checkout main && [fix] && git checkout dev && git stash pop git stash && git checkout main && [fix] && git checkout dev && git stash apply git add . && git stash && git checkout main && [fix] && git checkout dev && git stash drop git commit -m "Temp commit" && git checkout main && [fix] && git checkout dev && git reset HEAD^
Perakende mağazasında məhsul kateqoriyalarına görə satışların analizi Siz pərakəndə mağazasında analistsiniz. Sizin vəzifəniz kateqoriyalar üzrə satış hesabatı hazırlamaqdır və aşağıdakı hesablamaları daxil edir: • kateqoriyada satılan ümumi vahid sayı (total_units_sold); • endirimləri nəzərə alaraq kateqoriya üzrə ümumi gəlir, burada endirim unit_price × units_sold × (1 − discount/100) kimi hesablanır. Əgər endirim mövcud deyilsə (NULL), 0% qəbul edilir. İki ondalıq yerinə yuvarlaqlaşdırın; • hər satışda satılan orta vahid sayı (avg_units_per_sale), iki ondalıq yerinə yuvarlaqlaşdırılmışdır; • endirimsiz satışların payı (no_discount_share) — NULL və ya 0% endirimli satışların sayı, kateqoriyadakı ümumi satışların sayına bölünür və üç ondalıq yerinə yuvarlaqlaşdırılır. Nəticələri əvvəlcə ümumi gəlir (total_revenue) azalan sırayla, sonra hər satışda orta vahid sayı (avg_units_per_sale) artan sırayla və ən sonda kateqoriya adlarına görə əlifba sırasına görə sıralayın. Giriş Formatı Sales cədvəli: • sale_id (int) — satışın unikal identifikatoru • product_id (int) — məhsul identifikatoru • category (text) — məhsul kateqoriyası • sale_date (timestamp) — satış tarixi və vaxtı • units_sold (int) — satılan vahidlər • unit_price (numeric) — vahid qiymət • discount (numeric) — endirim faizi, NULL ola bilər discount sütunu boş dəyərlər içərə bilər. Çıxış Formatı Sorğu aşağıdakı sahələri ehtiva edən cədvəl qaytarmalıdır: • category (text) — məhsul kateqoriyası • total_units_sold (int) — bu kateqoriyada satılan ümumi vahid sayı • total_revenue (numeric) — kateqoriya üzrə ümumi gəlir, iki ondalıq yerinə yuvarlaqlaşdırılmış • avg_units_per_sale (numeric) — hər satışda orta vahid sayı, iki ondalıq yerinə yuvarlaqlaşdırılmış • no_discount_share (numeric) — endirimsiz satışların payı (0 ilə 1 arasında dəyər), üç ondalıq yerinə yuvarlaqlaşdırılmış Nəticə əvvəlcə total_revenue azalan sırayla, sonra avg_units_per_sale artan sırayla və ən sonda kateqoriya adlarına görə əlifba sırasına görə sıralanır.
Layihənin işləməsinə minimal risklə müdaxilə etməklə bütün budaqlarda zəifliyi aradan qaldırmaq üçün hansı strategiya effektiv olardı? - Problematik commit və onu qismən düzəldən bütün commitlər üçün revert commitləri seriyası yaratmaq, sonra tam düzəliş ilə yeni commit yaratmaq - Problematik commitdən əvvəlki nöqtədən hotfix budağı yaratmaq, düzəlişlər etmək və bu budağı bütün təsirlənmiş budaqlarla birləşdirmək - Əsas budaqda git revert abc123 istifadə edərək tək bir düzəliş commit yaratmaq və sonra bu commit-i bütün buraxılış budaqlarına cherry-pick etmək - Problematik kodu dəqiq müəyyən etmək üçün git bisect istifadə etmək, yamaq yaratmaq və onu git am ilə bütün budaqlara tətbiq etmək - Hər bir budaqda problemli commit-i redaktə etmək üçün git rebase -i istifadə etmək, sonra isə zorla push (force-push) etmək
Bot trafikinin payı Anti-fraud komandası, mağaza saytında bot trafiyini müəyyən etmək üçün mexanizm hazırladı: bot saytına daxil olduqda, onun URL parametrlərinə "bot" alt sətiri (böyük/kicik hərf fərqi olmadan) əlavə olunur. Əgər user_id dekabr ayında ən azı bir dəfə bot kimi müəyyən edilibsə, həmişə bot kimi qəbul edilməlidir. İstifadəçilərin sayt ziyarətləri ilə bağlı məlumat dəstəsini araşdırın və 2024-cü ilin dekabrında ümumi istifadəçi sayına nisbətən botların payını hesablayın (bir ondalık yerə yuvarlaqlaşdırın). Daxil etmə formatı Cədvəl visits: - event_date (date) — ziyarət tarixi - user_id (int) — unikal istifadəçi identifikatoru - url (string) — keçid üçün istifadə olunan link Məlumatlar boş və ya səhv dəyərlər içermir. Çıxış formatı Sorğu aşağıdakı sahələrə malik cədvəl qaytarmalıdır: - share (float) — dekabr ayındakı ümumi istifadəçi sayına nisbətən botların payı, bir ondalık yerə yuvarlaqlaşdırılmış.
[ad] mətnindəki səhvləri və üslubu düzəltdi: «Salam! Mən [ad], əvvəllər Telegrama keçməyi istəmişdin» — hörmətlə, amma dostane