Када ћете моћи да почнете да радите ако добијете понуду?
Node.js
Које су предности и мане функционалног програмирања?
Koja je razlika između INNER JOIN i LEFT JOIN? Šta se dešava sa redom iz leve tabele ako ne postoji odgovarajući red u desnoj tabeli?
Implementirajte jednu ili obe funkcije u aplikaciji: korisnik može pinovati i otpinovati sajtove pomoću ikone na listi; pinovani sajtovi treba da se prikazuju na vrhu liste. Druga funkcija je opcionalna po vašem nahođenju.
Зашто желите да промените компанију управо сада?
Šta znači da je tim idempotentan?
Koja je razlika između operatora || i ?? u JavaScript/TypeScript? Šta će se dogoditi ako je retryLimit postavljen na 0?
Обриши коментар 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() }) Пагинација листе function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }
Да ли сте икада писали јединичне тестове? У којој мери?
Отслеживање грешке · TypeScript Скривене грешке Сваки од ових осам фрагмената се компајлира, пролази кроз случајни преглед и изгледа добро. Сваки скрива грешку. За сваки: кажите нам шта се ломило, под којим условима — и како бисте то открили. Размишљајте гласно. Интересује нас како читате код, а не тајмер. У реду је ако не погодите све. 01 Наручивање 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 Ажурирање профила app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('неуспешно ажурирање профила', err) } res.status(200).json({ status: 'сачувано' }) }) 03 Брисање коментара 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 Пагинација листе function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // позивач const results = paginate(rows, page, 20) // страница почиње од 1 у UI-ју 05 Учитавање чланака са ауторима 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 Решавање подразумеваних конфигурација interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Анонимно', } } 07 Тестирање помоћне функције за попуст function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('примењује попуст', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Прогнозирање врхунских резултата 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) // ... касније, негде другде: renderRawResults(results) // очекивано [4, 1, 9, 2]