/** * Belirtilen milisaniye kadar "uyuyan" ve sonra başarıyla tamamlanan bir asenkron fonksiyon yazmak gerekir * / function sleep(duration) { } // Örnek const startTime = Date.now(); console.log("uyku başlıyor..."); sleep(2000).then(() => { console.log("2 saniye sonra uyandı!"); console.log("Geçen zaman: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("1 saniye sonra uyandı!"); console.log("Geçen zaman: ", Date.now() - startTime); });
Frontend
Verilen senkron bir fonksiyon ve milisaniye cinsinden bir zaman. Bu fonksiyonun, belirli süreyle sınırlı yeni bir versiyonunu döndürmek gerekiyor. Eğer fonksiyon belirlenen süre içinde çalışırsa, söz promise ile alınan verilerle çözülür. Eğer çalışmazsa, promise 'time limit exceeded' dizesiyle reddedilir.
Yerleşik nesne prototiplerine yeni yöntemler eklemede sorunlar var mı?
runOnce çözümünde apply yöntemi neden gerekebilir?
/** * sumPromises fonksiyonunu uygulayın, bu fonksiyon * sözleri argüman olarak alır ve sonuçlarının toplamını döner. * * fonksiyon herhangi bir sayıda argüman alabilir. * Herhangi bir promise API'si kullanılabilir. */ // Kod burada // Kullanım örneği const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3
/** * `asyncAuth(callback)` fonksiyonu, içinde hata (birinci argüman) ve * backend'den veriler (ikinci argüman) geçilebilecek bir callback kabul eder. * asyncAuth((error, data) => {}); * * `auth()` fonksiyonunu uygulamanız gerekiyor, * bu fonksiyon `asyncAuth()`'u çağırır, ancak Promise döner. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` fonksiyonu, `auth()`'u kullanır ve hata durumunda, * N ek deneme yapar. * Tüm denemeler başarısız olursa, son hatayı döner. * * @returns {Promise} */ function tryAuth(n) { }
[isim] sordu: Oyuncunun MVP sürümünü uygulaması ne kadar sürdü?
/** * runOnce adlı sarmalayıcı fonksiyonu uygulayın, bu fonksiyon * bir fonksiyon alır ve yeni bir fonksiyon döndürür. Yeni fonksiyon * yalnızca bir kez çağrılabilir, sonraki tüm çağrılar * undefined döner. * * Sarılmış fonksiyon argümanlar alabilir * ve sonuç döndürebilir. */ function runOnce(fn) { // kodunuz } const logHello = (name) => { console.log(`merhaba, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'merhaba, Oleg!' logHelloOnce('Olga'); // undefined
/* Bir dizideki tüm sayısal değerlerin toplamını hesaplamak için bir fonksiyon yazmak gerekiyor. Geçerli sayısal değerler, rakamlarla başlayan dizeler de dahil olmak üzere, başlangıçta rakamlarla başlayan dizeler de dahil olmak üzere, dizideki herhangi bir veri tipi olabilir ve düz olmayan bir yapı olabilir. **Yerleşik yöntemler olan .flat, .flatMap kullanılamaz** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));
Yazılan kodda ES6 standardından hangi yenilikler kullanılıyor? arguments nesnesi nedir ve rest parametrelerinden nasıl farklıdır?
Arguments'ı eski yöntemle (ES5) diziye nasıl dönüştürürüz, Array.from ve spread operatörü olmadan?
Projede kullandığınız mimari yaklaşımlar hakkında bilgi verebilir misiniz? Feature-Sliced Design (FSD) ile tanıyor musunuz?
[isim] sordu: Belirli bir görev üzerindeki çalışma nasıl genel olarak organize edildi: kim getirdi ve hazırladı, onay süreci nasıldı, uygulama sırasında hangi sorular ortaya çıktı ve bunları nasıl çözdünüz?
Callback arayüzü olan ve Promise döndüren asyncAuth fonksiyonunu uygulayın. Ardından, asyncAuth'u kullanan ve hata durumunda n ek deneme yapan tryAuth(n) fonksiyonunu uygulayın. Tüm denemeler başarısız olursa, son hatayı döndürür.
/** * Üç 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); console.log(obj);
/** * `asyncAuth(callback)` fonksiyonu, içinde * bir hata (birinci argüman olarak) ve backend'den veriler * (ikinci argüman olarak) geçebilecek bir callback kabul eder. * asyncAuth((error, data) => {}); * * `auth()` fonksiyonunu uygulamanız gerekiyor, * bu fonksiyon `asyncAuth()`'u çağırır, ancak Promise döner. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * `tryAuth()` fonksiyonu, `auth()`'u kullanır ve hata durumunda, * N ek deneme yapar. * Tüm denemeler başarısız olursa, son hatayı döner. * * @returns {Promise} */ function tryAuth(n) { }
withTimeout fonksiyonunu uygulayın, bu fonksiyon bir fonksiyon ve zaman (milisaniye) alır ve yeni bir fonksiyon döner. Eğer orijinal fonksiyon belirlenen sürede çalışmazsa, söz promise reddedilmelidir.
Fonksiyon başarılı bir şekilde tamamlandıktan sonra zaman aşımını temizlemezsek ne olur? Bunu nasıl düzeltebiliriz ve her durumda (başarı ve hata) zaman aşımını temizlemek için hangi promise yöntemi uygundur?
[isim] sordu: Hangi test çerçevesi kullanıldı?
Bağlantı oluşturma hızı ve ortalama oturum süresi biliniyorsa, maksimum aynı anda canlı WebSocket bağlantısı sayısı nasıl hesaplanır?