Sobes.tech

Node.js

Kedy budete môcť začať pracovať, ak dostanete ponuku?

Senior
224

Aké sú výhody a nevýhody funkcionálneho programovania?

Senior
221

Aký je rozdiel medzi INNER JOIN a LEFT JOIN? Čo sa stane s riadkom z ľavej tabuľky, ak neexistuje zodpovedajúci riadok v pravej tabuľke?

Senior
183

Implementujte jednu alebo obe funkcie v aplikácii: používateľ môže pripínať a odpínať stránky pomocou ikony v zozname; pripnuté stránky by sa mali zobrazovať na vrchu zoznamu. Druhá funkcia je voliteľná podľa vášho uváženia.

Senior
168

Prečo chcete práve teraz zmeniť spoločnosť?

Senior
159

Čo znamená, že tím je idempotentný?

Senior
152

Aký je rozdiel medzi operátorom || a ?? v JavaScript/TypeScript? Čo sa stane, ak je retryLimit nastavený na 0?

Senior
139

Odstrániť komentár 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() }) Stránkovanie zoznamu function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }

Senior
109

Písali ste niekedy jednotkové testy? Do akej miery?

Senior
98

Odhaľte chybu · TypeScript Záhadné chyby Každý z týchto ôsmich úryvkov sa skompiluje, prejde voľným prehľadom a vyzerá dobre. Každý skrýva chybu. Pre každý: povedzte nám, čo sa pokazí, za akých podmienok — a ako by ste to odhalili. Rozprávajte nahlas. Zaujíma nás, ako čítate kód, nie stopky. Nie je problém, ak neodhalíte všetky. 01 Zadanie objednávky 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 Aktualizácia profilu app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('neúspešná aktualizácia profilu', err) } res.status(200).json({ status: 'uložené' }) }) 03 Vymazanie komentára 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 Paginate zoznam function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // volajúci const results = paginate(rows, page, 20) // stránka začína na 1 v UI 05 Načítanie článkov s autormi 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 Riešenie predvolených konfigurácií interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonymný', } } 07 Testovanie pomocnej funkcie zľavy function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('aplikuje zľavu', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Výpočet najvyšších skóre 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) // ... neskôr, inde: renderRawResults(results) // očakávané [4, 1, 9, 2]

Senior
74