ფუნქციური პროგრამირების უპირატესობები და ნაკლოვანებები რა არის?
Node.js
როდის შეძლებთ მუშაობის დაწყებას, თუ შეთავაზებას მიიღებთ?
რა არის INNER JOIN და LEFT JOIN შორის განსხვავება? რა ხდება მარცხენა სვეტთან, თუ მარჯვენა სვეტში შესაბამისი სვეტი არ არსებობს?
რა ნიშნავს, თუ გუნდი არის იდემპოტენტი?
განახორციელეთ ერთი ან ორივე ფუნქცია აპლიკაციაში: მომხმარებელი შეუძლია საიტების პინვა და ამოღება სიის იკონით; პინული საიტები უნდა გამოჩნდეს სიას ზემოთ. მეორე ფუნქცია თქვენი სურვილის მიხედვით არის არჩევითი.
რატომ გსურთ ამჟამად კომპანიას შეცვლა?
რა არის || ოპერატორი და ?? ოპერატორი შორის განსხვავება JavaScript/TypeScript-ში? რა მოხდება, თუ retryLimit-ს მნიშვნელობა 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]