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.
Data Engineer
Você está familiarizado com a metodologia Domain Driven Design (DDD)? Se sim, compartilhe exemplos de sua aplicação em seus projetos.
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>
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)
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»
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
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
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.
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’
Tem experiência a trabalhar com a biblioteca Langchain? Que tarefas resolveu com a sua ajuda?
O que gostaria de fazer na nossa equipa?
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
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?
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
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
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^
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.
[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
Tem experiência com o framework web Gin? Conte-nos mais detalhes sobre as tarefas que resolveu com ele.
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