Sobes.tech

Node.js

Jaké jsou výhody a nevýhody funkcionálního programování?

Senior
227

Kdy budete moci začít pracovat, pokud obdržíte nabídku?

Senior
226

Jaký je rozdíl mezi INNER JOIN a LEFT JOIN? Co se stane s řádkem z levé tabulky, pokud v pravé tabulce není odpovídající řádek?

Senior
187

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

Senior
178

Implementujte jednu nebo obě funkce v aplikaci: uživatel může připnout a odpojit stránky ikonou v seznamu; připnuté stránky by měly být zobrazeny na vrcholu seznamu. Druhá funkce je volitelná podle vašeho uvážení.

Senior
170

Proč chcete právě teď změnit společnost?

Senior
162

Jaký je rozdíl mezi operátorem || a ?? v JavaScript/TypeScript? Co se stane, pokud je retryLimit nastaven na 0?

Senior
151

Odstraňte komentář 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() }) Paginace seznamu function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }

Senior
117

Napsali jste někdy jednotkové testy? Do jaké míry?

Senior
98

Odhalte chybu · TypeScript Záludné chyby Každý z těchto osmi úryvků se skládá, projde volnou revizí a vypadá dobře. Každý skrývá chybu. U každého: řekněte nám, co se poruší, za jakých podmínek — a jak byste to odhalili. Mluvte nahlas. Zajímá nás, jak čtete kód, ne časomíra. Není problém, když neodhalíte všechny. 01 Zadání 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 Aktualizace 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('nepodařilo se aktualizovat profil', err) } res.status(200).json({ status: 'uloženo' }) }) 03 Odstranění komentáře 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 seznam function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // volající const results = paginate(rows, page, 20) // stránka začíná na 1 v UI 05 Načítání článků s autory 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 Vyřešení výchozích konfigurací interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonymní', } } 07 Testování pomocníka slevy function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('aplikuje slevu', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Výpočet nejvyšší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) // ... později, jinde: renderRawResults(results) // očekávané [4, 1, 9, 2]

Senior
78