Sobes.tech

Node.js

Fonksiyonel programlamanın avantajları ve dezavantajları nelerdir?

Senior
228

Bir teklif alırsanız ne zaman çalışmaya başlayabilirsiniz?

Senior
227

INNER JOIN ve LEFT JOIN arasındaki fark nedir? Sağ tablodaki karşılık gelen satır yoksa sol tablodaki satırla ne olur?

Senior
191

Bir ekibin idempotent olması ne anlama gelir?

Senior
178

Uygulamada bir veya her iki fonksiyonu uygulayın: bir kullanıcı, listedeki simgeyle siteleri sabitleyip kaldırabilir; sabitlenen siteler listenin üstünde gösterilmelidir. İkinci fonksiyon, sizin takdirinize bağlı olarak isteğe bağlıdır.

Senior
171

Neden şu anda şirketi değiştirmek istiyorsunuz?

Senior
165

JavaScript/TypeScript'te || operatörü ile ?? operatörü arasındaki fark nedir? retryLimit 0 olarak ayarlanırsa ne olur?

Senior
154

Bir yorumu sil app.delete('/comments/:id', requireAuth, async (req, res) => { const comment = await db.comments.findById(req.params.id) if (!comment) { return res.status(404).end() } await db.comments.delete(comment.id) res.status(204).end() }) Bir listeyi sayfalamak function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }

Senior
120

Hiç birim testi yazdınız mı? Hangi ölçüde?

Senior
98

Hata bul · TypeScript Kurnaz Hatalar Bu sekiz parçanın her biri derlenir, rastgele bir incelemeden geçer ve iyi görünür. Her biri bir hata gizler. Her biri için: neyin bozulduğunu, hangi koşullarda — ve nasıl yakalayacağınızı söyleyin. Yüksek sesle düşünün. Kodunuzu nasıl okuduğunuzla ilgileniyoruz, bir kronometreyle değil. Her şeyi doğru yapmanız gerekmez. 01 Sipariş verme interface Notifier { send(to: string, message: string): Promise<void> } class OrderService { constructor(private readonly notifier: Notifier) {} async placeOrder(order: Order): Promise<OrderId> { const id = await this.repo.save(order) this.notifier.send(order.customerEmail, `Order ${id} onaylandı`) return id } } 02 Profil güncelleme app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('profil güncelleme başarısız', err) } res.status(200).json({ status: 'kaydedildi' }) }) 03 Yorum silme app.delete('/comments/:id', requireAuth, async (req, res) => { const comment = await db.comments.findById(req.params.id) if (!comment) { return res.status(404).end() } await db.comments.delete(comment.id) res.status(204).end() }) 04 Liste sayfalaması function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // çağırıcı const results = paginate(rows, page, 20) // sayfa UI'da 1'den başlar 05 Makaleleri yazarlarıyla yükle async function loadArticlesWithAuthors(): Promise<ArticleView[]> { const articles = await db.query('SELECT * FROM articles WHERE published = true') const views: ArticleView[] = [] for (const article of articles) { const author = await db.query('SELECT * FROM users WHERE id = $1', [article.authorId]) views.push({ ...article, author: author[0] }) } return views } 06 Varsayılan yapılandırma değerlerini çözümleme interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonim', } } 07 İndirim yardımcısını test et function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('bir indirimi uygular', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 En yüksek skorları hesapla function topScores(scores: number[], take = 3): number[] { return scores.sort((a, b) => b - a).slice(0, take) } const results = [4, 1, 9, 2] const podium = topScores(results) // ... daha sonra başka bir yerde: renderRawResults(results) // beklenen [4, 1, 9, 2]

Senior
80