Ερωτήσεις Συνέντευξης για Angular που Πρέπει να Περιμένετε
Από Aaron Cao · Ενημερώθηκε

Περιμένετε πρώτα το change detection: τι πυροδοτεί έναν έλεγχο, τι αλλάζει το OnPush και πώς ταιριάζουν τα signals. Έπειτα dependency injection, επιλογή τελεστή RxJS και καθαρισμός subscriptions. Οι περισσότεροι γύροι προσθέτουν μια ζωντανή άσκηση, συνήθως μια αναζήτηση typeahead χτισμένη με ένα service, debounceTime και switchMap.
Ποιες έννοιες Angular ρωτιούνται περισσότερο;
Η επιφάνεια API του Angular είναι μεγάλη, και οι δημοσιευμένες λίστες ερωτήσεων αντιμετωπίζουν κάθε decorator σαν να είναι εξίσου πιθανό να εμφανιστεί. Δεν είναι εξίσου πιθανά. Αυτή η ενότητα καλύπτει τους τομείς που πραγματικά κρίνουν τους περισσότερους γύρους, ώστε η εξάσκησή σας να ταιριάζει με την πραγματική κατανομή. Τέσσερις ομάδες κυριαρχούν:
- Change detection: τι πυροδοτεί έναν έλεγχο, πώς το Zone.js κάνει patch στα ασύγχρονα API, τι αλλάζει το
OnPushκαι πώς τα signals επιτρέπουν στο Angular να παραλείπει εργασία. - Dependency injection: ιεραρχικοί injectors,
providedIn, injection tokens και η συνάρτησηinject()έναντι παραμέτρων constructor. - RxJS: observables έναντι promises, επιλογή του σωστού τελεστή και καθαρισμός subscriptions πριν καταστραφεί ένα component.
- Αρχιτεκτονική components: standalone components, inputs και outputs, content projection και lifecycle hooks.
Η επίγνωση της έκδοσης μετράει περισσότερο εδώ απ' ό,τι στους περισσότερους γύρους άλλων frameworks, επειδή το Angular άλλαξε κατεύθυνση. Τα standalone components, τα ενσωματωμένα μπλοκ control flow @if και @for, τα deferrable views και τα signals ήρθαν όλα σε πρόσφατες κύριες εκδόσεις, γι' αυτό οι συνεντευκτές συχνά ρωτούν τι θα γράφατε σήμερα σε σχέση με το τι χρησιμοποιεί μια παλαιότερη codebase. Το να γνωρίζετε και τα δύο, και γιατί άλλαξε το framework, δίνει καλύτερη εντύπωση από το να πάρετε το μέρος του ενός.
Πόσο βαθιές είναι οι ερωτήσεις για RxJS και signals;
Πιο βαθιές από απλά ονόματα τελεστών. Η ερώτηση RxJS που ξεχωρίζει επίπεδα είναι ποιος τελεστής flattening ταιριάζει: το switchMap ακυρώνει το προηγούμενο εσωτερικό αίτημα και ταιριάζει σε ένα typeahead, το mergeMap εκτελεί τα πάντα παράλληλα, το concatMap διατηρεί τη σειρά, και το exhaustMap αγνοεί νέα events όσο ένα άλλο είναι ακόμη σε εξέλιξη, γι' αυτό ταιριάζει σε ένα κουμπί υποβολής. Οι συνεντευκτές κάνουν έπειτα την ερώτηση διαρροής: τι συμβαίνει σε μια χειροκίνητη subscription όταν καταστρέφεται το component, και γιατί το async pipe ή το takeUntilDestroyed εξαλείφουν το πρόβλημα.
Οι ερωτήσεις για signals είναι νεότερες και συνήθως ξεκινούν από το κίνητρο και όχι από το API. Περιμένετε να εξηγήσετε τι είναι ένα signal, πώς το computed προκύπτει από αυτό, σε τι χρησιμεύει ένα effect, και γιατί τα signals δίνουν στο Angular έναν πιο λεπτομερή τρόπο να ξέρει τι άλλαξε από το να ξανακοιτάει ολόκληρο το δέντρο components. Μια δυνατή απάντηση συνδέει τα δύο θέματα: τα signals και το OnPush μειώνουν και τα δύο τη δουλειά που κάνει το change detection, αλλά τα signals το κάνουν παρακολουθώντας reads αντί να περιορίζουν πότε τρέχει ένας έλεγχος.
Οι συνεντευκτές δεν περιμένουν να έχετε ήδη χρησιμοποιήσει κάθε πρόσφατο feature. Περιμένουν να πείτε σε ποια έκδοση δουλέψατε τελευταία και να σκεφτείτε καθαρά για τα υπόλοιπα.
Ποιες ασκήσεις live coding πρέπει να περιμένετε;
Οι περισσότεροι γύροι Angular περιλαμβάνουν την κατασκευή κάτι μικρού ενώ ο συνεντευκτής παρακολουθεί. Οι επαναλαμβανόμενες ασκήσεις είναι σταθερές μεταξύ εταιρειών:
- Κλήση ενός API από ένα service και απόδοση του αποτελέσματος με το async pipe.
- Κατασκευή μιας αναζήτησης typeahead με
debounceTime,distinctUntilChangedκαιswitchMap. - Γράψιμο ενός reactive form με έναν προσαρμοσμένο validator και ορατές καταστάσεις σφάλματος.
- Πέρασμα δεδομένων μεταξύ ενός component parent και ενός child, και έπειτα μεταφορά τους σε ένα service.
- Προσθήκη μιας διαδρομής με ένα lazy-loaded component και ένα guard.
Ένας μηχανικός front-end που κάνει συνέντευξη για έναν ρόλο προϊόντος μεσαίου επιπέδου, για παράδειγμα, μπορεί να χτίσει το typeahead, και έπειτα να πιεστεί σχετικά με το τι συμβαίνει όταν οι απαντήσεις φτάνουν εκτός σειράς, πώς να δείξει μια κατάσταση φόρτωσης, και τι πρέπει να συμβεί όταν ο χρήστης καθαρίζει την είσοδο. Αυτές οι επεκτάσεις είναι εκεί που κρίνεται ο γύρος, γι' αυτό εξασκηθείτε στις ερωτήσεις συνέχειας και όχι στην ιδανική πορεία. Γειτονικά σύνολα με τα οποία οι γύροι Angular ακόμα συχνά ανοίγουν, συμπεριλαμβανομένων βασικών JavaScript και TypeScript, βρίσκονται στο κέντρο τραπεζών ερωτήσεων.
Πώς εξασκείστε ώστε να μεταφέρεται στον πραγματικό γύρο;
Το διάβασμα μιας λίστας ερωτήσεων χτίζει αναγνώριση, όχι ανάκληση, και ο γύρος ελέγχει την ανάκληση ενώ κάποιος παρακολουθεί. Η λύση είναι επαναλήψεις στην πραγματική μορφή του γύρου: χτίστε τις βασικές ασκήσεις από ένα κενό project, αφηγηθείτε δυνατά τις αποφάσεις change detection και subscription ενώ πληκτρολογείτε, και απορροφήστε διακοπές χωρίς να χάσετε τον ειρμό. Το να τρέξετε το σύνολο ως προφορική πρόβα, μία ερώτηση τη φορά με ερωτήσεις συνέχειας, είναι ακριβώς αυτό για το οποίο χρησιμεύει η εξάσκηση mock interview.
Ένας περιορισμός που αξίζει να ειπωθεί ξεκάθαρα: οι ζωντανοί γύροι Angular σχεδόν πάντα τρέχουν σε έναν κοινόχρηστο editor ή με την οθόνη σας ορατή, και οτιδήποτε βρίσκεται σε αυτήν την οθόνη είναι ορατό στον συνεντευκτή. Ένας βοηθός ανήκει στην προετοιμασία και σε γύρους καθοδηγούμενους από συζήτηση, όχι σε μια κοινόχρηστη οθόνη. Ποιες μορφές επιτρέπουν τι καλύπτεται στους τύπους συνέντευξης.
Συχνές ερωτήσεις
Χρειάζεται ακόμα να ξέρω τα NgModules;
Είναι το AngularJS το ίδιο με το Angular;
Πόσο RxJS χρειάζομαι αν η ομάδα χρησιμοποιεί signals;
Ρωτούν οι συνεντευκτές για testing;
Για πόσες εκδόσεις Angular πρέπει να μπορώ να μιλήσω;
Σχετικές ερωτήσεις
- Ποιες ερωτήσεις συνέντευξης για Databricks να περιμένω;
- Ποιες ερωτήσεις συνέντευξης .NET να περιμένω;
- Ποιες ερωτήσεις συνέντευξης μηχανικού ποιότητας να περιμένω;
- Τι ερωτήσεις να περιμένω σε μια quant συνέντευξη;
- Ποιες ερωτήσεις συνέντευξης Snowflake να περιμένω;
- Ποιες ερωτήσεις να περιμένω σε συνέντευξη εκπαιδευτικού;