Sobes.tech

ფუნქციური პროგრამირების უპირატესობები და ნაკლოვანებები რა არის?

Senior
227

როდის შეძლებთ მუშაობის დაწყებას, თუ შეთავაზებას მიიღებთ?

Senior
226

რა არის INNER JOIN და LEFT JOIN შორის განსხვავება? რა ხდება მარცხენა სვეტთან, თუ მარჯვენა სვეტში შესაბამისი სვეტი არ არსებობს?

Senior
187

რა ნიშნავს, თუ გუნდი არის იდემპოტენტი?

Senior
178

განახორციელეთ ერთი ან ორივე ფუნქცია აპლიკაციაში: მომხმარებელი შეუძლია საიტების პინვა და ამოღება სიის იკონით; პინული საიტები უნდა გამოჩნდეს სიას ზემოთ. მეორე ფუნქცია თქვენი სურვილის მიხედვით არის არჩევითი.

Senior
170

რატომ გსურთ ამჟამად კომპანიას შეცვლა?

Senior
162

რა არის || ოპერატორი და ?? ოპერატორი შორის განსხვავება JavaScript/TypeScript-ში? რა მოხდება, თუ retryLimit-ს მნიშვნელობა 0-ად იქნება მითითებული?

Senior
151

კომენტარის წაშლა 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
117

თქვენ ოდესმე დაწერეთ ერთეულური ტესტები? რა დონეზე?

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
78