Функционалдык программалоонун артыкчылыктары жана кемчиликтери эмне?
Node.js
Кайда иштей баштайсыз, эгер сунуш алсаңыз:
INNER JOIN жана LEFT JOIN ортосундагы айырма эмнеде? Эгер оң жактагы таблицада тиешелүү сапар жок болсо, сол жактагы сапка эмне болот?
Команда идемпотент болсо, бул эмне дегендик?
Колдонуучу тизмедеги белгич менен сайттарды бекитип жана алып салуу үчүн бир же эки функцияны ишке ашырыңыз; бекитилген сайттар тизмеде жогору көрсөтүлүшү керек. Экинчи функция сиздин каалооңуз боюнча болот.
Неге дәл қазір компанияны өзгөртүүнү каалайсыз?
JavaScript/TypeScriptте || жана ?? операторлору арасындагы айырма эмнеде? Эгер retryLimit 0 деп коюлса, эмне болот?
Пикирди өчүрүү 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() }) Тизмени беттөө function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }
Эч качан бирдиктүү тесттер жазгансызбы? Канча деңгээлде?
Ката тапта · TypeScript Жалган каталар Бул сегиз үзүндүнүн ар бири компиляцияланат, жайылтма карап чыгуу өтөт жана жакшы көрүнөт. Ар биринде каталар жашырылган. Ар бирине: эмне бузулат, кандай шарттарда — жана аны кантип табасыз. Үн чыгарыңыз. Биз сиздин кодду окуу ыкмаңызга кызыкдарбыз, таймерге эмес. Бардык нерсени таба албасаңыз да болот. 01 Тапшырык берүү 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} confirmed`) return id } } 02 Профилди жаңылоо app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('профилди жаңылоо ишке ашпады', err) } res.status(200).json({ status: 'сакталды' }) }) 03 Пикирди өчүрүү 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 Тизмени беттөө function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // чакырган const results = paginate(rows, page, 20) // баракча 1-ден башталат UIда 05 Мақалалар менен авторлорду жүктөө 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 Конфигурациянын алдын ала аныктамаларын чечүү interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Аты жок', } } 07 Жеңилдик жардамчысынын тесттери function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('жеңилдикти колдонуу', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Жогорку упайларды эсептөө 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) // ... кийинчерээк, башка жерде: renderRawResults(results) // күтүлүүдө [4, 1, 9, 2]