Frontend
Comment sais-tu le numéro de la question pour ouvrir l'écran de la question?
Que se passe-t-il lorsque le HTML arrive dans le navigateur ? Quelles sont les entités bloquantes et comment y travailler ?
// Trois types sont donnés. Il faut créer un type Delivery basé sur eux, qui contiendra tous les champs des types donnés.
async function f(result = 1) { let promiseB = new Promise(resolve => { setTimeout(() => resolve("1e"), 200) }); let promiseA = new Promise(resolve => { setTimeout(() => resolve("ab"), 1000) }); result += await promiseA; result += await promiseB; alert(result); // ? } f(null);
Connaissez-vous l'opérateur d'assertion non-null (!) en TypeScript ? Pourquoi est-il considéré comme un anti-modèle ?
Parlez de CORS.
Tâche : implémenter la fonction sumSquares, qui somme les carrés des nombres d'un tableau, en utilisant une fonction reduce personnalisée. Se peut modifier uniquement la fonction sumSquares.
Comprenez-vous comment Zustand fonctionne en coulisses?
La requête OPTIONS est-elle envoyée à chaque demande cross-domain ou seulement lorsque c'est nécessaire ? Quelle est la différence entre les requêtes simples et complexes dans ce contexte ?
Comment convertir arguments en un tableau de l'ancienne manière (ES5), sans Array.from ni opérateur de déploiement ?
Avez-vous utilisé un accord pour écrire des commits?
Une erreur est survenue en production, il faut la corriger d'urgence, mais la branche dev est déjà très avancée avec de nouvelles fonctionnalités. Que feriez-vous ?
Avez-vous déjà dû interagir avec un chef de projet dans un délai serré ? Lorsqu'il faut faire quelque chose très rapidement, mais que techniquement ce n'est pas possible rapidement.
Faut-il une fonction toggleLoading séparée ou peut-on s'en passer ?
Imaginez une file d'attente de macro-tâches avec cinq `setTimeout`, et des micro-tâches ajoutant infiniment de nouvelles micro-tâches, par exemple via une récursion `Promise.resolve().then()`. Que se passera-t-il avec l'interface et ces cinq timeouts s'exécuteront-ils un jour ? Pourquoi ?
#Formulaire d'inscription React 1. Expliquez comment fonctionne StateProvider, partagez vos pensées avec l'intervieweur. 2. Regardez /src/api/mock, expliquez comment cela fonctionne. 3. Vérifiez la couleur du SubmitButton et corrigez-la. 4. Implémentez la validation du formulaire client dans le composant Signup. (\*) Gardez à l'esprit la tâche numéro 9. Règles : - Les champs Nom d'utilisateur, Email, Mot de passe et Répéter le mot de passe doivent comporter au moins 6 caractères ; - Le mot de passe doit correspondre à la répétition ; - La validation doit être effectuée lors du clic sur le bouton "SignUp" ; - Les champs avec des valeurs invalides doivent être marqués (props error et helperText) ; 6. La réponse de l'API peut contenir une erreur qui doit être affichée à l'utilisateur près du champ correspondant. 7. Assurez-vous que le composant UserName affiche le nouveau nom d'utilisateur après une soumission réussie. 8. Implémentez le nouveau composant SignupSuccess. Il doit être affiché à la place du formulaire d'inscription. 9. Implémentez la validation côté serveur pour les champs appropriés. --- Code de mock.ts : ```typescript const fakeResponse = (userName) => ({ code: 200, user: { id: 42, userName, }, }); let a = 0; const api = { '/signup': function (userName: string, email: string, password: string) { a++; return new Promise((resolve, reject) => { setTimeout(() => { if (a % 2 === 0) { return resolve(fakeResponse(userName)); } else { return reject( new Error( `Le nom d'utilisateur "${userName}" est déjà pris. Veuillez en essayer un autre.` ) ); } }, 500); }); }, }; export default api; ```
Quelles améliorations pourraient être apportées pour améliorer la qualité du produit à l'avenir?
Vous avez mentionné Docker, CI/CD, GitHub Actions, GitLab — pouvez-vous préciser ce que vous faisiez exactement, quels pipelines, ce qu'il y avait dans les conteneurs ?
Tâche : implémenter un formulaire de connexion en React. Exigences : - deux champs : email + mot de passe - contrôles des entrées - soumission du formulaire avec preventDefault - validation de base (champ non vide) - lors de l'envoi, effectuer une requête asynchrone (peut être simulée avec setTimeout) - afficher l'état de chargement (bouton désactivé) - afficher une erreur en cas d'échec de la connexion En supplément (optionnel) : - validation de l'email
Y a-t-il eu des situations où une tâche était déjà intégrée dans develop, mais ne devait pas être incluse dans la version en cours ? Comment avez-vous procédé dans cette situation ?