Sobes.tech

Node.js

Millal saate alustada tööd, kui saate pakkumise?

Senior
224

Millised on funktsionaalse programmeerimise eelised ja puudused?

Senior
221

Mis vahe on INNER JOIN ja LEFT JOIN vahel? Mis juhtub vasaku tabeli reaga, kui paremas tabelis ei ole vastavat rida?

Senior
183

Rakendage rakenduses ühe või mõlema funktsiooni: kasutaja saab loendis ikooniga saite kinnitada ja lahti ühendada; kinnitatud saidid peaksid olema loendi ülaosas. Teine funktsioon on valikuline vastavalt teie soovile.

Senior
168

Miks soovite praegu ettevõtet vahetada?

Senior
159

Mida tähendab, kui meeskond on idempotentne?

Senior
152

Mis vahe on || ja ?? operaatoritel JavaScript/TypeScript? Mis juhtub, kui retryLimit on seatud väärtusele 0?

Senior
139

Kustuta kommentaar 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() }) Loendi lehitsemine function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }

Senior
109

Kas olete kunagi kirjutanud üksuse teste? Kui ulatuslikult?

Senior
98

Avastage viga · TypeScript Slēptās kļūdas Katrs no šiem astoņiem fragmentiem tiek kompilēts, pāriet nejaušā pārskatā un izskatās labi. Katrs slēpj kļūdu. Katram: pastāstiet, kas salūzīs, kādos apstākļos — un kā to atklātu. Runājiet skaļi. Mēs interesē, kā lasāt kodu, ne stundu. Nav problēmas, ja neizdodas visus atrast. 01 Pasūtījuma veikšana 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 Profila atjaunināšana app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('profila atjaunināšana neizdevās', err) } res.status(200).json({ status: 'saglabāts' }) }) 03 Komentāra dzēšana 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 Saraksta lapošana function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // izsaucējs const results = paginate(rows, page, 20) // lapa sākas ar 1 UI 05 Rakstu ielāde ar autoriem 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 Noklusējuma konfigurācijas risinājums interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Nēvārds', } } 07 Testēšana palīdzības funkcijas atlaide function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('piemēro atlaidi', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Top rezultātu aprēķināšana 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ēlāk citur: renderRawResults(results) // gaidāms [4, 1, 9, 2]

Senior
74