Sobes.tech

Frontend

Şirketteki işinizde neyi seviyorsunuz ve neyi sevmiyorsunuz?

172

Kesişme algoritması nasıl optimize edilebilir?

171

/** * Sayısal bir nesne için times metodunu uygula. * Fonksiyon, bir callback almalı ve onu * mevcut yineleme indeksine göre belirli sayıda çağırmalı. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Örnekler console.clear(); (3).times(console.log) // 0 // 1 // 2

171

Ağaçta sincaplar ve kargalar oturuyor. Ağacın içindeki tüm sincapları bulan ve isimlerini döndüren bir fonksiyon yazmak gerekiyor. Beklenen sonuç: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].

171

Şirkette ne kadar süredir çalışıyorsunuz?

169

/** * Bir ayırıcı kullanarak dizeleri birleştiren strjoin fonksiyonunu yazmanız gerekiyor. */ function strjoin() { // kod burada } 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

/* Gün boyunca kullanıcıların çevrimiçi kalma aralıklarıyla ilgili sıralanmış iki liste verilir. Aralık başlangıcı, bitişinden kesinlikle küçüktür. Her iki kullanıcının çevrimiçi olduğu aralıkları hesaplamanız gerekir. Aralıklar saat cinsindendir ve 0 ile 24 arasında olabilir. */ kesişim( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] kesişim( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function kesişim(kullanıcı1, kullanıcı2) { // kodunuzu buraya yazın }

168

/* Üç kod bölümü verilmiştir. Her bir console.log'un sonucunu yazmanız gerekir. */ 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

Rest parametreleri kullanmadan, yerine arguments nesnesini kullanarak strjoin fonksiyonunu yeniden yazın.

166

CamelCase → snake_case görevinde, sonucu karakter dizisi yerine string birleştirme ile derlediğimizde, asimptotik karmaşıklık ve bellek kullanımı nasıl değişir?

163

Neden TypeScript'te for...of kırmızı renkte vurgulanıyor, ama normal for değil?

162

// Array metodlarını genişleten groupBy metodunu uygulamak gerekiyor. // Bu metod, array'in gruplandırılmış versiyonunu döndürmelidir - bir nesne, // her anahtar, fn(arr[i]) fonksiyonunun sonucu olmalı, // ve her değer, bu anahtarla ilgili tüm öğeleri içeren bir dizi olmalı. // Burada kod // Örnek 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 }] // } // Örnek 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Örnek 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }

162

// Latin harfleri, boşluklar ve noktalama işaretlerinden oluşan bir dize verilir. // Bir dize, her biri en az bir kez olmak üzere 26 harfi içeriyorsa, pangram olarak adlandırılır. Dizinin pangram olup olmadığını belirleyin. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // kodunuz buraya } 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

Reklam satış ağı prototipinde, reklam alanlarının satışı şu şekilde düzenlenmiştir: alıcılar önceden kendi fiyatlarını belirtir ve her reklam alanı için kabul edip etmeyeceklerini yanıtlarlar. Bir fonksiyon uygulamak gerekir ki, reklam alanını satmadan önce yüksek teklif veren alıcıların kabul veya red yanıtlarını beklesin ve sonra kabul edenler arasından en yüksek teklifi yapan alıcıya satışı gerçekleştirsin. Fonksiyonun yanıtını mümkün olan en hızlı şekilde döndürmelidir. Alıcının indeksini döndürmelidir. Örnekler: Alıcılar 1, 5, 10 fiyat teklif eder 10 teklifli alıcı red yanıtı verdi 1 teklifli alıcı kabul etti // Hala bekliyoruz, çünkü 5 teklifli alıcı yanıt verebilir 5 teklifli alıcı kabul etti // 5 teklifli alıcıyı seçiyoruz ------------ Alıcılar 1, 5, 10 fiyat teklif eder 10 teklifli alıcı red yanıtı verdi 5 teklifli alıcı kabul etti // 1 teklifli alıcı yanıtını beklemiyoruz - kesinlikle seçilmeyecek ------------ Alıcılar 1, 2 fiyat teklif eder 1 teklifli alıcı red yanıtı verdi 2 teklifli alıcı red yanıtı verdi // Hiçbir alıcıyı seçmiyoruz 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

// ve her değer, bu anahtarla orijinal dizinin tüm öğelerini içeren bir dizi. // Burada kod // Örnek 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 }] // } // Örnek 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));

159

tries(n) adlı bir fonksiyon yazın, bu fonksiyon aus fonksiyonunu n kez çağırır: ilk başarılı sonucu döndürür ve tüm denemeler hata ile sonuçlanırsa, son denemeyi hatasıyla birlikte atar.

159

Ağaçta özyinelemeli gezinmenin hangi sınırlamaları vardır? Derinlik öncelikli arama (DFS) ile genişlik öncelikli arama (BFS) arasındaki fark nedir? Ağacı özyineleme olmadan nasıl gezebiliriz?

157

Neden groupBy için ok fonksiyonu kullanılamaz? Okta this ne olur?

157

/* Standart küme metodlarını genişleten intersection metodunun uygulanması gerekmektedir. Bu metod başka bir küme alır ve yeni bir küme döner, yani, orijinal küme ile verilen kümenin kesişimi, yani, her iki kümede de bulunan öğeleri içerir. */ // kodunuz 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) { // kodunuz buraya }

153
/7