Frontend
Πώς δομούνταν γενικά η ομαδική εργασία, πώς ανατίθεντο και διανέμονταν τα καθήκοντα, και με ποιον αρχή εργαζόταν;
Πώς αποτρέπουμε την διπλή χρέωση σε επαναλαμβανόμενο αίτημα (αποκλειστικότητα);
Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα ενός προσαρμοσμένου UI-kit;
Τι είναι το HLS, DASH, το μανιφέστο και το τμήμα;
Χρειάστηκε να εμβαθύνετε στις ρυθμίσεις του linter; Ποια στοιχεία ρυθμίσατε: πρόσθετα, κανόνες σύνταξης, αυτόματη διόρθωση;
Ποια είναι η διαφορά μεταξύ __proto__, [[Prototype]] και prototype;
Πώς αποφεύγετε τις διαρροές μνήμης κατά τη διαγραφή ενός στοιχείου από το DOM, εάν ο χειριστής συμβάντος αποθηκεύεται σε ένα παγκόσμιο αντικείμενο;
[όνομα] ρώτησε: παρακαλώ, πες μας για την εμπειρία σου.
Ποιος είναι ο σκοπός των κλειδιών στη λίστα στοιχείων; Τι θα συμβεί αν δεν τα καθορίσουμε;
Αναφέρετε τις εργασίες ή τα επιτεύγματα που είστε περήφανοι πρόσφατα.
Τι συμβαίνει όταν εισάγεις μια διεύθυνση URL στον browser (https://google.com); Περιέγραψε όλη τη διαδικασία από την εισαγωγή μέχρι την εμφάνιση του περιεχομένου.
Πώς να διορθώσετε το πρόβλημα των περιττών αιτημάτων δεδομένων στον πελάτη, όταν τα δεδομένα έχουν ήδη φορτωθεί στον διακομιστή μέσω SSR;
/** * Εργασία 1: Γενικά και Ασφάλεια Τύπου Κλειδιού * Δημιουργήστε μια συνάρτηση `getProperty` που παίρνει ένα αντικείμενο και ένα κλειδί. * Χρησιμοποιήστε γενικούς τύπους για να διασφαλίσετε ότι η συνάρτηση είναι ασφαλής τύπου και ότι το κλειδί υπάρχει στο αντικείμενο. */ function getProperty<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } getProperty('str', 'toString') /** * Εργασία 2: Δεδομένων πολλαπλών δηλώσεων διεπαφής Todo παρακάτω, εξηγήστε τι συμβαίνει όταν αυτές υπάρχουν στον ίδιο χώρο. * Συζητήστε πώς τις αντιμετωπίζει η TypeScript και συμπληρώστε το αντικείμενο `myTodo` για να ικανοποιεί τις απαιτήσεις της συγχωνευμένης διεπαφής Todo. */ interface Todo { title: string; dueDate: Date; } interface Todo { description: string; completed: boolean; }
Έχεις αντιμετωπίσει ποτέ πρόβλημα όταν το μοντέλο στο backend άλλαζε (π.χ. ένα πεδίο εξαφανιζόταν) και αυτό το πεδίο χρησιμοποιούνταν σε πολλά σημεία στον κώδικα; Πώς το αντιμετώπισες;
Ξέρεις το μοτίβο pipe; Πώς διαφέρει από το compose;
/** * Υλοποιήστε τη μέθοδο times για ένα αριθμητικό αντικείμενο. * Η συνάρτηση πρέπει να δέχεται ένα callback και να το καλεί * τον καθορισμένο αριθμό φορών με το τρέχον δείκτη επανάληψης. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Παραδείγματα console.clear(); (3).times(console.log) // 0 // 1 // 2
Έχουμε ένα μεγάλο έργο σε ένα monorepo με ενιαία ροή κυκλοφορίας. Αποφασίσαμε να ξεχωρίσουμε το frontend και το πίνακα διαχείρισης σε ξεχωριστά repositories, αλλά το backend παρέμεινε μονολιθικό. Υπάρχει το πρόβλημα της ασύγχρονης έκδοσης μεταξύ backend και πελάτη. Πώς θα έβλεπες τη λύση σε αυτό το πρόβλημα για να είσαι όσο το δυνατόν περισσότερο προστατευμένος από σφάλματα στην παραγωγή;
Προσθέστε φιλτράρισμα στη λίστα των οικοπέδων κατά πόλη και αριθμό δωματίων, χρησιμοποιώντας δεδομένα από το μπλοκ φίλτρων στην απάντηση API. Οι τιμές των φίλτρων πρέπει να αποθηκεύονται στις παραμέτρους URL ώστε η σελίδα να είναι προσβάσιμη μέσω άμεσου συνδέσμου.
Πώς σχεδίαζε ο σχεδιαστής τα μοντέλα και πώς αλληλεπιδρούσατε μαζί τους;
Τι είναι τα tokens πρόσβασης και ανανέωσης;