Sobes.tech

Frontend

Si la fonction logHello est écrite sous forme de flèche et est appelée via fn.call(this, ...args) à l'intérieur de runOnce, que se passera-t-il avec le contexte this ? Que faut-il changer dans la fonction logHello pour que le contexte soit transmis correctement ?

244

Écrivez une fonction de conversion d'une chaîne de camelCase en snake_case. Il est interdit d'utiliser des expressions régulières, des codes de caractères ou une liste codée de symboles ; la solution doit être universelle. Évaluez la complexité temporelle et spatiale.

237

Pourquoi, lors de deux appels à sleep(2000) et sleep(1000), le log du 1er apparaît avant celui du 2? Expliquez le fonctionnement de l'Event Loop, des micro-tâches et des macro-tâches.

221

/* Nous avons un ensemble de billets sous cette forme: [ { from: 'Londres', to: 'Moscou' }, { from: 'NY', to: 'Londres' }, { from: 'Moscou', to: 'Saint-Pétersbourg' }, ... ] À partir de ces billets, on peut construire un seul itinéraire ininterrompu. Il n'y a ni boucles ni répétitions dans l'itinéraire. Il faut écrire un programme qui renvoie ces mêmes objets de billets dans l'ordre de l'itinéraire. */ function getRoute(tickets = [], startCity) { // votre code ici } console.clear() console.log(getRoute([ { from: 'Londres', to: 'Moscou' }, { from: 'NY', to: 'Londres' }, { from: 'Moscou', to: 'Saint-Pétersbourg' }, ], 'NY')); /* [ { from: 'NY', to: 'Londres' }, { from: 'Londres', to: 'Moscou' }, { from: 'Moscou', to: 'Saint-Pétersbourg' }, ] */

217

Connaissance des bases de données et travail avec les API

217

/** * La fonction `asyncAuth(callback)` accepte un callback, dans lequel * une erreur peut être transmise (en premier argument) et des données * du backend (en second argument). * asyncAuth((error, data) => {}); * * Vous devez implémenter la fonction `auth()`, * qui appelle `asyncAuth()`, mais retourne une promesse. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * La fonction `tryAuth()` utilise `auth()` et, en cas d'erreur, * effectue N tentatives supplémentaires. * Si toutes échouent, elle retourne la dernière erreur. * * @returns {Promise} */ function tryAuth(n) { }

208

/* Il faut écrire un polyfill pour Array.prototype.some Paramètres - callback - fonction qui vérifie chaque élément, accepte trois arguments: - element - L'élément actuel en cours de traitement dans le tableau. - index (Optionnel) - L'indice de l'élément actuel en cours de traitement. - array (Optionnel) - Le tableau sur lequel l'itération est effectuée. - thisArg (Optionnel) - La valeur utilisée comme this lors de l'exécution de la fonction callback. Valeur de retour true, si la fonction de vérification retourne une valeur truthy pour au moins un élément du tableau. Sinon, false. */ Array.prototype.some = function (callback, thisArgs) { const array = this; for (let i = 0; i < array.length; i++) { if (!(i in array)) continue; const result = callback.call(thisArgs, array[i], i, array); if (result) return true; } return false; }

195

/** * La fonction 'asyncAuth(callback)' prend un callback, dans lequel * une erreur (en premier argument) et des données * du backend (en second argument) peuvent être passés. * asyncAuth((error, data) => {}); * * Vous devez implémenter la fonction 'auth()', * qui appelle 'asyncAuth()', mais retourne une Promesse. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * La fonction 'tryAuth()' utilise 'auth()' et, en cas d'erreur, * effectue N tentatives supplémentaires. * Si toutes échouent, retourne la dernière erreur. * * @returns {Promise} */ function tryAuth(n) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { reject(error); } else { attempt(attemptsLeft - 1); } }); } attempt(n); }); }

194

Que devons-nous ajouter à la méthode times si nous devons prendre en compte des nombres fractionnaires?

193

Sur quoi d'autre avez-vous dû écrire dans votre expérience commerciale, en plus de TypeScript et JavaScript?

192

Dans quelle équipe travaillez-vous et sur quel projet?

186

Peut-on résoudre une tâche de somme de promesses sans utiliser de méthodes statiques de Promise ? En quoi l'exécution des promesses dans une boucle diffère-t-elle de Promise.all — en parallèle ou en série ?

177

/** * Implémenter la fonction wrapper runOnce, qui prend * une fonction et retourne une nouvelle fonction. La nouvelle * fonction ne peut être appelée qu'une seule fois, toutes * les appels suivants retournent undefined. * * La fonction enveloppée peut accepter des arguments * et retourner un résultat. */ function runOnce(fn) { // votre code } const logHello = (name) => { console.log(`bonjour, ${name} !`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'bonjour, Oleg !' logHelloOnce('Olga'); // undefined

171

Déterminez l'ordre de sortie dans la console et les valeurs du temps mesuré dans l'exemple avec sleep, timers, Promise et files d'attente de tâches ; expliquez pourquoi le retard réel peut être supérieur à celui spécifié.

169

Il y a un arbre avec des écureuils et des corbeaux. Il faut écrire une fonction qui trouve tous les écureuils dans l'arbre et retourne leurs noms. Résultat attendu : ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

169

Quelle est la meilleure option pour stocker des données par clé : Map ou un objet ordinaire ? Quels sont les avantages de Map ?

169

Implémenter un décorateur callLimit(fn, limit, callback), qui limite le nombre d'appels d'une fonction. Prend : une fonction à décorer, le nombre maximum d'appels, un callback, appelé lors du dernier appel (optionnel). La fonction retournée doit avoir une méthode reset pour réinitialiser le compteur.

167

Qu'aimez-vous et qu'est-ce que vous n'aimez pas dans votre travail dans l'entreprise?

164

/** * Il est nécessaire d'écrire une fonction asynchrone, * qui "dormira" pendant le nombre de millisecondes spécifié, * puis se terminera avec succès */ function sleep(duration) { } // Exemple const startTime = Date.now(); console.log("Début du sommeil..."); sleep(2000).then(() => { console.log("Réveillé après 2 secondes!"); console.log("Temps écoulé: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("Réveillé après 1 seconde!"); console.log("Temps écoulé: ", Date.now() - startTime); });

160

/** * Il faut écrire la fonction strjoin, * qui concatène des chaînes avec un séparateur. */ function strjoin() { // code ici } console.log(strjoin('.', 'a', 'b', 'c')) // 'a.b.c' console.log(strjoin('-', 'a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

160
/6