De ces billets, on peut construire un seul itinéraire ininterrompu. Il n'y a pas de boucles ni de 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. ```javascript function getRoute(tickets = []) { const cities = new Map(); for (const ticket of tickets) { cities.set(ticket.from, ticket); } const result = []; let currentCity = startcity; while (cities.has(currentCity)) { const next = cities.get(currentCity); result.push(next); currentCity = next.to; } return result; } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ])); ```
Frontend
Avez-vous défini la charge sur le système en RPS ? Quelle quantité ? Avez-vous une expérience de passage des étapes techniques en format de codage en direct ?
Avez-vous déjà dû vous occuper de la sécurité de l'application, du code ou du service?
Notre application de chat doit afficher les nouveaux messages provenant du serveur aussi rapidement que possible. Le message a le format suivant : interface Message { id: number text: string } L'id du premier message est 1, et l'id de chaque message suivant est supérieur de 1 à celui du précédent. Nous devons afficher les messages dans le bon ordre, mais le serveur ne garantit pas l'ordre correct des messages envoyés à notre application. Ligne de temps : // (arrive) [téléphone] // (dessinons) . 1 2 3 . . 4 5 6 7 8 Pour afficher les messages, utilisez la fonction render : render(message)
Parle-moi de ton expérience avec Node.js en prenant l'exemple d'un projet, qu'as-tu exactement développé dessus ?
/** * Il faut écrire une fonction asynchrone, * qui "dorme" pendant le nombre de millisecondes spécifié, * puis se termine avec succès */
Compréhension générale de JavaScript : passage de paramètres, asynchronie, prototypes, gestion des erreurs
// Il est nécessaire de vérifier la solution du problème sur deux services, en appelant : // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult : (url : string, solution : string | number) => Promise<boolean>; // // - Si les deux requêtes renvoient true - afficher dans console.log() success // - Si l'une renvoie false - afficher dans console.log() fail // - Si l'une ne répond pas - afficher dans console.log() error // - Si l'une répond plus de 1 seconde - afficher dans console.log() timeout
A-t-il participé à la conception de l'API?
On donne trois sections de code. Il faut écrire le résultat de chaque console.log. var n = 1; function f(n) { n = 3; } f(n); console.log(n); // ?? // ------------------ var obj = { a: 1 }; function f1(o) { o.a = 5; } f1(obj); console.log(obj); // ?? // ------------------ var obj = { a: 1 }; function f2(o) { o = { hello: 1 }; } f2(obj); console.log(obj); // ??
/** * La fonction `asyncAuth(callback)` accepte un callback, dans lequel peut * être passé une erreur (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} */ export function auth() { // asyncAuth((error, data) => {}); }
Parlez de votre expérience chez Atvint : projets, responsabilités, équipe, processus.
/** * La fonction `tryAuth()` utilise `auth()` et, en cas d'erreur, * effectue N tentatives supplémentaires. * Si toutes les tentatives échouent, elle lance la dernière erreur. * * @returns {Promise} */ export function tryAuth(n) { }
Avez-vous travaillé sur le déploiement d'applications, CI/CD, configuration?
En ce qui concerne les rôles, aimerais-tu te diriger vers la gestion ou vers le domaine technique?
Comment s'est organisée votre interaction lors du dernier projet ? Par Agile ou d'une autre manière ?
/** * Étant donné un tableau de points avec des coordonnées entières (x, y). * Déterminez s'il existe une ligne verticale, * qui divise les points en deux ensembles symétriques par rapport à cette ligne. * Note : Pour plus de commodité, le point peut être représenté non pas comme un tableau [x, y], mais comme un objet {x, y} */ isVertSym([[0, 0], [0, 0], [1, 1], [2, 2], [3, 1], [4, 0], [4, 0]]) // true isVertSym([[0, 0], [0, 0], [1, 1], [2, 2], [3, 1], [4, 0]]) // false isVertSym([]) // true isVertSym([[0, 0]]) // true isVertSym([[0, 0], [10, 0]]) // true isVertSym([[0, 0], [11, 1]]) // false isVertSym([[0, 0], [1, 0], [3, 0]]) // false function isVertSym(list) { // code ici }
Parlez-moi de votre expérience en rédaction de tests
// Il est nécessaire d'implémenter la méthode groupBy, qui étend les méthodes standard des tableaux. // La méthode doit retourner une version groupée du tableau – un objet, // dans lequel chaque clé est le résultat de l'exécution de la fonction fn(arr[i]), // et chaque valeur est un tableau contenant tous les éléments du tableau d'origine avec cette clé.
As-tu de l'expérience dans la conception de l'architecture d'un service ou d'une partie de celui-ci par toi-même?