Sobes.tech

Frontend

Mit szeretsz és mit nem szeretsz a cégnél végzett munkádban?

172

Hogyan optimalizálható az intersect algoritmus?

171

Van egy fa, amelyen mókusok és varjak ülnek. Meg kell írni egy függvényt, amely megtalálja az összes mókust a fán, és visszaadja a nevüket. Várt eredmény: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

171

/** * Valós szám objektumhoz implementálja a times metódust. * A függvénynek fogadnia kell egy callback-et, és meghívnia * a megadott számú alkalommal a jelenlegi iterációs indexszel. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Példák console.clear(); (3).times(console.log) // 0 // 1 // 2

171

/** * Írni kell egy strjoin nevű függvényt, * amely összefűzi a szövegeket elválasztóval. */ function strjoin() { // kód ide } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'

168

/* Két rendezett lista van a felhasználók online tartózkodási intervallumairól a nap folyamán. Az intervallum kezdete szigorúan kisebb, mint a vége. Számításba kell venni azokat az intervallumokat, amikor mindkét felhasználó online volt. Az intervallumokat órákban adjuk meg, feltételezve, hogy 0-tól 24-ig terjedhetnek. */ metszet( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] metszet( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function metszet(felhasznalo1, felhasznalo2) { // írd be a kódodat ide }

168

/* Három kódrészlet van megadva. Minden console.log eredményét írja le. */ 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);

166

Írja át a strjoin függvényt rest-paraméterek használata nélkül, helyette az arguments objektumot használva.

166

Hogyan változik az aszimptotikus összetettség és a memóriafelhasználás a camelCase → snake_case feladatban, ha az eredményt karakterlánc összefűzéssel állítjuk elő a karaktertömb helyett?

163

// Meg kell valósítani a groupBy metódust, amely kiterjeszti az arrayek standard metódusait. // A metódusnak vissza kell adnia az array csoportosított változatát - egy objektumot, // amelyben minden kulcs a fn(arr[i]) végrehajtásának eredménye, // és minden érték egy tömb, amely tartalmazza az eredeti tömb összes elemét ezzel a kulccsal. // kód itt // Példa 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 }] // } // Példa 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Példa 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }

162

Miért van piros színnel kiemelve a for...of TypeScript-ben, míg a normál for nem?

162

Egy reklámhálózat prototípusában a reklámhelyek értékesítése a következőképpen működik: a vásárlók előre megadják az árukat, és minden reklámhelyre válaszolnak, hogy meg akarják-e vásárolni vagy sem. Egy függvényt kell megvalósítani, amely az értékesítés előtt megvárja a magas ajánlatot tevő vásárlók elfogadását vagy elutasítását, majd a legmagasabb ajánlatot tevő vásárlónak adja el a reklámhelyet, aki elfogadta. A függvény válaszát a lehető leggyorsabban kell visszaadni. Vissza kell adni a vásárló indexét. Példák: A vásárlók ajánlatokat tesznek 1, 5, 10 A 10-es ajánlattevő elutasította Az 1-es ajánlattevő elfogadta // Még várunk, mert a 5-ös ajánlattevő is válaszolhat A 5-ös ajánlattevő elfogadta // A 5-ös ajánlattevőt választjuk ------------ A vásárlók ajánlatokat tesznek 1, 5, 10 A 10-es ajánlattevő elutasította A 5-ös ajánlattevő elfogadta // Nem várunk többé az 1-es ajánlattevő válaszára - biztosan nem lesz kiválasztva ------------ A vásárlók ajánlatokat tesznek 1, 2 Az 1-es ajánlattevő elutasította A 2-es ajánlattevő elutasította // Egyiket sem választjuk 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; }

160

// Egy olyan sztringet adnak meg, amely latin betűkből, szóközökből és írásjelekből áll. // A sztring pangramnak nevezik, ha tartalmazza mind a 26 betűt legalább egyszer. Határozd meg, hogy a sztring pangram-e. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // a kódod ide } 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

Írjon egy tries(n) függvényt, amely a aus függvényt legfeljebb n alkalommal hívja: visszaadja az első sikeres eredményt, és ha minden próbálkozás hibával végződik, dobja az utolsó hibát.

159

// és minden érték egy tömb, amely tartalmazza az eredeti tömb összes elemét ezzel a kulccsal. // kód itt // Példa 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 }] // } // Példa 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));

159

Milyen korlátai vannak a rekurzív fa bejárásnak? Miben különbözik a mélységi (DFS) és a szélességi (BFS) bejárás? Hogyan lehet rekurzió nélkül megvalósítani a fa bejárását?

157

Miért nem lehet nyílfüggvényt használni a groupBy-hoz? Mi lesz this a nyílnál?

157

/* A standard halmazmódszerek kiterjesztése érdekében meg kell valósítani az intersection metódust. Ez a metódus egy másik halmazt fogad bemenetként, és egy új halmazt ad vissza, amely az eredeti és a megadott halmazok metszete, tehát csak azokat az elemeket tartalmazza, amelyek mindkét halmazban megtalálhatók. */ // a kódod const set1 = new Set([1, 2, 3, 4]); const set2 = new Set([3, 4, 5, 6, 7, 8]); console.log(...set1.intersection(set2)) // 3 4 --- Set.prototype.intersection = function (set2) { const result = new Set(); for(const value of this) { if (set2.has(value)) result.add(value); } return result; } const set1 = new Set([1, 2, 3, 4]); const set2 = new Set([3, 4, 5, 6, 7, 8]); console.log(...set1.intersection(set2)) // 3 4

155

function any(promises) { // a kódod itt }

153
/7