Sobes.tech

Функционалды бағдарламалаудың артықшылықтары мен кемшіліктері қандай?

Senior
232

Ұсыныс алсаңыз, қашан жұмысқа кірісе аласыз?

Senior
230

INNER JOIN мен LEFT JOIN арасындағы айырмашылық неде? Сол жақ кестеден жолға сәйкес келетін жол болмаса, ол не болады?

Senior
198

Команда идемпотентті болғанда не білдіреді?

Senior
180

Қолданбада бір немесе екі функцияны жүзеге асырыңыз: пайдаланушы тізімдегі белгімен сайттарды бекітіп, босата алады; бекітілген сайттар тізімнің жоғарғы жағында көрсетілуі керек. Екінші функция сіздің қалауыңыз бойынша міндетті емес.

Senior
174

Неге дәл қазір компанияны өзгертуге ниеттесіз?

Senior
170

JavaScript/TypeScript-тегі || және ?? операторлары арасындағы айырмашылық неде? Егер retryLimit 0-ге орнатылса, не болады?

Senior
165

Пікірді жою 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) }

Senior
124

Бірлік тесттерін жаздыңыз ба? Қандай деңгейде?

Senior
98

Қате табу · 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, `Тапсырыс ${id} расталды`) 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) // бет UI-де 1-ден басталады 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]

Senior
89