Hoe zou je een benchmark voor geometrie maken? Beschrijf de keten van idee tot het uiteindelijke dataset.
Data Analyst
Schrijf een Python-code die het scalar product van twee RLE-gecomprimeerde vectoren in één keer berekent.
Afanasy werkte twee weken aan het schrijven van code die in staat was Japanse kruiswoordpuzzels op te lossen met ondersteuning voor negen kleuren, toen hij tijdens een teamvergadering hoorde dat een collega het zelf sneller kon doen, en dat het programma geen zin meer had. Maar Afanasy, als optimist, besloot door te gaan met oefenen en deed het volgende — schatte hoe goed zijn collega met kruiswoordpuzzels omgaat. Voor deze beoordeling koos hij een analoog van de IoU-metriek — de berekening zal vergelijkbaar zijn met de klassieke Intersection Over Union, maar per kleur. Het werkt als volgt: elke overeenkomende cel in het origineel en de oplossing per kleur telt 1 op bij de teller, en in de noemer wordt 1 toegevoegd voor elke cel in het origineel en de oplossing (voor overeenkomende cellen wordt slechts één toegevoegd). Daarna wordt er een gemiddelde genomen over het aantal kleuren in de originele afbeelding, afgerond op twee decimalen; nul wordt niet als kleur beschouwd, dus de metriek mag niet worden berekend voor cellen van deze kleur. De invoer begint met een regel die het aantal rijen n en kolommen m bevat (in die volgorde). Vervolgens volgen 2n regels, met m getallen gescheiden door spaties — de eerste n regels betreffen de ingediende kruiswoordpuzzel, en de volgende n — de originele afbeelding. Het wordt aangenomen dat elke regel, vanaf de tweede, precies m getallen bevat. Als antwoord moet u een getal afdrukken, afgerond op twee decimalen, zoals in de voorbeelden. Hier zijn enkele voorbeelden: 1. Eerste voorbeeld [phone] -> 1.0 Uitleg: de bijdrage van overeenkomende en niet-overeenkomende cellen (1.0 + 1.0 + 1.0 + 1.0) / aantal kleuren (4) 2. Tweede voorbeeld [phone] -> 0.08 Uitleg: de bijdrage van overeenkomende en niet-overeenkomende cellen (0.25 + 0.0 + 0.0) / aantal kleuren (3); nullen worden niet meegeteld, noch als cellen in de representaties, noch in het aantal kleuren. 3. Derde voorbeeld [phone] waar de ingediende afbeelding begint [phone] — waar de ingediende afbeelding eindigt 0 1 2 — waar de originele afbeelding begint [phone] -> 0.47 Uitleg: de bijdrage van overeenkomende en niet-overeenkomende cellen (0.4 + 0.5 + 0.5) / aantal kleuren (3); nullen worden niet meegeteld, noch als cellen in de representaties, noch in het aantal kleuren. 4. Vierde voorbeeld [phone] -> 0.0 Uitleg: de bijdrage van overeenkomende en niet-overeenkomende cellen (0.0) / aantal kleuren (1); nullen worden niet meegeteld, noch als cellen in de representaties, noch in het aantal kleuren.
val_a, val_b = 0, 0 t = None zolang i < len(a) of j < len(b): a_next = a[i][0] als i < len(a) anders float('inf') b_next = b[j][0] als j < len(b) anders float('inf') als a_next < b_next: val_a = a[i][1] t = a[i][0] i += 1 elif b_next < a_next: val_b = b[j][1] t = b[j][0] j += 1 anders: val_a = a[i][1] val_b = b[j][1] t = a[i][0] i += 1 j += 1 result.append((t, val_a + val_b)) return result
Leg uit wat de logica is achter het oplossen van de sum_series taak: hoe bouw je de som van twee trappen-achtige tijdreeksen?
Wat is de logische volgorde van uitvoering van FROM, JOIN, GROUP BY en SELECT in deze SQL-query?
Pseudo-code sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next <= b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result
Hoe heet de sorteeralgoritme in SQL en wanneer wordt deze uitgevoerd? Waar bevindt LIMIT zich in de uitvoeringsvolgorde?
Hoe zou je een A/B-test instellen om een nieuwe zoekalgoritme te controleren? Hoe bepaal je de benodigde steekproefgrootte en de duur van de test?
Hoe verzamel je ground truth-antwoorden voor de benchmark in geometrie?
B. Voorvoegsels en Achtervoegsels Gegeven een gesorteerde array van n nullen. In elke stap kun je een willekeurig aantal van de eerste of laatste elementen van deze array kiezen, en één optellen bij alle geselecteerde elementen. Is het mogelijk om de gespecificeerde toestand van de array te bereiken na een bepaald aantal van dergelijke operaties? Invoerformaat De eerste regel bevat een geheel getal 1 ≤ n ≤ 100000 — het aantal elementen in de array. De tweede regel bevat n niet-negatieve gehele getallen a1, a2, ..., an gescheiden door spaties, waarbij ai ≤ 10^18 — de gewenste eindwaarden. Uitvoerformaat Print "YES" als zo'n toestand haalbaar is, en "NO" als dat niet zo is. Voorbeeld Invoer [phone] Uitvoer YES Opmerking De staten [phone] kunnen als volgt worden bereikt: 1. Voeg één toe aan de eerste drie elementen, resulterend in [phone] 2. Voeg één toe aan de laatste vier elementen, resulterend in [phone] 3. Voeg één toe aan het laatste element, resulterend in [phone]
-- Over promotiecampagnes verzonden naar gebruikers: -- 2.1 Schrijf een query die het aantal gebruikers toont dat de communicatie succesvol heeft ontvangen, voor elke campagne. -- 2.2 Pas de query aan om te tonen: het aantal gebruikers dat uiteindelijk geen enkele succesvolle communicatie heeft ontvangen, voor elke campagne. -- 3. Er is een extra veld toegevoegd aan de tabel communications – event_timestamp – datum en tijd van het communicatie-afleveringsevenement in het formaat '%Y-%m-%d %H:%M:%S'. -- Voor alle campagnes, inclusief niet-uitgevoerde, bereken de metriek: het aandeel gebruikers voor wie de succesvolle berichtbezorging bij de eerste poging plaatsvond. -- Window-functies kunnen worden gebruikt of niet, maar het is belangrijk dat de query optimaal is.
Noem duidelijk de criteria waaraan gegevens moeten voldoen om een normale verdeling te hebben.
Heeft u vragen voor de interviewer?
Pseudo-code sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next < b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result
Wat is een benchmark en hoe zou je de kwaliteit van een multimodaal model beoordelen?
-- Marketeers starten promotiecampagnes in de app van de service. Er zijn twee tabellen: -- campaigns – lijst van campagnes -- - campaign – naam van de campagne -- - action_type – type campagne: "push" of "banner" -- communications – backend-logboek met verzendingen van communicatie van deze campagnes naar gebruikers -- - user_id – gebruikersidentificatie -- - campaign – naam van de campagne -- - status – status van het evenement: "success" of "error" --------------------------------------------------------------------------- -- 1. Aanvankelijk zijn er in de tabel campaigns 4 rijen: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- willekeurig gedupliceerd -- | promo_cats | banner | -- | promo_cats | banner | <- twee rijen -- | promo_rats | push | -- Het is ook bekend dat: -- campagnes promo_dogs en promo_cats succesvol zijn uitgevoerd bij 100 gebruikers en elke gebruiker heeft één communicatie ontvangen, -- en promo_rats is nog in planning. -- 1.1 Wat geeft de query: SELECT campaign, COUNT(*) as rows, COUNT(DISTINCT co.user_id) AS users FROM campaigns AS ca INNER JOIN communications AS co ON ca.campaign = co.campaign GROUP BY ca.campaign AS campaign -- 1.2 Hoe verandert het antwoord als het type JOIN wordt gewijzigd in LEFT?
Zal de opbrengst van de aandelen [naam] normaal verdeeld zijn? (Minuutelijkse prijsstijgingen gedurende de hele handelsgeschiedenis van 2000 tot 2026)
-- De tabel campagnes is gerepareerd: duplicaten verwijderd, sleutel (PK) toegevoegd. -- Meer campagnes zijn uitgevoerd, door bugs begonnen gebruikers mislukte pogingen tot communicatielevering te krijgen, en sommigen konden helemaal niet worden weergegeven. -- Over de promotiecampagnes die naar gebruikers zijn gestuurd: -- 2.1 Schrijf een query die het aantal gebruikers toont dat de communicatie succesvol heeft ontvangen, voor elke campagne. -- 2.2 Pas de query aan om te tonen: het aantal gebruikers dat geen enkele succesvolle communicatie heeft ontvangen, voor elke campagne. -- Aan de tabel communications is een extra veld toegevoegd – event_timestamp – datum en tijd van het communicatieleveringsgebeurtenis in het formaat '%Y-%m-%d %H:%M:%S'. -- Voor alle campagnes, inclusief niet-gestarte, bereken de metriek: het aandeel gebruikers voor wie de succesvolle berichtbezorging bij de eerste poging plaatsvond. -- Window functies kunnen worden gebruikt, of niet, maar het is belangrijk dat de query optimaal is.
D. Chinese vuurwerk Vladimir heeft een set van 3 Chinese vuurwerken gekocht. Ze zien er precies hetzelfde uit en zijn door elkaar gemengd in een doos, maar volgens de instructies hebben ze verschillende betrouwbaarheid: 1. "Elite" — defectpercentage 10% (kans op succes 0.9). 2. "Standaard" — defectpercentage 20% (kans op succes 0.8). 3. "Economy" — defectpercentage 40% (kans op succes 0.6). Vladimir pakt willekeurig het eerste vuurwerk, steekt het aan, en het werkt succesvol. Blij besluit Vladimir de resterende twee vuurwerken achter elkaar te lanceren. Wat is de kans dat zowel het tweede als het derde vuurwerk ook succesvol afgaat — zonder defect? Rond het antwoord af op drie decimalen.