Când veți putea începe să lucrați dacă primiți o ofertă?
Node.js
Care sunt avantajele și dezavantajele programării funcționale?
Care este diferența dintre INNER JOIN și LEFT JOIN? Ce se întâmplă cu rândul din tabelul din stânga dacă nu există un rând corespunzător în tabelul din dreapta?
Implementați una sau ambele funcții în aplicație: un utilizator poate fixa și debloca site-uri cu o pictogramă în listă; site-urile fixate trebuie afișate în partea de sus a listei. A doua funcție este opțională după discreția dvs.
De ce vrei să schimbi compania chiar acum?
Ce înseamnă ca o echipă să fie idempotentă?
Care este diferența dintre operatorul || și operatorul ?? în JavaScript/TypeScript? Ce se va întâmpla dacă retryLimit este setat la 0?
Ștergeți un comentariu 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() }) Paginarea unei liste function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }
Ai scris vreodată teste unitare? În ce măsură?
Găsiți greșeala · TypeScript Erori viclene Fiecare dintre aceste opt fragmente compilează, trece o revizuire casual și pare în regulă. Fiecare ascunde o greșeală. Pentru fiecare: spuneți-ne ce se strică, în ce condiții — și cum ați captura-o. Gândiți cu voce tare. Suntem interesați de modul în care citiți codul, nu de un cronometru. Nu este nevoie să ghiciți tot. 01 Plasarea unei comenzi 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, `Comanda ${id} confirmată`) return id } } 02 Actualizarea unui profil app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('eșec la actualizarea profilului', err) } res.status(200).json({ status: 'salvat' }) }) 03 Ștergerea unui comentariu 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 Paginarea unei liste function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // apelant const results = paginate(rows, page, 20) // pagina începe de la 1 în UI 05 Încărcarea articolelor cu autori 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 Rezolvarea valorilor implicite de configurare interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonim', } } 07 Testarea unui helper de reducere function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('aplica o reducere', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Calcularea scorurilor de top 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) // ... mai târziu, în altă parte: renderRawResults(results) // așteptat [4, 1, 9, 2]