Sobes.tech

Node.js

Када ћете моћи да почнете да радите ако добијете понуду?

Senior
224

Које су предности и мане функционалног програмирања?

Senior
221

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?

Senior
183

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.

Senior
168

Зашто желите да промените компанију управо сада?

Senior
159

Šta znači da je tim idempotentan?

Senior
152

Koja je razlika između operatora || i ?? u JavaScript/TypeScript? Šta će se dogoditi ako je retryLimit postavljen na 0?

Senior
141

Обриши коментар 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) }

Senior
110

Да ли сте икада писали јединичне тестове? У којој мери?

Senior
98

Отслеживање грешке · 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]

Senior
74