Sobes.tech

Τι είναι προτιμότερο για την αποθήκευση δεδομένων ανά κλειδί: Map ή ένα συνηθισμένο αντικείμενο; Ποια είναι τα πλεονεκτήματα του Map;

175

/** * Υλοποιήστε τη μέθοδο times για ένα αριθμητικό αντικείμενο. * Η συνάρτηση πρέπει να δέχεται ένα callback και να το καλεί * τον καθορισμένο αριθμό φορών με το τρέχον δείκτη επανάληψης. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Παραδείγματα console.clear(); (3).times(console.log) // 0 // 1 // 2

173

Τι σας αρέσει και τι δεν σας αρέσει στη δουλειά σας στην εταιρεία;

173

/** * Πρέπει να γράψετε μια συνάρτηση strjoin, * που ενώνει τις συμβολοσειρές με διαχωριστικό. */ function strjoin() { // κώδικας εδώ } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

172

Υπάρχει ένα δέντρο στο οποίο κάθονται σκίουροι και κοράκια. Είναι απαραίτητο να γράψουμε μια συνάρτηση που βρίσκει όλους τους σκίουρους στο δέντρο και επιστρέφει τα ονόματά τους. Αναμενόμενο αποτέλεσμα: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

171

Πώς θα αλλάξουν η ασυμπτωτική πολυπλοκότητα και η κατανάλωση μνήμης στην εργασία camelCase → snake_case αν το αποτέλεσμα κατασκευάζεται με συσσώρευση συμβολοσειρών αντί για έναν πίνακα χαρακτήρων;

170

/* Δύο τμήματα κώδικα δίνονται. Πρέπει να γράψετε το αποτέλεσμα κάθε 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);

170

/* Δύο ταξινομημένες λίστες με διαστήματα παρουσίας χρηστών σε απευθείας σύνδεση κατά τη διάρκεια της ημέρας δίνονται. Η αρχή του διαστήματος είναι αυστηρά μικρότερη από το τέλος. Πρέπει να υπολογίσετε τα διαστήματα κατά τα οποία και οι δύο χρήστες ήταν σε απευθείας σύνδεση. Τα διαστήματα αναφέρονται σε ώρες, λαμβάνοντας υπόψη ότι μπορούν να είναι από 0 έως 24. */ τομές( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] τομές( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function τομές(χρήστης1, χρήστης2) { // γράψτε τον κώδικά σας εδώ }

170

Πόσο καιρό εργάζεστε στην εταιρεία;

169

Ξαναγράψτε τη λειτουργία strjoin χωρίς τη χρήση παραμέτρων rest, χρησιμοποιώντας αντ' αυτού το αντικείμενο arguments.

168

Υλοποιήστε τη μέθοδο Array.prototype.groupBy, η οποία επιστρέφει μια δομημένη έκδοση του πίνακα αντικειμένων, όπου κάθε κλειδί είναι το αποτέλεσμα της κλήσης της δοθείσας συνάρτησης, και η τιμή είναι ένας πίνακας στοιχείων που αντιστοιχούν σε αυτό το κλειδί.

168

Γιατί το for...of επισημαίνεται με κόκκινο στο TypeScript, αλλά το κανονικό for όχι;

166

// Είναι απαραίτητο να υλοποιήσετε τη μέθοδο groupBy, που επεκτείνει τις τυπικές μεθόδους των πινάκων. // Η μέθοδος πρέπει να επιστρέφει μια ομαδοποιημένη έκδοση του πίνακα - ένα αντικείμενο, // στο οποίο κάθε κλειδί είναι το αποτέλεσμα της εκτέλεσης της δοθείσας συνάρτησης fn(arr[i]), // και κάθε τιμή είναι ένας πίνακας που περιέχει όλα τα στοιχεία του αρχικού πίνακα με αυτό το κλειδί. // κώδικας εδώ // Παράδειγμα 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id : 1 }], // 2: [{ id: 2 }] // } // Παράδειγμα 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Παράδειγμα 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }

164

Σε ένα πρωτότυπο δικτύου διαφήμισης, η πώληση διαφημιστικών χώρων λειτουργεί ως εξής: οι αγοραστές δηλώνουν εκ των προτέρων την τιμή τους, και για κάθε διαφημιστικό χώρο απαντούν αν είναι διατεθειμένοι να τον αγοράσουν ή όχι. Είναι απαραίτητο να υλοποιηθεί μια λειτουργία που, πριν πουλήσει έναν διαφημιστικό χώρο, θα περιμένει την αποδοχή ή την άρνηση των αγοραστών με την υψηλότερη προσφορά, και στη συνέχεια θα πουλήσει τον χώρο στον αγοραστή με την υψηλότερη προσφορά από αυτούς που αποδέχθηκαν. Η απάντηση της λειτουργίας πρέπει να επιστραφεί όσο το δυνατόν πιο γρήγορα. Πρέπει να επιστρέψει το δείκτη του αγοραστή. Παραδείγματα: Οι αγοραστές προτείνουν τιμές 1, 5, 10 Ο αγοραστής με προσφορά 10 απάντησε αρνητικά Ο αγοραστής με προσφορά 1 απάντησε θετικά // Ακόμα περιμένουμε, επειδή μπορεί να απαντήσει ο αγοραστής με τιμή 5 Ο αγοραστής με προσφορά 5 απάντησε θετικά // Επιλέγουμε τον αγοραστή με την προσφορά 5 ------------ Οι αγοραστές προτείνουν τιμές 1, 5, 10 Ο αγοραστής με προσφορά 10 απάντησε αρνητικά Ο αγοραστής με προσφορά 5 απάντησε θετικά // Δεν περιμένουμε απάντηση από τον αγοραστή με προσφορά 1 - σίγουρα δεν θα επιλεγεί ------------ Οι αγοραστές προτείνουν τιμές 1, 2 Ο αγοραστής με προσφορά 1 απάντησε αρνητικά Ο αγοραστής με προσφορά 2 απάντησε αρνητικά // Δεν επιλέγουμε κανέναν interface Buyer { price: number; accepts: () => Promise<boolean>; } async function bestBuyer(buyers) { const sorted = buyers.map((buyer, index) => ({buyer, index})).sort((a, b) => a.buyer.price - b.buyer.price); const promise = sorted.map(({buyer}) => buyer.accepts()); for (let i = 0; i < sorted.length; i++) { const accepted = await promise[i]; if (accepted) { return sorted[i].index; } } if (await buyers[0].accepts()) { return 0; } return -1; }

162

function any(promises) { // ο κώδικάς σας εδώ }

161

Γράψτε μια συνάρτηση tries(n), που καλεί τη συνάρτηση aus μέχρι n φορές: επιστρέφει το πρώτο επιτυχές αποτέλεσμα, και αν όλες οι προσπάθειες αποτύχουν, ρίχνει το τελευταίο σφάλμα.

161

Γράψτε μια συνάρτηση sleep που επιστρέφει μια Promise και ολοκληρώνεται μετά από τον καθορισμένο αριθμό milliseconds.

161

Γιατί δεν μπορούμε να χρησιμοποιήσουμε βελάκι για το groupBy; Τι θα είναι το this στη βελάκι;

161

// Σας δίνεται μια συμβολοσειρά που αποτελείται από λατινικά γράμματα, κενά και σημεία στίξης. // Μια συμβολοσειρά ονομάζεται πανγράμμα αν περιέχει τουλάχιστον μία φορά κάθε ένα από τα 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.'))

160

// και κάθε τιμή είναι ένας πίνακας που περιέχει όλα τα στοιχεία του αρχικού πίνακα με αυτό το κλειδί. // κώδικας εδώ // Παράδειγμα 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id: 1 }], // 2: [{ id: 2 }] // } // Παράδειγμα 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));

159
/7