Orivel Orivel
Abrir menu

Ultimas tarefas e discussoes

Explore o conteudo benchmark mais recente de tarefas e discussoes. Filtre por genero para focar no que voce quer comparar.

Generos de Comparacao

Lista de Modelos

Explicação

OpenAI GPT-5.4 VS Google Gemini 2.5 Flash

Explique indexação de banco de dados para um desenvolvedor júnior

Você é um engenheiro de software sênior orientando um desenvolvedor júnior que tem cerca de seis meses de experiência escrevendo aplicações CRUD básicas com um banco de dados relacional (por exemplo, PostgreSQL ou MySQL). Ele percebeu que algumas de suas consultas estão lentas e ouviu que índices podem ajudar, mas não entende como os índices funcionam nem quando usá-los. Escreva uma explicação clara e voltada ao ensino sobre indexação de banco de dados para esse público. Sua explicação deve cobrir: 1. O que é um índice de banco de dados e por que ele existe, usando uma analogia intuitiva. 2. Como um índice B-tree funciona em nível conceitual (não é necessário entrar em detalhes sobre divisão de nós, mas o leitor deve entender a estrutura básica e por que isso acelera buscas). 3. As trocas envolvidas em adicionar índices: quando eles ajudam, quando atrapalham e os custos envolvidos (armazenamento, performance de escrita, manutenção). 4. Orientação prática para decidir quais colunas indexar, incluindo pelo menos dois exemplos concretos de consultas e se um índice ajudaria ou não. 5. Uma breve menção a pelo menos outro tipo de índice além do B-tree (por exemplo, hash, GIN, GiST) e quando ele pode ser preferido. Busque um tom encorajador e acessível, sem ser condescendente. Use exemplos concretos sempre que possível. A explicação deve ser suficientemente completa para que o desenvolvedor júnior possa decidir com confiança se deve adicionar um índice a uma tabela após lê-la.

71
18 Mar 2026 23:09

Design de sistemas

Google Gemini 2.5 Pro VS OpenAI GPT-5 mini

Projetar um serviço de encurtamento de URLs em larga escala

Sua tarefa é projetar um serviço de encurtamento de URLs (semelhante ao bit.ly ou tinyurl.com) que deve atender às seguintes restrições: 1. O serviço deve suportar 100 milhões de novos encurtamentos de URL por mês. 2. A razão leitura:gravação é 100:1 (ou seja, 10 bilhões de redirecionamentos por mês). 3. URLs encurtadas devem ter no máximo 7 caracteres (alfanuméricos). 4. O sistema deve garantir que uma URL encurtada, uma vez criada, nunca expire a menos que seja explicitamente excluída pelo usuário. 5. A latência de redirecionamento (do recebimento da requisição até a emissão do HTTP 301/302) deve ser inferior a 10 milissegundos no percentil 99. 6. O sistema deve permanecer disponível mesmo se um data center inteiro ficar offline. 7. O serviço deve suportar um painel de análise opcional mostrando contagens de clique, distribuição geográfica e dados de referenciador por URL encurtada, mas as análises não devem degradar o desempenho de redirecionamento. Forneça um projeto de sistema abrangente que aborde: A. Arquitetura de alto nível: Descreva os principais componentes e como eles interagem. B. Estratégia de geração de URL: Como você gera códigos curtos únicos, por que escolheu essa abordagem e como lida com colisões. C. Modelo de dados e armazenamento: Quais bancos de dados ou sistemas de armazenamento você usa e por quê. Inclua considerações de esquema. D. Otimização do caminho de leitura: Como você alcança o requisito de latência para redirecionamentos na escala exigida. E. Caminho de escrita: Como novas URLs são criadas e persistidas de forma confiável. F. Estratégia de escalonamento: Como o sistema escala horizontalmente para suportar crescimento. G. Confiabilidade e tolerância a falhas: Como você lida com falhas de data center, replicação e failover. H. Pipeline de analytics: Como você coleta, processa e serve os dados de analytics sem impactar o caminho crítico de redirecionamento. I. Principais trade-offs: Identifique pelo menos três trade-offs significativos que você fez no seu projeto e justifique cada um. Seja específico sobre tecnologias, protocolos e estimativas numéricas quando relevante (por exemplo, cálculos de armazenamento, estimativas de QPS, tamanhos de cache, análise do espaço de chaves de short-code).

59
18 Mar 2026 22:59

Programação

Google Gemini 2.5 Pro VS Anthropic Claude Sonnet 4.6

Implemente um armazenamento chave-valor versionado com consultas históricas

Escreva um código que implemente um armazenamento chave-valor versionado em memória com suporte a leituras históricas. O armazenamento começa vazio e processa uma sequência de comandos. Cada comando mutante bem-sucedido cria exatamente um novo número de versão global, começando em 1. Comandos somente de leitura não devem criar uma versão. Chaves e valores são strings sensíveis a maiúsculas/minúsculas sem espaços. Versões são inteiros positivos. Comandos: SET key value Cria ou sobrescreve a chave com o valor. DELETE key Remove a chave se ela existir. GET key Retorna o valor atual da chave, ou NULL se a chave não existir. GET_VERSION key version Retorna o valor associado à chave imediatamente após a criação da versão global especificada, ou NULL se a chave não existia nessa versão. Se version for maior que a última versão existente, trate-o como inválido e retorne INVALID_VERSION. HISTORY key Retorna todos os estados históricos da chave em ordem crescente de versões, incluindo deleções, formatados como pares version:value separados por vírgulas. Use NULL para estados deletados ou ausentes após uma mutação. Se a chave nunca foi afetada por qualquer comando mutante, retorne EMPTY. Formato de entrada: A primeira linha contém um inteiro N, o número de comandos. As próximas N linhas contêm cada uma um comando. Formato de saída: Para cada comando GET, GET_VERSION e HISTORY, imprima uma linha com o resultado. Detalhes de comportamento e casos limítrofes: - Cada SET sempre cria uma nova versão, mesmo que o valor não tenha mudado. - Cada DELETE sempre cria uma nova versão, mesmo se a chave não existir. - As versões são globais entre todas as chaves, não por chave. - HISTORY de uma chave deve incluir apenas as versões em que essa chave foi diretamente afetada por SET ou DELETE. - Se uma chave foi deletada e depois definida novamente, ambos os eventos devem aparecer em HISTORY. - Eficiência importa: assuma até 200000 comandos, com muitas consultas históricas. Sua solução deve ler da entrada padrão e escrever na saída padrão. Inclua o programa completo funcionando em um único arquivo. Você pode usar qualquer linguagem de programação mainstream, mas o código deve ser completo e executável como está escrito.

66
18 Mar 2026 22:33

Programação

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

Implemente uma Skip List Concorrente Sem Bloqueios com Consultas por Intervalo

Design e implemente uma estrutura de dados skip list concorrente em uma linguagem de sua escolha (C++, Java, Rust, Go ou Python) que suporte as seguintes operações: 1. **insert(key, value)** – Insere um par chave-valor. Se a chave já existir, atualize o valor de forma atômica. Retorna true se uma nova chave foi inserida, false se foi atualizada. 2. **remove(key)** – Remove logicamente o par chave-valor. Retorna true se a chave foi encontrada e removida, false caso contrário. 3. **find(key)** – Retorna o valor associado à chave, ou indica ausência. 4. **range_query(low, high)** – Retorna todos os pares chave-valor onde low <= key <= high, como uma lista ordenada por chave. O resultado deve ser um snapshot consistente: não deve incluir chaves que nunca estiveram simultaneamente presentes durante a execução da operação. 5. **size()** – Retorna o número aproximado de elementos ativos (não deletados). Requisitos e restrições: - A skip list deve ser segura para uso concorrente por múltiplas threads realizando qualquer combinação das operações acima simultaneamente, sem um bloqueio global único. Você pode usar bloqueios de granularidade fina, técnicas sem bloqueio (CAS) ou uma combinação. - Exclusão preguiçosa é aceitável: nós podem ser marcados logicamente como deletados antes da remoção física. - A geração de nível probabilística deve usar uma distribuição geométrica padrão com p=0.5 e nível máximo de 32. - Chaves são inteiros de 64 bits; valores são strings. - Inclua considerações adequadas sobre segurança de memória. Se usar uma linguagem sem coleta de lixo, explique ou implemente sua estratégia de recuperação (por exemplo, recuperação baseada em épocas, hazard pointers). Entregáveis: 1. Código-fonte completo e compilável/executável com comentários explicando sua estratégia de concorrência. 2. Um teste ou demonstração que lance múltiplas threads realizando inserções, exclusões, buscas e consultas por intervalo concorrentes, e valide a correção (por exemplo, sem atualizações perdidas, sem leituras fantasmas em consultas por intervalo, sem travamentos). 3. Uma seção de análise breve (como comentários ou uma docstring) discutindo: - As garantias de linearizabilidade (ou isolamento por snapshot) que sua implementação fornece. - A complexidade de tempo esperada de cada operação. - Limitações conhecidas ou possíveis problemas ABA e como você os aborda. Sua solução será avaliada com base na correção sob concorrência, clareza do código, robustez da estratégia de concorrência, qualidade do mecanismo de snapshot para consultas por intervalo e completude da análise.

69 1
18 Mar 2026 22:05

Questões educacionais

Google Gemini 2.5 Pro VS OpenAI GPT-5.4

Explique o Paradoxo do Teorema de Banach–Tarski e suas Implicações Educacionais

O paradoxo de Banach–Tarski afirma que uma esfera sólida no espaço tridimensional pode ser decomposta em um número finito de peças disjuntas, que podem então ser reassembladas (usando apenas rotações e translações) em duas esferas sólidas, cada uma idêntica em tamanho à original. Responda ao seguinte em um ensaio estruturado: 1. Indique com precisão quantas peças são necessárias na prova padrão do teorema de Banach–Tarski (dê o número mínimo exato estabelecido na literatura). 2. Explique por que esse resultado não contradiz a realidade física ou a conservação da massa. Na sua explicação, identifique a propriedade matemática específica que as peças devem possuir que impede que sejam realizáveis fisicamente, e nomeie o axioma da teoria dos conjuntos do qual a prova depende fundamentalmente. 3. Descreva como o conceito de "medida" (no sentido da medida de Lebesgue) se relaciona com esse paradoxo. Por que não podemos simplesmente afirmar que os volumes devem somar? 4. Discuta como este teorema é usado no ensino de matemática em nível avançado de graduação ou de pós-graduação. Quais lições-chave sobre os fundamentos da matemática — especificamente em relação ao Axioma da Escolha, conjuntos não mensuráveis e os limites da intuição geométrica — ele ilustra? Sugira uma abordagem pedagógica para introduzir este tópico a estudantes que o encontram pela primeira vez. Seu ensaio deve ser rigoroso, mas acessível, demonstrando tanto precisão matemática quanto perspicácia pedagógica.

83
18 Mar 2026 20:40

Programação

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Implemente um resolvedor de dependências em Python

Sua tarefa é criar um resolvedor de dependências para um sistema simples de gerenciamento de pacotes. Escreva uma função Python `resolve_dependencies(package_definitions, target_package)` que determine a ordem correta de instalação para um dado pacote e suas dependências. O argumento `package_definitions` é uma lista de strings. Cada string define um pacote e suas dependências diretas no formato: `'PackageName: Dep1, Dep2, ...'`. Se um pacote não tiver dependências, o formato é `'PackageName:'`. Sua função deve: 1. Analisar as strings de entrada para construir um grafo de dependências. 2. Dado um `target_package`, encontrar todas as suas dependências (incluindo transitivas). 3. Retornar uma única lista de strings representando a ordem de instalação. Essa lista deve ser ordenada topologicamente (uma dependência deve sempre aparecer antes do pacote que depende dela). O próprio `target_package` deve ser o último item da lista. A lista não deve conter duplicatas. 4. Detectar dependências circulares. Se um ciclo for encontrado, levante um `ValueError` com uma mensagem que indique claramente o ciclo (por exemplo, 'Dependência circular detectada envolvendo: A -> B -> A'). 5. Detectar pacotes ausentes. Se um pacote lista uma dependência que não está definida em `package_definitions`, levante um `ValueError` com uma mensagem como 'Definição de pacote ausente para: C'.

69
18 Mar 2026 20:21

Mostrando 121 a 140 de 333 resultados

Links relacionados

X f L