Question d'entretien pour Développeur backend

Les utilisateurs doivent téléverser des fichiers allant jusqu'à deux gigaoctets. Comment concevriez-vous ça de bout en bout ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

Ne faites pas transiter les octets par votre API. Faites demander au client une URL de téléversement présignée, téléversez directement vers un stockage objet avec un téléversement multipart pour les gros fichiers, puis notifiez votre service, qui vérifie l'objet et enregistre les métadonnées. Validez le type de contenu et les limites de taille au niveau de la politique, scannez de façon asynchrone avant que le fichier soit utilisable, et générez des URL signées à courte durée de vie pour les téléchargements plutôt que de rendre les objets publics.

Pourquoi les recruteurs posent cette question

C'est une question de conception qui fait surgir beaucoup de choses à la fois : flux contre tampon, choix de stockage, sécurité et traitement asynchrone. Le recruteur veut que vous évitiez la conception naïve où un thread de requête retient deux gigaoctets, et que vous pensiez à la validation et à la reprise. Les relances sur la sécurité, sur la portée des URL présignées et sur le contenu de fichier non fiable, séparent les ingénieurs rigoureux de ceux qui ont juste fait marcher la chose.

Comment structurer votre réponse

  • Gardez les octets hors de votre application : direct vers le stockage objet.
  • Décrivez le flux : présignature, téléversement multipart, rappel de complétion.
  • Traitez la validation, l'analyse antivirus et la façon dont le fichier devient utilisable.
  • Gérez les téléchargements avec des URL signées à courte durée de vie et des contrôles d'accès.

Exemple de réponse

Exemple parlé, à la première personne

La première décision, c'est que le fichier ne passe jamais par mon API, parce que deux gigaoctets à travers un gestionnaire de requête mobilisent un worker, coûtent deux fois la bande passante et cassent dès qu'une connexion tombe. Donc le client demande à mon service une URL de téléversement présignée, limitée strictement à une clé, un type de contenu et une expiration courte, et téléverse directement vers le stockage objet. Pour des fichiers de cette taille, j'utilise le téléversement multipart, qui me donne la reprise, puisqu'une partie échouée est rejouée au lieu du fichier entier. Quand le téléversement se termine, le client rappelle, ou mieux, le stockage émet un événement, et mon service vérifie que l'objet existe et correspond à la taille attendue avant d'écrire les métadonnées. Le fichier démarre dans un état en attente et ne devient utilisable qu'après un traitement asynchrone : analyse antivirus, vérification du vrai type de contenu à partir des octets plutôt qu'en faisant confiance à l'extension, et génération des miniatures éventuelles. Les téléchargements passent par une URL signée à courte durée de vie émise après un contrôle d'autorisation, jamais par un bucket public, ce qui est à l'origine d'un nombre surprenant de fuites de données.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Comment empêchez-vous quelqu'un d'utiliser une URL présignée pour téléverser autre chose ?
  • Comment géreriez-vous un client qui disparaît en plein téléversement ?
  • Comment prendriez-vous en charge des téléversements reprenables sur une connexion mobile instable ?

Autres questions pour Développeur backend

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot