Sobes.tech

თუ logHello ფუნქცია არის დაწერილი როგორც სლაკი და იძახება runOnce-ის შიგნით fn.call(this, ...args) საშუალებით, რა მოხდება this კონტექსტთან? რა უნდა შეიცვალოს logHello ფუნქციაში, რათა კონტექსტი სწორად გადაეცეს?

234

კამელკეისიდან snake_case-ის გარდაქმნის ფუნქციის დაწერა. რეგულარული გამოთქმების, სიმბოლოების კოდების ან მკაცრად განსაზღვრული სიმბოლოების სიების გამოყენება აკრძალულია; გადაწყვეტილება უნდა იყოს უნივერსალური. შეაფასეთ დროისა და სივრცის სირთულე.

223

რატომ როდესაც ორი გამოძახება ხდება sleep(2000) და sleep(1000), პირველ რიგში ჩანს 1 წამის ლოგი, ხოლო შემდეგ 2-ის? ახსენით Event Loop-ის, მიკრო და მაკრო-ტასკების მუშაობა.

217

მონაცემთა ბაზების ცოდნა და API-თან მუშაობა

208

/* ჩვენ გვაქვს ბილეთების ნაკადი შემდეგი ფორმატით: [ { from: 'ლონდონი', to: 'მოსკვა' }, { from: 'NY', to: 'ლონდონი' }, { from: 'მოსკვა', to: 'სანტ პეტერბურგი' }, ... ] ამ ბილეთებიდან შეიძლება აშენდეს ერთი, შეუფერხებელი მარშრუტი. მარშრუტში არ არის ბრუნვები ან გამეორებები. თქვენ უნდა დაწეროთ პროგრამა, რომელიც აბრუნებს ამავე ობიექტებს მარშრუტის მიხედვით. */ function getRoute(tickets = [], startCity) { // თქვენი კოდი აქ } console.clear() console.log(getRoute([ { from: 'ლონდონი', to: 'მოსკვა' }, { from: 'NY', to: 'ლონდონი' }, { from: 'მოსკვა', to: 'სანტ პეტერბურგი' }, ], 'NY')); /* [ { from: 'NY', to: 'ლონდონი' }, { from: 'ლონდონი', to: 'მოსკვა' }, { from: 'მოსკვა', to: 'სანტ პეტერბურგი' }, ] */

208

/** * `asyncAuth(callback)` ფუნქცია იღებს callback-ს, რომელშიც * შეიძლება გადაეცეს შეცდომა (პირველი არგუმენტით) და მონაცემები * ბექენდიდან (მეორე არგუმენტით). * asyncAuth((error, data) => {}); * * თქვენ უნდა განახორციელოთ `auth()` ფუნქცია, * რომელიც იძახის `asyncAuth()`, მაგრამ აბრუნებს Promise-ს. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * `tryAuth()` ფუნქცია იყენებს `auth()`-ს და, შეცდომის შემთხვევაში, * აკეთებს N დამატებით მცდელობას. * თუ ყველა მცდელობა წარუმატებელია, აბრუნებს ბოლო შეცდომას. * * @returns {Promise} */ function tryAuth(n) { }

200

/** * 'asyncAuth(callback)' ფუნქცია იღებს callback-ს, რომელშიც * შეიძლება გადაეცეს შეცდომა (პირველი არგუმენტი) და მონაცემები * ბექენდიდან (მეორე არგუმენტი). * asyncAuth((error, data) => {}); * * თქვენ უნდა განახორციელოთ 'auth()' ფუნქცია, * რომელიც იძახის 'asyncAuth()'-ს, მაგრამ აბრუნებს Promise-ს. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * 'tryAuth()' ფუნქცია იყენებს 'auth()'-ს და, შეცდომის შემთხვევაში, * აკეთებს N დამატებით მცდელობას. * თუ ყველა მცდელობა წარუმატებელია, აბრუნებს ბოლო შეცდომას. * * @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); }); }

189

ვინაიდან თქვენი კომერციული გამოცდილების დროს რა სხვა რამეზე გიწევდათ დაწერა, გარდა TypeScript და JavaScript-ის?

189

თუ ჩვენ უნდა გავითვალისწინოთ ფრაქციული რიცხვები, რა უნდა დავამატოთ მეთოდს times?

186

/* Array.prototype.some-ის polyfill-ის დაწერა აუცილებელია პარამეტრები - callback - ფუნქცია, რომელიც ამოწმებს თითოეულ ელემენტს, იღებს სამ არგუმენტს: - element - მიმდინარე დამუშავებული ელემენტი მასივში. - index (სურვილისამებრ) - მიმდინარე დამუშავებული ელემენტის ინდექსი. - array (სურვილისამებრ) - მასივი, რომელზეც ხორციელდება იტერაცია. - thisArg (სურვილისამებრ) - მნიშვნელობა, რომელიც გამოიყენება this-ის სახით callback-ის შესრულებისას. დაბრუნებული მნიშვნელობა true, თუ შემოწმების ფუნქცია აბრუნებს truthy მნიშვნელობას მინიმუმ ერთ ელემენტზე მასივში. წინააღმდეგ შემთხვევაში, 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; }

181

რომელი გუნდში მუშაობთ და რომელ პროექტზე?

174

შესაძლებელია თუ არა ვადების ჯამის ამოცანის გადაწყვეტა Promise-ის სტატიკური მეთოდების გამოყენების გარეშე? როგორ განსხვავდება ვადების შესრულება ციკლში Promise.all-ისგან — პარალელურად თუ თანმიმდევრობით?

172

ხე არსებობს, რომელზეც სოკო და ყვავილები ზის. საჭიროა დაწეროთ ფუნქცია, რომელიც იპოვის ყველა სოკოს ხეზე და დააბრუნებს მათ სახელებს. გ_expected შედეგი: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

163

შექმენით callLimit(fn, limit, callback) დეკორატორი, რომელიც შეზღუდავს ფუნქციის გამოძახების რაოდენობას. მიიღებს: დეკორაციისთვის ფუნქციას, მაქსიმალურ გამოძახების რაოდენობას, callback-ს, რომელიც გამოიძახება ბოლო გამოძახებაზე (სურვილისამებრ). დაბრუნებული ფუნქციას უნდა ჰქონდეს reset მეთოდი, რომელიც აღადგენს გამოთვლას საწყის მდგომარეობაში.

163

Sleep, დროის ზომები, Promise და დავალებების რიგები მაგალითში კონსოლში გამოსატანი სია და გაზომილი დროის მნიშვნელობები განსაზღვრეთ; ახსენით, რატომ შეიძლება რეალური დაგვიანება იყოს მითითებულზე მეტი.

162

რისი უკეთესია გასაღებით მონაცემების შენახვა: Map თუ ჩვეულებრივი ობიექტი? რა სარგებელი აქვს Map-ს?

160

/** * აუცილებელია დაწეროთ ასინქრონული ფუნქცია, * რომელიც გაათენებს მითითებულ მილიწამებს, * და შემდეგ წარმატებით დასრულდება */ function sleep(duration) { } // მაგალითი const startTime = Date.now(); console.log("ძილი იწყება..."); sleep(2000).then(() => { console.log("გათენდა 2 წამში!"); console.log("გავლილი დრო: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("გათენდა 1 წამში!"); console.log("გავლილი დრო: ", Date.now() - startTime); });

157

/** * runOnce სახელწოდების ორმაგი ფუნქციის განხორციელება, რომელიც * იღებს ფუნქციას და აბრუნებს ახალ ფუნქციას. ახალი * ფუნქცია შეიძლება გამოიძახოს მხოლოდ ერთხელ, ყველა შემდეგი * გამოძახება აბრუნებს undefined-ს. * * ჩასმული ფუნქცია შეიძლება მიიღოს არგუმენტები * და დაბრუნდეს შედეგი. */ function runOnce(fn) { // თქვენი კოდი } const logHello = (name) => { console.log(`გამარჯობა, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'გამარჯობა, Oleg!' logHelloOnce('Olga'); // undefined

155

გააფართოეთ Array.prototype მეთოდით, რომელიც ჯგუფավորում է მასივის ელემენტებს გადაცემული ფუნქციით გამოთვლილი გასაღებით და აბრუნებს ობიექტს, სადაც თითოეულ გასაღებას შესაბამისი ელემენტების მასივი უჭირავს. ახსენით, რა მოხდება, თუ გასაღების გამოთვლის ფუნქცია რაიმეს დააბრუნებს, რაც არ არის სტრიქონი ან რიცხვი.

155

// გეცოდინებათ, რომ გაცემული სტრიქონი ლათინური ასოებით, სივრცეებითა და ნიშანშესანიშნაობებით არის შედგენილი. // სტრიქონს უწოდებენ პანგრამას, თუ ის შეიცავს ყოველ 26 ასოს მინიმუმ ერთხელ. განსაზღვრეთ, არის თუ არა სტრიქონი პანგრამა. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // თქვენი კოდი აქ } console.log(isPangram(`A pangram or holoalphabetic sentence is a using every letter of a given alphabet at least once.`)); // => console.log(isPangram('Waltz, bad nymph, for quick jigs vex.'))

154
/6