Pomoc w rozmowie kwalifikacyjnej
Przygotowanie do rozmowy kwalifikacyjnej
Wznów
Wyszukiwanie pracy
Zasoby
Subskrypcja
PL
Telegram
Zaloguj się
Otwórz menu
Pomoc w rozmowie kwalifikacyjnej
AI Assistant
Rozszerzenie przeglądarki
Zasoby
Pobierz
FAQ / Pomoc
Przygotowanie do rozmowy kwalifikacyjnej
Bank pytań
Wywiad Bank
Próbne wywiady
Mentorzy
Zasoby
FAQ / Pomoc
Wyszukiwanie pracy
Automatyzacja wyszukiwania pracy
Analiza rynku
Oferty pracy z Telegrama
Zasoby
Kariera
Blog
FAQ / Dokumentacja
Telegram Blog
Telegram Wsparcie
Prawo
Zwrot
Warunki
Prywatność
Prawo posiadacze
Wróć do pytania
Bank pytań
Node.js - Programista
Pytanie
Senior
Znajdź błąd · TypeScript Podstępne błędy Każdy z tych ośmiu fragmentów kompiluje się, przechodzi nieformalny przegląd i wygląda na w porządku. Każdy ukrywa błąd. Dla każdego: powiedz nam, co się psuje, w jakich warunkach — i jak byś to wykrył. Myśl na głos. Interesuje nas, jak czytasz kod, a nie stoper. Nie musisz odgadnąć wszystkiego. 01 Składanie zamówienia 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} potwierdzony`) return id } } 02 Aktualizacja 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('aktualizacja profilu nie powiodła się', err) } res.status(200).json({ status: 'zapisano' }) }) 03 Usuwanie komentarza 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 Paginacja listy function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // wywołujący const results = paginate(rows, page, 20) // strona zaczyna się od 1 w UI 05 Ładowanie artykułów z autorami 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 Rozwiązywanie domyślnych wartości konfiguracji interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonim', } } 07 Test helpera rabatu function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('stosuje rabat', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Obliczanie najlepszych wyników 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) // ... później, gdzie indziej: renderRawResults(results) // oczekiwane [4, 1, 9, 2]
Oznacz jako ukończone
Poprzednia
Dalej