Sobes.tech

Node.js

Kada galėsite pradėti dirbti, jei gausite pasiūlymą?

Senior
224

Kokios yra funkcionalaus programavimo privalumai ir trūkumai?

Senior
221

Kuo skiriasi INNER JOIN ir LEFT JOIN? Kas nutinka kairės lentelės eilutei, jei dešinės lentelės atitinkamos eilutės nėra?

Senior
183

Įgyvendinkite vieną arba abi funkcijas programėlėje: naudotojas gali pritvirtinti ir atpinti svetaines su piktograma sąraše; pritvirtintos svetainės turėtų būti rodomos sąrašo viršuje. Antra funkcija yra pasirinktinė pagal jūsų nuožiūrą.

Senior
168

Kodėl norite dabar pakeisti įmonę?

Senior
159

Ką reiškia, kai komanda yra idempotentinė?

Senior
152

Kuo skiriasi || ir ?? operatoriai JavaScript/TypeScript? Kas nutiks, jei retryLimit bus nustatytas į 0?

Senior
141

Ištrinti komentarą 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() }) Sąrašo puslapiavimas 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

Ar kada nors rašėte vienetinius testus? Iki kokio lygio?

Senior
98

Aptikti klaidą · TypeScript Slaptos klaidos Kiekvienas iš šių aštuonių fragmentų kompiliuojasi, praeina atsitiktinį peržiūrėjimą ir atrodo gerai. Kiekvienas slepia klaidą. Kiekvienam: pasakykite, kas sulūžo, kokiomis sąlygomis — ir kaip tai aptiktumėte. Kalbėkite garsiai. Mus domina, kaip skaitote kodą, o ne laikmatis. Nereikia visko pataikyti. 01 Pateikti užsakymą 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 Atnaujinti 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('profilio atnaujinimas nepavyko', err) } res.status(200).json({ status: 'išsaugota' }) }) 03 Pašalinti komentarą 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 Puslapiavimas function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // kviečiantis const results = paginate(rows, page, 20) // puslapis prasideda nuo 1 UI 05 Straipsnių įkėlimas su autoriais 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 Konfigūracijos numatytųjų reikšmių sprendimas interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Nežinomas', } } 07 Nuolaidos pagalbinės funkcijos testavimas function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('taikoma nuolaida', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Aukščiausių įvertinimų skaičiavimas 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) // vėliau, kitur: renderRawResults(results) // tikimasi [4, 1, 9, 2]

Senior
74