Анализа посећености фитнес клубова Радите као аналитичар у мрежи фитнес клубова. Имате информације о посећености корисника и купљеним претплатама. Потребно је анализирати ефикасност коришћења претплата. Израчунајте за сваки тип претплате: • укупни број корисника који су користили овај тип претплате. Узимајте у обзир само јединствене user_id; • укупни број посета са овом претплатом. Узимајте у обзир све посете корисника са том претплатом; • удел корисника ове претплате у процентима од укупног броја корисника (заокружено на један знак после запетое). За израчунавање удела користите однос броја корисника са овом претплатом и укупног броја јединствених корисника. Сваки корисник може имати само једну претплату. Распоредите резултат по типу претплате по абецедном реду. Формат улаза Табела memberships: • membership_id (int) — јединствени идентификатор претплате • user_id (int) — јединствени идентификатор корисника • membership_type (text) — тип претплате Табела visits: • visit_id (int) — јединствени идентификатор посете • user_id (int) — идентификатор корисника • visit_date (timestamp) — датум и време посете Подаци не садрже празне или неисправне вредности. Формат излаза Захтев треба да врати табелу са пољима у овом редоследу: • membership_type (text) — тип претплате • users_count (int) — број јединствених корисника са овим типом претплате • total_visits (int) — укупни број посета корисника са овом претплатом • user_share (numeric) — учешће корисника у процентима са овом претплатом од укупног броја (заокружено на 1 знак после запетое) Резултат се сортира по типу претплате по абецедном реду.
Data Engineer
Да ли сте упознати са методологијом Domain Driven Design (DDD)? Ако јесте, поделите примере њене примене у вашим пројектима.
Kako ukloniti podmodul i povezane sa njim fajlove iz projekta? git submodule remove <putanja-do-podmodula> git rm --cached <putanja-do-podmodula>; ukloni sekciju iz .gitmodules; git commit git clean --submodules <putanja> git submodule delete <putanja> git remove submodule <putanja>
Koji izraz na mestu [...] automatski će dovesti do kreiranja indeksa? Na mobilnoj platformi postoji horizontalno skrolovanje koda create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)
Zašto sledeći upit neće koristiti indeks ako je u tabeli records (id) kreiran običan B-tree indeks na id? select * from records where id % 2 = 0 - Za id je potreban indeks tipa GIN - Indeksi ne rade sa izrazima u WHERE - % je operacija poređenja, a ne filtriranja - limit i offset su obavezni za optimizaciju sa indeksom - Upit se odnosi na numeričko polje, a ne na tekstualno
Tokom rada sa git bisect, naišli ste na commit koji nije moguće proveriti zbog nedostatka potrebnog okruženja. Šta treba da uradite u ovoj situaciji? - Ponovite komandu git bisect start sa drugim hash-ovima - Preskočite ovaj commit komandom git bisect skip - Resetujte bisect komandom git bisect reset - Obeležite commit kao dobar komandom git bisect good - Obeležite commit kao loš komandom git bisect bad
Извештај за логистичку компанију Ви сте аналитичар у логистичкој компанији која води евиденцију о операцијама у складиштима. Морате припремити извештај о ефикасности сваког складишта. За сваки магацин израчунати: • укупни број операција (count_operations); • укупни број обрађених роба у магацину (sum_quantity); • просечно време обраде операције (avg_processing_time), узимајући у обзир само операције са наведеним временом (не NULL), заокружено на најближи цео број; • максимални и минимални број роба обрађених у једној операцији (max_quantity, min_quantity); • број операција сваког типа («доставка», «испорука», «пренос») у посебним колонама: supply_operations, shipment_operations, transfer_operations. Филтрирајте магацине који имају укупно више од 2 операције и просечно време обраде не прелази 60 минута. Резултат сортирајте по ID-у магацина по растућем редоследу. Формат улаза Табела operations: • operation_id (int) — јединствени идентификатор операције • warehouse_id (int) — ID магацина • operation_type (text) — тип операције: «доставка», «испорука», «пренос» • quantity (int) — број јединица робе у операцији • operation_date (timestamp) — датум и време операције • processing_time (int) — време обраде операције Колона processing_time може садржати NULL вредности. Формат излаза Упит треба да врати табелу са пољима у следећем редоследу: • warehouse_id (int) — јединствени ID магацина • count_operations (int) — укупни број операција извршених у магацину • sum_quantity (int) — укупни број обрађених роба у магацину • avg_processing_time (numeric) — просечно време обраде операције (у минутима), узимајући у обзир само операције са непразним временом, заокружено на најближи цео број • max_quantity (int) — максимални број роба обрађених у једној операцији • min_quantity (int) — минимални број роба обрађених у једној операцији • supply_operations (int) — број операција типа «доставка» • shipment_operations (int) — број операција типа «испорука» • transfer_operations (int) — број операција типа «пренос»
Napravljen je poseban niz pod nazivom even_sequence koji generiše samo parne brojeve. Šta treba staviti na mesto [...], tako da u slučaju da vrednost even_column nije navedena pri unosu, uzima se iz 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’
Objasnite kako tehnički funkcioniše Git LFS i koje prednosti pruža u poređenju sa standardnim Git-om prilikom rada sa velikim fajlovima.
Шта бисте желели да радите у нашем тиму?
Имате ли искуство са библиотеком Langchain? Које задатке сте решавали уз њену помоћ?
Koji tip spajanja treba koristiti da bi se u izbor uključili i oni korisnici koji nemaju narudžbe? Tabele: users(id, name) i orders(id, user_id, created_at). CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN
Kako Git Flow preporučuje da se formalizuje nova verzija aplikacije? - Kreiranjem nove issue grane - Kreiranjem hotfix grane od master - Kreiranjem posebne release grane od develop - Direktnim commit-om u granu master - Direktnim spajanjem grane master u develop
Koja od sledećih tvrdnji odražava posledice takvih radnji sa stanovišta proširenog Git Flow-a i upravljanja istorijom promena?
Otkrili ste da u istoriji glavnog Git repozitorijuma postoje commit-ovi koji sadrže kritične poverljive podatke. Ovi podaci moraju biti potpuno uklonjeni iz cele istorije repozitorijuma. Procijenite koliko je ispravno i sigurno koristiti sledeću strategiju: napraviti novi commit koji će ukloniti poverljive podatke iz trenutne verzije fajlova i poslati ga u main. - Ispravno, ali ne optimalno. Bolje je koristiti git revert za poništavanje commit-ova - Uslovno ispravno. Ovo je privremeno rešenje dok se ne pronađe radikalnije sredstvo za uklanjanje podataka - Pogrešno i nebezbedno. Podaci će biti uklonjeni iz trenutne verzije, ali će ostati dostupni u istoriji repozitorijuma - Pogrešno. Ovaj commit može izazvati nove konflikte prilikom spajanja sa drugim granama - Ispravno i sigurno. Ova metoda garantuje da će podaci biti uklonjeni i više se neće pojavljivati u repozitorijumu
Радите на нову функцију у грани dev. Изненада, постоји потреба да се брзо пребаците на грана main како бисте исправили правописну грешку у датотеци README.md. Имате некомитоване промене: у src/feature.js (неиндексиране) и styles/main.css (индексиране). Желите привремено сачувати све ове промене како бисте имали могућност да им се касније вратите у грани dev. Коју секвенцу команда треба да користите за то? 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^
Анализа продаје по категоријама производа у малопродаји Радите као аналитичар у малопродаји. Ваш задатак је да креирате извештај о продаји по категоријама са следећим калкулацијама: • укупни број продатих јединица у категорији (total_units_sold); • укупни приход по категорији, узимајући у обзир попусте, где се попуст рачуна као unit_price × units_sold × (1 − discount/100). Ако је попуст NULL, сматра се да је 0%. Заокружити на две децимале; • просечан број продатих јединица по продаји (avg_units_per_sale), заокружен на две децимале; • удео продаја без попуста (no_discount_share) — број продаја са NULL или 0% попуста, подељен са укупним бројем продаја у категорији, заокружен на три децимале. Резултате сортирајте прво по укупном приходу (total_revenue) у опадајућем реду, затим по просечном броју јединица по продаји (avg_units_per_sale) у растућем реду, и на крају по имену категорије у азбучном реду. Формат улаза Табела sales: • sale_id (int) — јединствени идентификатор продаје • product_id (int) — идентификатор производа • category (text) — категорија производа • sale_date (timestamp) — датум и време продаје • units_sold (int) — продате јединице • unit_price (numeric) — цена по јединици • discount (numeric) — попуст у процентима, може бити NULL Колона discount може садржати празне вредности. Формат излаза Упит треба да врати табелу са пољима у овом редоследу: • category (text) — категорија производа • total_units_sold (int) — укупни број продатих јединица у овој категорији • total_revenue (numeric) — укупни приход по категорији, заокружен на две децимале • avg_units_per_sale (numeric) — просечан број јединица по продаји, заокружен на две децимале • no_discount_share (numeric) — удео продаја без попуста (вредност између 0 и 1), заокружен на три децимале Резултат треба сортирати прво по total_revenue у опадајућем реду, затим по avg_units_per_sale у растућем реду, и на крају по имену категорије у азбучном реду.
[ime] je ispravio greške i stil u tekstu: «Zdravo! Ja sam [ime], ranije si tražio da pređeš na Telegram» — na „ti“, ali s poštovanjem
Da li imate iskustva sa web okvirom Gin? Ispričajte nam više detalja o zadacima koje ste rešavali uz njegovu pomoć.
Udeo saobraćaja botova Tim za sprečavanje prevara razvio je mehanizam za identifikaciju saobraćaja botova na sajtu prodavnice: kada bot uđe na sajt, u parametre njegovog URL-a dodaje se podniz "bot" (bez obzira na velika ili mala slova). Ako je user_id bar jednom bio identifikovan kao bot u decembru, uvek treba da se smatra kao bot. Istražite skup podataka sa posetama korisnika na sajt i izračunajte udeo botova u ukupnom broju korisnika u decembru 2024. godine (zaokružite na jedno decimalno mesto). Format unosa Tabela visits: - event_date (date) — datum posete - user_id (int) — jedinstveni identifikator korisnika - url (string) — link putem kojeg je izvršena poseta Podaci ne sadrže nedostajuće ili netačne vrednosti. Format izlaza Upit treba da vrati tabelu sa poljima: - share (float) — udeo botova u ukupnom broju korisnika u decembru, zaokružen na jedno decimalno mesto.