Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα του λειτουργικού προγραμματισμού;
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('profile update failed', err) } res.status(200).json({ status: 'saved' }) }) 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 || 'Anonymous', } } 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]