Sobes.tech

Data Analyst

Onde na vida real encontramos distribuições normais e onde não encontramos? Forneça exemplos específicos com explicações de por que os dados estão normalmente distribuídos ou não.

128

Como criarias um benchmark de geometria? Descreve a cadeia desde a ideia até ao conjunto de dados final.

126

Explique a lógica por trás da resolução do problema sum_series: como construir a soma de duas séries temporais em degraus?

125

val_a, val_b = 0, 0 t = None enquanto i < len(a) ou j < len(b): a_next = a[i][0] se i < len(a) senão float('inf') b_next = b[j][0] se j < len(b) senão float('inf') se 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 mais: 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

125

Afanasy tinha estado a trabalhar há 2 semanas a escrever código capaz de resolver palavras cruzadas japonesas com suporte para nove cores, quando numa reunião de equipa, um colega lhe disse que ele próprio podia lidar com a tarefa mais rapidamente, e que já não fazia sentido manter o programa. Mas Afanasy, sendo um otimista, decidiu continuar a praticar esta tarefa e fazer o seguinte — estimar quão bem o colega lida com palavras cruzadas. Para essa avaliação, ele escolheu um análogo da métrica IoU — o cálculo será semelhante ao clássico Intersection Over Union, mas por cores. Funciona assim: cada célula correspondente no original e na solução por cor adiciona 1 ao numerador, e no denominador, 1 é adicionado para cada célula no original e na solução (para células correspondentes, apenas uma é adicionada). Depois, é feita uma média pelo número de cores na imagem original, arredondada para duas casas decimais; zero não é considerado uma cor, portanto a métrica não deve ser calculada para células dessa cor. A entrada começa com uma linha contendo o número de linhas n e colunas m (nessa ordem). Depois, seguem 2n linhas, contendo m números separados por espaços — as primeiras n linhas referem-se ao cruzamento enviado, e as seguintes n — à imagem original. Assume-se que cada linha, a partir da segunda, contém exatamente m números. Como resposta, imprima um número arredondado para duas casas decimais, como nos exemplos. Aqui estão alguns exemplos: 1. Primeiro exemplo [phone] -> 1.0 Explicação: a contribuição de células correspondentes e não correspondentes (1.0 + 1.0 + 1.0 + 1.0) / número de cores (4) 2. Segundo exemplo [phone] -> 0.08 Explicação: a contribuição de células correspondentes e não correspondentes (0.25 + 0.0 + 0.0) / número de cores (3); zeros não são considerados, nem como células nas representações nem no número de cores. 3. Terceiro exemplo [phone] onde a imagem enviada começa [phone] — onde a imagem enviada termina 0 1 2 — onde a imagem original começa [phone] -> 0.47 Explicação: a contribuição de células correspondentes e não correspondentes (0.4 + 0.5 + 0.5) / número de cores (3); zeros não são considerados nem como células nas representações nem no número de cores. 4. Quarto exemplo [phone] -> 0.0 Explicação: a contribuição de células correspondentes e não correspondentes (0.0) / número de cores (1); zeros não são considerados nem como células nas representações nem no número de cores.

123

Escreva um código em Python que calcule o produto escalar de dois vetores comprimidos em RLE numa única passagem.

123

Como se chama o operador de ordenação em SQL e quando é que ele é executado? Onde está o LIMIT na ordem de execução?

123

Pseudocódigo 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

121

Como recolher respostas ground truth para o benchmark de geometria?

118

B. Prefixos e Sufixos Dado um array ordenado de n zeros. A cada passo, pode escolher um número arbitrário dos primeiros ou últimos elementos deste array, e adicionar um a todos os elementos selecionados. É possível atingir o estado especificado do array após algum número de tais operações? Formato de entrada A primeira linha contém um inteiro 1 ≤ n ≤ 100000 — o número de elementos no array. A segunda linha contém n números inteiros não negativos a1, a2, ..., an separados por espaços, onde ai ≤ 10^18 — os elementos finais desejados. Formato de saída Imprima "YES" se tal estado for alcançável, e "NO" se não for. Exemplo Entrada [phone] Saída YES Nota Os estados [phone] podem ser alcançados da seguinte forma: adicionar um aos três primeiros elementos, resultando em [phone] adicionar um aos últimos quatro elementos, resultando em [phone] adicionar um ao último elemento, resultando em [phone]

118

Como configurarias um teste A/B para verificar um novo algoritmo de pesquisa? Como determinar o tamanho da amostra necessário e a duração do teste?

117

Liste claramente os critérios que devem ser atendidos para que os dados tenham uma distribuição normal.

117

Tem alguma questão para o entrevistador?

114

-- Sobre as campanhas promocionais enviadas aos utilizadores: -- 2.1 Escreva uma consulta que mostre o número de utilizadores que receberam com sucesso a comunicação, para cada campanha. -- 2.2 Altere a consulta para mostrar: o número de utilizadores que não receberam nenhuma comunicação bem-sucedida, para cada campanha. -- 3. Foi adicionado um campo à tabela communications: event_timestamp – data e hora do evento de entrega da comunicação no formato '%Y-%m-%d %H:%M:%S'. -- Para todas as campanhas, incluindo as não lançadas, calcule a métrica: a proporção de utilizadores para os quais a entrega da mensagem bem-sucedida foi feita na primeira tentativa. -- Pode usar funções de janela ou não, mas é importante que a consulta seja ótima.

113

Pseudo-código 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

112

-- Os profissionais de marketing lançam campanhas promocionais na aplicação do serviço. Existem duas tabelas: -- campaigns – lista de campanhas -- - campaign – nome da campanha -- - action_type – tipo de campanha: "push" ou "banner" -- communications – registo do backend com envios de comunicações dessas campanhas aos utilizadores -- - user_id – identificador do utilizador -- - campaign – nome da campanha -- - status – estado do evento: "success" ou "error" --------------------------------------------------------------------------- -- 1. Inicialmente, na tabela campaigns, há 4 linhas: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- duplicado aleatoriamente -- | promo_cats | banner | -- | promo_cats | banner | <- duas linhas -- | promo_rats | push | -- Sabe-se também que: -- as campanhas promo_dogs e promo_cats foram bem-sucedidas em 100 utilizadores, e cada utilizador recebeu uma comunicação, -- e promo_rats está apenas em planeamento. -- 1.1 O que a consulta irá mostrar: 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 Como a resposta mudará se trocar o tipo de JOIN para LEFT?

111

O que é um benchmark e como avaliarias a qualidade de um modelo multimodal?

111

A rentabilidade das ações [nome] será distribuída normalmente? (Aumentos de preço por minuto durante toda a história de negociação de 2000 a 2026)

103

-- A tabela campaigns foi corrigida: eliminou-se a duplicação, adicionou-se uma chave (PK). -- Foram realizadas mais campanhas, devido a bugs, os utilizadores começaram a ter tentativas falhadas de entrega de comunicações, e alguns nem sequer conseguiram mostrar. -- Sobre as campanhas promocionais enviadas aos utilizadores: -- 2.1 Escreva uma consulta que mostre o número de utilizadores que receberam com sucesso a comunicação, para cada campanha. -- 2.2 Modifique a consulta para mostrar: o número de utilizadores que não receberam nenhuma comunicação bem-sucedida, para cada campanha. -- 3. Foi adicionado um campo à tabela communications – event_timestamp – data e hora do evento de entrega da comunicação no formato '%Y-%m-%d %H:%M:%S'. -- Para todas as campanhas, incluindo as não lançadas, calcule a métrica: a proporção de utilizadores para os quais a entrega da mensagem bem-sucedida foi feita na primeira tentativa. -- Pode usar funções de janela, ou fazer sem elas, mas é importante que a consulta seja ótima.

101

D. Fogos de artifício chineses Vladimir comprou um conjunto de 3 fogos de artifício chineses. Eles parecem exatamente iguais e estão misturados numa caixa, mas de acordo com as instruções, têm fiabilidades diferentes: 1. "Elite" — taxa de defeito de 10% (probabilidade de sucesso 0.9). 2. "Standard" — taxa de defeito de 20% (probabilidade de sucesso 0.8). 3. "Economia" — taxa de defeito de 40% (probabilidade de sucesso 0.6). Vladimir pega aleatoriamente o primeiro fogo de artifício, acende-o, e ele dispara com sucesso. Feliz, Vladimir decide lançar os outros dois fogos de artifício um após o outro. Qual é a probabilidade de que ambos os fogos de artifício, o segundo e o terceiro, também disparem com sucesso — sem defeito? Arredonde a resposta para três casas decimais. Formato de saída Um número decimal arredondado para 3 casas decimais. Por exemplo, 0.98 ou 0.999

101
/3