Fitnesa klubu apmeklējumu analīze Jūs strādājat kā analītiķis fitnesa klubu tīklā. Jums ir informācija par lietotāju apmeklējumiem un viņu iegādātajām abonementiem. Ir jāanalizē abonementu efektivitāte. Aprēķiniet katra abonementa veida: • kopējo lietotāju skaitu, kuri ir izmantojuši šo abonementa veidu. Ņemiet vērā tikai unikālos user_id; • kopējo apmeklējumu skaitu ar šo abonementu. Ņemiet vērā visus lietotāju apmeklējumus ar šo abonementu; • šo abonementa lietotāju daļu procentos no kopējā lietotāju skaita (noapaļotu līdz vienam ciparam aiz komata). Lai aprēķinātu daļu, izmantojiet šo abonementa lietotāju skaitu attiecībā pret kopējo unikālo lietotāju skaitu. Katram lietotājam var būt tikai viens abonements. Rezultātu kārtojiet pēc abonementa veida alfabētiskā secībā. Ievades formāts Abonementu tabula: • membership_id (int) — unikāls abonementa identifikators • user_id (int) — lietotāja identifikators • membership_type (text) — abonementa veids Apmeklējumu tabula: • visit_id (int) — apmeklējuma unikāls identifikators • user_id (int) — lietotāja identifikators • visit_date (timestamp) — apmeklējuma datums un laiks Dati nesatur tukšas vai nepareizas vērtības. Izvades formāts Vaicājumam jāatgriež tabula ar laukiem šādā secībā: • membership_type (text) — abonementa veids • users_count (int) — unikālo lietotāju skaits ar šo abonementa veidu • total_visits (int) — kopējais apmeklējumu skaits ar šo abonementu • user_share (numeric) — šo abonementa lietotāju daļa procentos no kopējā lietotāju skaita (noapaļota līdz 1 ciparam aiz komata) Rezultāts ir sakārtots pēc abonementa veida alfabētiskā secībā.
Data Engineer
Vai jūs pazīstat Domain Driven Design (DDD) metodoloģiju? Ja jā, dalieties piemēros tās piemērošanā jūsu projektos.
Kāpēc sekojošā vaicājuma neizmantos indeksu, ja tabulā records (id) ir izveidots parasts B-Tree indekss pēc id? select * from records where id % 2 = 0 - Id nepieciešams GIN tipa indekss - Indeksi nedarbojas ar izteiksmēm WHERE - % ir salīdzināšanas operācija, ne filtrēšana - limit un offset ir obligāti optimizācijai ar indeksu - Vaicājums piekļūst skaitliskajam laukam, ne teksta laukam
Kā noņemt submoduli un ar to saistītās failus no projekta? git submodule remove <submoduļa-ceļš> git rm --cached <submoduļa-ceļš>; noņemiet sekciju no .gitmodules; git commit git clean --submodules <ceļš> git submodule delete <ceļš>
Kura izteiksme vietā [...] automātiski novedīs pie indeksa izveides? Mobilās platformas ir horizontāla koda ritināšana create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)
Ziņojums loģistikas uzņēmumam Jūs esat loģistikas uzņēmuma analītiķis, kurš uzrauga noliktavu operāciju uzskaiti. Jums jāizstrādā ziņojums par katra noliktavas efektivitāti. Katrā noliktavā aprēķiniet: • kopējo operāciju skaitu (count_operations); • noliktavā apstrādāto preču kopējo daudzumu (sum_quantity); • vidējo operācijas apstrādes laiku (avg_processing_time), ņemot vērā tikai operācijas ar norādīto laiku (ne NULL), noapaļotu līdz veselam skaitlim; • maksimālo un minimālo preču daudzumu, apstrādātu vienā operācijā (max_quantity, min_quantity); • katra veida operāciju skaitu («piegāde», «sūtīšana», «pārvietošana») atsevišķās kolonnās: supply_operations, shipment_operations, transfer_operations. Filtrējiet noliktavas, kuru kopējais operāciju skaits ir lielāks par 2 un vidējais apstrādes laiks nepārsniedz 60 minūtes. Rezultātu kārtojiet pēc noliktavas ID augošā secībā. Ievades formāts Operāciju tabula: • operation_id (int) — operācijas unikālais identifikators • warehouse_id (int) — noliktavas identifikators • operation_type (text) — operācijas veids: «piegāde», «sūtīšana», «pārvietošana» • quantity (int) — preču daudzums operācijā • operation_date (timestamp) — operācijas datums un laiks • processing_time (int) — operācijas apstrādes laiks Kolonna processing_time var saturēt izlaistus datus. Izvades formāts Vaicājumam jāatgriež tabula ar šādiem laukiem kārtībā: • warehouse_id (int) — noliktavas unikālais identifikators • count_operations (int) — kopējais veiktu operāciju skaits noliktavā • sum_quantity (int) — kopējais apstrādāto preču daudzums noliktavā • avg_processing_time (numeric) — operācijas vidējais apstrādes laiks (minūtēs), ņemot vērā tikai ne NULL laiku, noapaļots līdz veselam skaitlim • max_quantity (int) — lielākais apstrādāto preču daudzums vienā operācijā • min_quantity (int) — mazākais apstrādāto preču daudzums vienā operācijā • supply_operations (int) — «piegādes» operāciju skaits • shipment_operations (int) — «sūtīšanas» operāciju skaits • transfer_operations (int) — «pārvietošanas» operāciju skaits
Dar procesa darba ar git bisect, jūs saskārāties ar commit, kuru nav iespējams pārbaudīt nepieciešamās vides trūkuma dēļ. Ko darīt šajā situācijā? - Atkārtojiet komandu git bisect start ar citiem hashiem - Izlaidiet šo commit ar komandu git bisect skip - Atiestatiet bisect ar komandu git bisect reset - Atzīmējiet commit kā labu ar komandu git bisect good - Atzīmējiet commit kā sliktu ar komandu git bisect bad
Īpaša secība ar nosaukumu even_sequence tika izveidota, lai ģenerētu tikai pāra skaitļus. Ko vajag ievadīt vietā [...], lai gadījumā, ja even_column vērtība nav norādīta ievietošanas brīdī, tā tiktu ņemta no even_sequence? 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’
Vai jums ir pieredze darbā ar bibliotēku Langchain? Kādas uzdevumus jūs risinājāt ar tās palīdzību?
Izskaidrojiet, kā tehniski darbojas Git LFS un kādas priekšrocības tas sniedz salīdzinājumā ar standarta Git, strādājot ar lieliem failiem.
Ko vēlētos darīt mūsu komandā?
Kā Git Flow iesaka oficiāli formalizēt jaunu lietojumprogrammas izlaišanu? - Izveidojot jaunu issue-šakni - Izveidojot hotfix-šakni no master - Izveidojot atsevišķu release-šakni no develop - Tieši veicot commit uz master - Tieši apvienojot master ar develop
Kāda veida savienojumu jāizmanto, lai iekļautu arī tos lietotājus, kuriem nav pasūtījumu? Tabulas: users(id, name) un orders(id, user_id, created_at). CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN
Jūs atklājāt, ka galvenās Git krātuves vēsturē ir komiti, kas satur kritiskus konfidenciālus datus. Šos datus ir nepieciešams pilnībā izdzēst no visas krātuves vēstures. Novērtējiet, cik pareizi un droši būtu izmantot šo stratēģiju: izveidot jaunu commit, kas noņems konfidenciālos datus no pašreizējās failu versijas, un nosūtīt to uz main. - Pareizi, bet ne optimāli. Labāk ir izmantot git revert, lai atsauktu commitus - Pagaidu pareizi. Tā ir pagaidu risinājums, līdz tiks atrasts radikālāks veids, kā izdzēst datus - Nepareizi un nedroši. Dati tiks izdzēsti no pašreizējās versijas, bet paliks pieejami krātuves vēsturē - Nepareizi. Šis commit var radīt jaunus konfliktus ar citām zarēm - Pareizi un droši. Šī metode garantē, ka dati tiks izdzēsti un vairs neparādīsies krātuvē
Kura no zemāk minētajiem apgalvojumiem atspoguļo šādu darbību sekas no paplašinātā Git Flow un izmaiņu vēstures pārvaldības skatpunkta?
Jūs strādājat pie jaunas funkcijas dev zara. Pēkšņi ir nepieciešams ātri pārslēgties uz galveno zaru, lai ātri izlabotu pareizrakstības kļūdu README.md failā. Jums ir dažas nesaglabātas izmaiņas: src/feature.js (nesaglabātas) un styles/main.css (saglabātas). Jūs vēlaties pagaidu saglabāt visas šīs izmaiņas, lai vēlāk varētu atgriezties pie tām dev zarā. Kādu komandu secību jums būtu jāizmanto šim? 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^
Pārdojumu analīze pēc preču kategorijām mazumtirdzniecības veikalā Jūs strādājat analītiķa amatā mazumtirdzniecības veikalā. Jūsu uzdevums ir sastādīt pārdojumu pārskatu pēc preču kategorijām ar aprēķiniem: • kopējais pārdoto vienību skaits kategorijā (total_units_sold); • kopējais ieņēmums pēc kategorijas, ņemot vērā atlaides, kur atlaide tiek piemērota kā unit_price × units_sold × (1 − discount/100). Ja atlaide nav (NULL), uzskatīt to par 0%. Noapaļot līdz diviem decimāldaļas zīmēm; • vidējais pārdoto vienību skaits uz vienu pārdošanu (avg_units_per_sale), noapaļots līdz diviem decimāldaļas zīmēm; • atlaides neietverto pārdojumu daļa (no_discount_share) — pārdojumu skaits ar NULL vai 0% atlaidi, dalīts ar kopējo pārdojumu skaitu kategorijā, noapaļots līdz trim decimāldaļas zīmēm: Vispirms rezultātu sakārtojiet pēc samazināšanas pēc total_revenue, pēc tam pa augošo pēc vidējā vienību skaita (avg_units_per_sale), un beigās pēc kategorijas nosaukuma alfabētiskā secībā: Ievades formāts Pārdojumu tabula: • sale_id (int) — unikāls pārdošanas identifikators • product_id (int) — produkta identifikators • category (text) — produkta kategorija • sale_date (timestamp) — pārdošanas datums un laiks • units_sold (int) — pārdoto vienību skaits • unit_price (numeric) — vienības cena • discount (numeric) — produkta atlaide procentos, var būt NULL Atlaides kolonna var saturēt izlaidumus: Izvades formāts Vaicājumam jāatgriež tabula ar šādiem laukiem šādā secībā: • category (text) — produkta kategorija • total_units_sold (int) — kopējais pārdoto vienību skaits šajā kategorijā • total_revenue (numeric) — kopējie ieņēmumi pēc kategorijas, ņemot vērā atlaides, noapaļoti līdz diviem decimāldaļas zīmēm • avg_units_per_sale (numeric) — vidējais vienību skaits vienā pasūtījumā, noapaļots līdz diviem decimāldaļas zīmēm • no_discount_share (numeric) — atlaides neietverto pārdojumu daļa, no 0 līdz 1, noapaļota līdz trim decimāldaļām Rezultātā vispirms sakārtojiet pēc samazināšanas pēc total_revenue, pēc tam pa augošo pēc avg_units_per_sale, un beigās pēc kategorijas nosaukuma alfabētiskā secībā.
Kāda būtu efektīva stratēģija, lai novērstu ievainojamību visās zarēs ar minimālu projekta darbības traucējumu risku? - Izveidot revert-commit sēriju problēmatiska commit un visiem, kas to daļēji laboja, pēc tam izveidot jaunu commit ar pilnu labojumu - Izveidot hotfix zareni no punkta pirms problēmatiska commita, veikt labojumus un apvienot šo zareni ar visām ietekmētajām zarēm - Izveidot vienu labojuma commit, izmantojot git revert abc123 galvenajā zarā, un pēc tam cherry-pick šo commit uz visām izlaišanas zarēm - Izmantot git bisect, lai precīzi noteiktu problēmatisko kodu, izveidot patch un piemērot to visām zarēm ar git am - Izmantot git rebase -i, lai rediģētu problēmatisko commit katrā zarā, pēc tam veikt force-push (force-push)
[vārds] laboja kļūdas un stilu tekstā: «Sveiki! Es [vārds], iepriekš lūdza pāriet uz Telegram» — neformāli, bet ar cieņu
Bot trafika daļa Antifraud komanda izstrādāja mehānismu, lai noteiktu bot trafiku vietnē: kad bots ieiet vietnē, tā URL parametriem tiek pievienots apakšvirkne "bot" (neatkarīgi no lielajiem vai mazajiem burtiem). Ja user_id vismaz vienu reizi ir identificēts kā bots decembrī, tas vienmēr jāuzskata par botu. Izpētiet lietotāju apmeklējumu datu kopu vietnē un aprēķiniet botu daļu no kopējā lietotāju skaita 2024. gada decembrī (noapaļojiet līdz vienam ciparam aiz komata). Ievades formāts Tabula visits: - event_date (date) — apmeklējuma datums - user_id (int) — unikāls lietotāja identifikators - url (string) — saite, caur kuru tika veikts apmeklējums Dati nesatur trūkstošas vai nepareizas vērtības. Izvades formāts Vaicājums jāatgriež tabula ar laukiem: - share (float) — botu daļa no kopējā lietotāju skaita decembrī, noapaļota līdz vienam ciparam aiz komata.