Orivel Orivel
Ouvrir le menu

Dernieres taches et discussions

Parcourez les derniers contenus benchmark (taches et discussions). Filtrez par genre pour cibler ce que vous voulez comparer.

Genres de comparaison

Liste des modeles

Explication

OpenAI GPT-5.4 VS Google Gemini 2.5 Flash

Expliquer l'indexation des bases de données à un développeur junior

Vous êtes un ingénieur logiciel senior qui encadre un développeur junior ayant environ six mois d'expérience dans l'écriture d'applications CRUD basiques avec une base de données relationnelle (par exemple PostgreSQL ou MySQL). Il/elle a remarqué que certaines de ses requêtes sont lentes et a entendu que les index peuvent aider, mais il/elle ne comprend pas comment les index fonctionnent ni quand les utiliser. Rédigez une explication claire et pédagogique de l'indexation des bases de données pour ce public. Votre explication doit couvrir : 1. Ce qu'est un index de base de données et pourquoi il existe, en utilisant une analogie intuitive. 2. Comment fonctionne un index B-tree au niveau conceptuel (vous n'avez pas besoin d'entrer dans les détails de la division des nœuds, mais le lecteur doit comprendre la structure de base et pourquoi cela accélère les recherches). 3. Les compromis liés à l'ajout d'index : quand ils aident, quand ils nuisent, et les coûts impliqués (stockage, performances d'écriture, maintenance). 4. Des conseils pratiques pour décider quelles colonnes indexer, incluant au moins deux exemples concrets de requêtes et si un index aiderait ou non. 5. Une brève mention d'au moins un autre type d'index au-delà du B-tree (par ex. hash, GIN, GiST) et quand il pourrait être préféré. Adoptez un ton encourageant et accessible sans être condescendant. Utilisez des exemples concrets quand c'est possible. L'explication doit être suffisamment complète pour que le développeur junior puisse, après lecture, décider en toute confiance s'il faut ajouter un index à une table.

71
18 Mar 2026 23:09

Conception de systèmes

Google Gemini 2.5 Pro VS OpenAI GPT-5 mini

Concevoir un service de raccourcissement d'URL à grande échelle

On vous confie la conception d'un service de raccourcissement d'URL (similaire à bit.ly ou tinyurl.com) qui doit respecter les contraintes suivantes : 1. Le service doit supporter 100 millions de nouveaux raccourcissements d'URL par mois. 2. Le ratio lecture/écriture est de 100:1 (c.-à-d. 10 milliards de redirections par mois). 3. Les URL raccourcies doivent comporter au maximum 7 caractères (alphanumériques). 4. Le système doit garantir qu'une URL raccourcie, une fois créée, n'expire jamais à moins d'être explicitement supprimée par l'utilisateur. 5. La latence de redirection (de la réception de la requête à l'émission du HTTP 301/302) doit être inférieure à 10 millisecondes au 99e centile. 6. Le système doit rester disponible même si un centre de données entier devient indisponible. 7. Le service doit prendre en charge un tableau de bord d'analyse optionnel affichant les comptes de clics, la répartition géographique et les données des référents par URL raccourcie, mais l'analytique ne doit pas dégrader la performance des redirections. Fournissez une conception système complète qui aborde : A. Architecture haute-niveau : Décrivez les composants principaux et comment ils interagissent. B. Stratégie de génération d'URL : Comment vous générez des codes courts uniques, pourquoi vous avez choisi cette approche, et comment vous gérez les collisions. C. Modèle de données et stockage : Quelles bases de données ou systèmes de stockage vous utilisez et pourquoi. Incluez les considérations de schéma. D. Optimisation du chemin de lecture : Comment vous atteignez l'exigence de latence pour les redirections à cette échelle. E. Chemin d'écriture : Comment les nouvelles URL sont créées et persistées de manière fiable. F. Stratégie de mise à l'échelle : Comment le système évolue horizontalement pour gérer la croissance. G. Fiabilité et tolérance aux pannes : Comment vous gérez les pannes de centres de données, la réplication et le basculement. H. Pipeline d'analytique : Comment vous collectez, traitez et servez les données analytiques sans impacter le chemin critique de redirection. I. Principaux compromis : Identifiez au moins trois compromis significatifs que vous avez faits dans votre conception et justifiez chacun. Soyez précis concernant les technologies, protocoles et estimations numériques lorsque c'est pertinent (par exemple, calculs de stockage, estimations de QPS, tailles de cache, analyse de l'espace de clés des codes courts).

59
18 Mar 2026 22:59

Programmation

Google Gemini 2.5 Pro VS Anthropic Claude Sonnet 4.6

Implémenter un magasin clé-valeur versionné avec requêtes historiques

Écrivez du code qui implémente un magasin clé-valeur versionné en mémoire prenant en charge les lectures historiques. Le magasin commence vide et traite une séquence de commandes. Chaque commande mutative réussie crée exactement un nouveau numéro de version global, en commençant par 1. Les commandes en lecture seule ne doivent pas créer de version. Les clés et valeurs sont des chaînes sensibles à la casse sans espaces. Les versions sont des entiers positifs. Commands: SET key value Create or overwrite key with value. DELETE key Remove key if it exists. GET key Return the current value for key, or NULL if the key does not exist. GET_VERSION key version Return the value associated with key immediately after the specified global version was created, or NULL if the key did not exist at that version. If version is greater than the latest existing version, treat it as invalid and return INVALID_VERSION. HISTORY key Return all historical states for the key in increasing version order, including deletions, formatted as version:value pairs separated by commas. Use NULL for deleted or absent-after-mutation states. If the key has never been affected by any mutating command, return EMPTY. Input format: The first line contains an integer N, the number of commands. The next N lines each contain one command. Output format: For every GET, GET_VERSION, and HISTORY command, print one line with the result. Behavior details and edge cases: - Every SET always creates a new version, even if the value is unchanged. - Every DELETE always creates a new version, even if the key does not exist. - Versions are global across all keys, not per key. - HISTORY for a key should include only versions where that key was directly affected by SET or DELETE. - If a key was deleted and later set again, both events must appear in HISTORY. - Efficiency matters: assume up to 200000 commands, with many historical queries. Your solution should read from standard input and write to standard output. Include the full working program in one file. You may use any mainstream programming language, but the code should be complete and executable as written.

66
18 Mar 2026 22:33

Programmation

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

Implémenter une skip-list concurrente sans verrou prenant en charge des requêtes de plage

Concevez et implémentez une structure de données skip list concurrente dans le langage de votre choix (C++, Java, Rust, Go ou Python) qui prenne en charge les opérations suivantes : 1. **insert(key, value)** – Insérer une paire clé-valeur. Si la clé existe déjà, mettre à jour la valeur de façon atomique. Retourne true si une nouvelle clé a été insérée, false si la valeur a été mise à jour. 2. **remove(key)** – Supprimer logiquement la paire clé-valeur. Retourne true si la clé a été trouvée et supprimée, false sinon. 3. **find(key)** – Retourner la valeur associée à la clé, ou indiquer son absence. 4. **range_query(low, high)** – Retourner toutes les paires clé-valeur telles que low <= key <= high, sous forme d'une liste triée par clé. Le résultat doit être un instantané cohérent : il ne doit pas inclure de clés qui n'ont jamais été simultanément présentes pendant l'exécution de l'opération. 5. **size()** – Retourner le nombre approximatif d'éléments actifs (non supprimés). Exigences et contraintes : - La skip-list doit être sûre pour un usage concurrent par plusieurs threads effectuant n'importe quel mélange des opérations ci-dessus simultanément, sans verrou global unique. Vous pouvez utiliser des verrous fins, des techniques sans verrou (CAS), ou une combinaison. - La suppression paresseuse est acceptable : les nœuds peuvent être marqués logiquement comme supprimés avant leur suppression physique. - La génération probabiliste des niveaux doit utiliser une distribution géométrique standard avec p=0.5 et un niveau maximum de 32. - Les clés sont des entiers 64 bits ; les valeurs sont des chaînes de caractères. - Inclure des considérations appropriées de sécurité mémoire. Si vous utilisez un langage sans ramasse-miettes, expliquez ou implémentez votre stratégie de récupération (par exemple, epoch-based reclamation, hazard pointers). Livrables : 1. Code source complet et compilable/exécutable avec des commentaires expliquant votre stratégie de concurrence. 2. Un test ou une démonstration qui lance plusieurs threads effectuant des insertions, suppressions, recherches et requêtes de plage concurrentes, et qui valide la correction (par exemple, pas de mises à jour perdues, pas de lectures fantômes dans les requêtes de plage, pas de plantages). 3. Une brève section d'analyse (sous forme de commentaires ou de docstring) discutant : - Les garanties de linéarizabilité (ou d'isolation de type snapshot) que fournit votre implémentation. - La complexité temporelle attendue de chaque opération. - Les limitations connues ou les problèmes potentiels liés à ABA et comment vous les traitez. Votre solution sera évaluée sur la correction sous concurrence, la clarté du code, la robustesse de la stratégie de concurrence, la qualité du mécanisme de snapshot pour les requêtes de plage et la rigueur de l'analyse.

69 1
18 Mar 2026 22:05

Questions éducatives

Google Gemini 2.5 Pro VS OpenAI GPT-5.4

Expliquer le paradoxe du théorème de Banach–Tarski et ses implications pédagogiques

Le paradoxe de Banach–Tarski affirme qu'une boule solide dans l'espace tridimensionnel peut être décomposée en un nombre fini de morceaux non chevauchants, qui peuvent ensuite être réassemblés (en n'utilisant que des rotations et des translations) en deux boules solides, chacune identique en taille à l'original. Répondez aux questions suivantes dans un essai structuré : 1. Indiquez précisément combien de morceaux sont nécessaires dans la preuve standard du théorème de Banach–Tarski (donnez le nombre minimum exact établi dans la littérature). 2. Expliquez pourquoi ce résultat ne contredit pas la réalité physique ni la conservation de la masse. Dans votre explication, identifiez la propriété mathématique spécifique que les morceaux doivent posséder laquelle empêche qu'ils soient réalisables physiquement, et nommez l'axiome de la théorie des ensembles sur lequel la preuve repose fondamentalement. 3. Décrivez comment le concept de « mesure » (au sens de la mesure de Lebesgue) se rapporte à ce paradoxe. Pourquoi ne peut-on pas simplement dire que les volumes doivent s'additionner ? 4. Discutez de la façon dont ce théorème est utilisé dans l'enseignement des mathématiques au niveau avancé du premier cycle ou au niveau des études supérieures. Quelles leçons clés sur les fondements des mathématiques — spécifiquement concernant l'Axiome du Choix, les ensembles non mesurables et les limites de l'intuition géométrique — illustre-t-il ? Suggérez une approche pédagogique pour introduire ce sujet à des étudiants qui le rencontrent pour la première fois. Votre essai doit être rigoureux tout en restant accessible, démontrant à la fois précision mathématique et réflexion pédagogique.

83
18 Mar 2026 20:40

Programmation

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Implémenter un résolveur de dépendances en Python

Votre tâche est de créer un résolveur de dépendances pour un système de gestion de paquets simple. Écrivez une fonction Python `resolve_dependencies(package_definitions, target_package)` qui détermine l'ordre d'installation correct pour un paquet donné et ses dépendances. L'argument `package_definitions` est une liste de chaînes. Chaque chaîne définit un paquet et ses dépendances directes au format : `'PackageName: Dep1, Dep2, ...'`. Si un paquet n'a pas de dépendances, le format est `'PackageName:'`. Votre fonction doit : 1. Analyser les chaînes d'entrée pour construire un graphe de dépendances. 2. Étant donné un `target_package`, trouver toutes ses dépendances (y compris transitives). 3. Retourner une seule liste de chaînes représentant l'ordre d'installation. Cette liste doit être triée topologiquement (une dépendance doit toujours apparaître avant le paquet qui en dépend). Le `target_package` lui-même doit être le dernier élément de la liste. La liste ne doit pas contenir de doublons. 4. Détecter les dépendances circulaires. Si un cycle est trouvé, lever une `ValueError` avec un message qui indique clairement le cycle (par exemple : 'Dépendance circulaire détectée impliquant : A -> B -> A'). 5. Détecter les paquets manquants. Si un paquet liste une dépendance qui n'est pas définie dans `package_definitions`, lever une `ValueError` avec un message tel que 'Définition de paquet manquante pour : C'.

69
18 Mar 2026 20:21

Affichage de 121 a 140 sur 333 resultats

Liens associes

X f L