Sobes.tech

Data Engineer

Análise de frequência de visitas a clubes de fitness Você trabalha como analista numa rede de clubes de fitness. Você possui informações sobre as visitas dos utilizadores e os tipos de assinatura que eles compram. É necessário analisar a eficácia do uso das assinaturas. Calcule para cada tipo de assinatura: • o número total de utilizadores que usaram esse tipo de assinatura. Considere apenas user_id únicos; • o número total de visitas por essa assinatura. Considere todas as visitas dos utilizadores com essa assinatura; • a proporção de utilizadores dessa assinatura em percentagem do total de utilizadores (arredondada para uma casa decimal). Para calcular a proporção, use a relação entre o número de utilizadores com essa assinatura e o total de utilizadores únicos. Cada utilizador pode ter apenas uma assinatura. Ordene o resultado por tipo de assinatura em ordem alfabética. Formato de entrada Tabela memberships: • membership_id (int) — identificador único da assinatura • user_id (int) — identificador único do utilizador • membership_type (text) — tipo de assinatura Tabela visits: • visit_id (int) — identificador único da visita • user_id (int) — identificador do utilizador • visit_date (timestamp) — data e hora da visita Os dados não contêm valores ausentes ou incorretos. Formato de saída A consulta deve retornar uma tabela com os seguintes campos na ordem: • membership_type (text) — tipo de assinatura • users_count (int) — número de utilizadores únicos com esse tipo de assinatura • total_visits (int) — número total de visitas desses utilizadores • user_share (numeric) — proporção de utilizadores com esse tipo de assinatura em percentagem do total, arredondada a uma casa decimal O resultado deve ser ordenado por tipo de assinatura em ordem alfabética.

Junior
250

Você está familiarizado com a metodologia Domain Driven Design (DDD)? Se sim, compartilhe exemplos de sua aplicação em seus projetos.

Junior
215

Como remover um submódulo e os ficheiros associados do projeto? git submodule remove <caminho-para-o-submódulo> git rm --cached <caminho-para-o-submódulo>; remover a secção de .gitmodules; git commit git clean --submodules <caminho> git submodule delete <caminho> git remove submodule <caminho>

Junior
202

Qual expressão na posição de [...] levará automaticamente à criação de um índice? Na plataforma móvel, há uma rolagem horizontal do código create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)

Junior
199

Relatório para a empresa logística És um analista de uma empresa logística que mantém registos de operações nos armazéns. Precisas de elaborar um relatório sobre a eficiência de cada armazém. Para cada armazém, calcula: • quantidade total de operações (count_operations); • quantidade total de produtos processados no armazém (sum_quantity); • tempo médio de processamento de operação (avg_processing_time), considerando apenas operações com tempo especificado (não NULL), arredondado ao número inteiro mais próximo; • quantidade máxima e mínima de produtos processados numa única operação (max_quantity, min_quantity); • quantidade de operações de cada tipo («entrega», «envio», «transferência») em colunas separadas: supply_operations, shipment_operations, transfer_operations. Filtra os armazéns cuja quantidade total de operações seja superior a 2 e o tempo médio de processamento não ultrapasse os 60 minutos. Ordena o resultado por ID do armazém em ordem crescente. Formato de entrada Tabela operations: • operation_id (int) — identificador único da operação • warehouse_id (int) — identificador do armazém • operation_type (text) — tipo de operação: «entrega», «envio», «transferência» • quantity (int) — quantidade de unidades do produto na operação • operation_date (timestamp) — data e hora da operação • processing_time (int) — tempo de processamento da operação A coluna processing_time pode conter valores nulos. Formato de saída A consulta deve devolver uma tabela com os campos na seguinte ordem: • warehouse_id (int) — identificador único do armazém • count_operations (int) — quantidade total de operações realizadas no armazém • sum_quantity (int) — quantidade total de produtos processados no armazém • avg_processing_time (numeric) — tempo médio de processamento da operação (em minutos), considerando apenas operações com tempo não nulo, arredondado ao inteiro mais próximo • max_quantity (int) — quantidade máxima de produtos processados em uma única operação • min_quantity (int) — quantidade mínima de produtos processados em uma única operação • supply_operations (int) — quantidade de operações de tipo «entrega» • shipment_operations (int) — quantidade de operações de tipo «envio» • transfer_operations (int) — quantidade de operações de tipo «transferência»

Junior
197

No processo de trabalho com git bisect, você se deparou com um commit que não pode ser verificado devido à ausência do ambiente necessário. O que fazer nesta situação? - Repetir o comando git bisect start com outros hashes - Pular este commit com o comando git bisect skip - Redefinir o bisect com o comando git bisect reset - Marcar o commit como bom com o comando git bisect good - Marcar o commit como ruim com o comando git bisect bad

Junior
197

Por que a seguinte consulta não usará o índice se na tabela records (id) foi criado um índice B-tree normal em id? select * from records where id % 2 = 0 - Para id, é necessário um índice do tipo GIN - Índices não funcionam com expressões em WHERE - % é uma operação de comparação, não de filtragem - limit e offset são obrigatórios para otimização com índice - A consulta acessa um campo numérico, não uma string

Junior
196

Explique como funciona tecnicamente o Git LFS e quais as vantagens que oferece em comparação com o Git padrão ao trabalhar com ficheiros grandes.

Junior
193

Foi criada uma sequência especial que gera apenas números pares, chamada even_sequence. O que deve ser colocado no lugar de [...], para que, no caso de o valor de even_column não ser especificado na inserção, o valor seja retirado de 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’

Junior
193

Tem experiência a trabalhar com a biblioteca Langchain? Que tarefas resolveu com a sua ajuda?

Junior
190

O que gostaria de fazer na nossa equipa?

Junior
189

Que tipo de junção deve ser usada para incluir na seleção todos os usuários e, se houver, seus últimos pedidos? Tabelas: users(id, name) e orders(id, user_id, created_at). CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN

Junior
181

Qual das seguintes afirmações reflete as consequências dessas ações do ponto de vista da metodologia Git Flow estendida e da gestão do histórico de alterações?

Junior
179

Como o Git Flow recomenda formalizar uma nova versão da aplicação? - Criando uma nova branch issue - Criando uma branch hotfix a partir do master - Criando uma branch release separada a partir do develop - Fazendo um commit direto na branch master - Mesclando a branch master diretamente na develop

Junior
179

Descobriste que na história do repositório principal do Git há commits que contêm dados confidenciais críticos. Esses dados precisam ser completamente removidos de toda a história do repositório. Avalie o quão correto e seguro seria usar a seguinte estratégia: criar um novo commit que remova os dados confidenciais da versão atual dos arquivos e enviá-lo para main. - Correto, mas não ótimo. É melhor usar git revert para desfazer commits - Condicionalmente correto. É uma solução temporária até que uma medida mais radical para remover os dados seja encontrada - Incorreto e inseguro. Os dados serão removidos da versão atual, mas permanecerão acessíveis na história do repositório - Incorreto. Este commit pode causar novos conflitos ao mesclar com outros branches - Correto e seguro. Este método garante que os dados serão removidos e não reaparecerão no repositório

Junior
176

Você está trabalhando em uma nova funcionalidade na branch dev. De repente, surge a necessidade de mudar rapidamente para a branch main para corrigir um erro de digitação no arquivo README.md. Você tem algumas alterações não indexadas: em src/feature.js (não indexado) e styles/main.css (indexado). Você quer salvar temporariamente todas essas alterações para depois voltar a elas na branch dev. Qual sequência de comandos você deve usar para isso? 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^

Junior
175

Análise de vendas por categorias de produtos numa loja de retalho Trabalha como analista numa loja de retalho. A tua tarefa é criar um relatório de vendas por categorias de produtos com os seguintes cálculos: • quantidade total de unidades vendidas na categoria (total_units_sold); • receita total por categoria, considerando descontos, onde o desconto é calculado como unit_price × units_sold × (1 − discount/100). Se não houver desconto (NULL), considerar 0%. Arredondar para duas casas decimais; • média de unidades vendidas por venda (avg_units_per_sale), arredondada a duas casas decimais; • proporção de vendas sem desconto (no_discount_share) — número de vendas com NULL ou 0% de desconto, dividido pelo total de vendas na categoria, arredondado a três casas decimais. Ordena primeiro pelos resultados de maior receita total (total_revenue), depois por média de unidades por venda (avg_units_per_sale) em ordem crescente, e por último pelo nome da categoria em ordem alfabética. Formato de entrada Tabela sales: • sale_id (int) — identificador único de venda • product_id (int) — identificador do produto • category (text) — categoria do produto • sale_date (timestamp) — data e hora da venda • units_sold (int) — unidades vendidas • unit_price (numeric) — preço por unidade • discount (numeric) — desconto em percentagem, pode ser NULL A coluna discount pode conter valores nulos. Formato de saída A consulta deve retornar uma tabela com os seguintes campos na seguinte ordem: • category (text) — categoria do produto • total_units_sold (int) — quantidade total de unidades vendidas na categoria • total_revenue (numeric) — receita total por categoria, arredondada a duas casas decimais • avg_units_per_sale (numeric) — média de unidades por venda, arredondada a duas casas decimais • no_discount_share (numeric) — proporção de vendas sem descontos (valor entre 0 e 1), arredondada a três casas decimais O resultado deve ser ordenado primeiro por total_revenue em ordem descendente, depois por avg_units_per_sale em ordem crescente, e finalmente por categoria em ordem alfabética.

Junior
172

[nome] corrigiu erros e estilo no texto: « Olá! Sou [nome], você pediu anteriormente para mudar para o Telegram » — para o modo informal, mas de forma respeitosa

Junior
168

Tem experiência com o framework web Gin? Conte-nos mais detalhes sobre as tarefas que resolveu com ele.

Junior
167

No PostgreSQL, é necessário otimizar o desempenho das transações através de um nível de isolamento mínimo, no qual: • transações paralelas podem ver alterações não finalizadas umas às outras; • são possíveis "leituras sujas" (dirty read). Qual nível de isolamento deve ser especificado para a transação para atingir esse objetivo? dirty read não é possível no PostgreSQL leitura repetível leitura não confirmada leitura confirmada serializável

Junior
166
/3