Σε ποια μορφή σου έρχονται οι εργασίες; Ποιο είναι το επίπεδο αυτονομίας σου;
Frontend
Ποιες βασικές ετικέτες HTML γνωρίζετε;
Πες μου λίγα για τον εαυτό σου και την πιο ενδιαφέρουσα εμπειρία σου.
Πες μου για τον εαυτό σου και την εργασιακή σου εμπειρία.
Υλοποιήστε τη λειτουργία debounce(fn, delay), η οποία καθυστερεί την κλήση της λειτουργίας μέχρι να περάσει ο καθορισμένος χρόνος σιωπής.
Υλοποιήστε μια κλάση σύμφωνα με το μοτίβο Παρατηρητής (Observer / Event Emitter): αποθήκευση συνδρομητών, εγγραφή σε γεγονός, διαγραφή από γεγονός, ειδοποίηση συνδρομητών.
Αναφέρατε τις δοκιμές — γράψατε δοκιμές στην [εταιρεία] και στην τελευταία σας θέση εργασίας;
Υλοποιήστε την κλάση EventEmitter: τη μέθοδο subscribe(event, handler) για εγγραφή σε ένα γεγονός και τη μέθοδο emit(event, data) για την κλήση όλων των συνδρομητών. Επίσης, υλοποιήστε τη μέθοδο unsubscribe.
Πώς λύσατε το πρόβλημα της συμβίωσης μιας νέας στοίβας και του κώδικα Legacy σε ένα έργο; Εξετάσατε μικρο-frontend ή web components;
Υλοποιήστε τη λειτουργία debounce.
Έχεις εμπειρία συμμετοχής στη μετάβαση από Vue 2 σε Vue 3 — τι ακριβώς έκανες εσύ;
Υλοποίηση εικονικής κύλισης: υπάρχει μια μεγάλη λίστα μηνυμάτων (10.000 στοιχεία), πρέπει να αποδοθούν μόνο τα ορατά στοιχεία μέσα σε ένα κοντέινερ με σταθερό ύψος 300px, με ύψος γραμμής 30px.
function createEmitter() { const events = new Map(); function on(event, handler) { if(!events.has(event)) { events.set(event, [handler]) return } events.get(event).push(handler) } function off(event, handler) { // TODO: διαγράψτε τον χειριστή } function emit(event, payload) { // TODO: καλέστε όλους τους συνδρομητές του γεγονότος } return { on, off, emit }; } const bus = createEmitter(); const unsub1 = bus.on("order:created", (payload) => { console.log("handler1:", payload.id); }); const handler2 = (payload) => { console.log("handler2:", payload.id); } bus.on("order:created", handler2);
Σε ποια μορφή σου έρχονται τα καθήκοντα; Έχεις υψηλό βαθμό αυτονομίας;
Πρακτική άσκηση: εργασία με δύο πίνακες αντικειμένων — σύγκριση με βάση το κλειδί χρησιμοποιώντας δομές Map και διάσχιση με δύο βρόχους
Έχεις εμπειρία στη συγγραφή δοκιμών; Τι είδους δοκιμές έχεις γράψει και σε ποιο όγκο;
function memoize(fn, options = {}) { const { maxSize = 1000, keyOf = (...a) => JSON.stringify(a), lruTouch = true, } = options; let hits = 0; let misses = 0; const cache = new Map(); const getKey = (...args) => keyOf(...args); const wrapped = (...args) => { // γράψε τον κώδικα εδώ return fn(...args); }; // και εδώ return wrapped; }
Γιατί καταλήξατε στο συμπέρασμα ότι χρειάζεται ένα προσαρμοσμένο UI-kit και όχι απλώς να χρησιμοποιήσετε στοιχεία από ένα έτοιμο UI;
Υλοποιήστε μια εικονική λίστα (Virtual List): υπάρχει μια μεγάλη λίστα μηνυμάτων, και πρέπει να αποδοθούν μόνο τα ορατά στοιχεία μέσα σε ένα κοντέινερ με σταθερό ύψος 300 εικονοστοιχείων. Το ύψος μιας γραμμής είναι 30 εικονοστοιχεία.
Πες μου για την σχετική εργασιακή σου εμπειρία.