Aiuto per il colloquio
Preparazione al colloquio
Riprendi
Ricerca di lavoro
Risorse
Abbonamento
IT
Telegram
Accedi
Apri il menu
Aiuto per il colloquio
Assistente AI
Estensione del browser
Risorse
Scarica
Domande frequenti/Aiuto
Preparazione al colloquio
Banca delle domande
Banca delle interviste
Interviste finte
Mentori
Risorse
Domande frequenti/Aiuto
Ricerca di lavoro
Automazione della ricerca di lavoro
Analisi di mercato
Offerte di lavoro da Telegram
Risorse
Lavora con noi
Blog
Domande frequenti/documentazione
Telegram Blog
Telegram Supporto
Legale
Rimborso
Termini
Privacy
Titolari dei diritti
Torniamo alle domande
Banca delle domande
Node.js - Sviluppatore
Domanda
Senior
Trova l'errore · TypeScript Errori astuti Ognuno di questi otto frammenti si compila, supera una revisione casuale e sembra a posto. Ognuno nasconde un errore. Per ciascuno: dicci cosa si rompe, in quali condizioni — e come lo cattureresti. Pensalo ad alta voce. Siamo interessati a come leggi il codice, non a un cronometro. Non è necessario indovinare tutto. 01 Effettuare un ordine 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} confermato`) return id } } 02 Aggiornare un profilo app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('Aggiornamento profilo fallito', err) } res.status(200).json({ status: 'salvato' }) }) 03 Eliminare un commento 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 Pagina di una lista function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // chiamante const results = paginate(rows, page, 20) // la pagina inizia a 1 nell'interfaccia 05 Caricare articoli con 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 Risoluzione dei valori predefiniti di configurazione interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonimo', } } 07 Test di un helper di sconto function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('applica uno sconto', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Calcolo dei punteggi principali 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) // ... più tardi, altrove : renderRawResults(results) // atteso [4, 1, 9, 2]
Contrassegna come completato
Precedente
Avanti