Ερωτήσεις Συνέντευξης για Angular που Πρέπει να Περιμένετε

Από Aaron Cao · Ενημερώθηκε

Ερωτήσεις Συνέντευξης για Angular που Πρέπει να Περιμένετε
Περιμένετε πρώτα το change detection: τι πυροδοτεί έναν έλεγχο, τι αλλάζει το OnPush και πώς ταιριάζουν τα signals. Έπειτα dependency injection, επιλογή τελεστή RxJS και καθαρισμός subscriptions. Οι περισσότεροι γύροι προσθέτουν μια ζωντανή άσκηση, συνήθως μια αναζήτηση typeahead χτισμένη με ένα service, debounceTime και switchMap.

Περιμένετε πρώτα το 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;

Σε επίπεδο ανάγνωσης, ναι. Πολύ Angular σε παραγωγή τρέχει ακόμα σε NgModules, γι' αυτό περιμένετε ερωτήσεις για το τι δήλωνε ένα module και πώς το providedIn αντικατέστησε τους περισσότερους πίνακες provider. Οι ερωτήσεις νέου κώδικα γίνονται σε standalone components, που είναι η προεπιλογή στις πρόσφατες εκδόσεις.

Είναι το AngularJS το ίδιο με το Angular;

Όχι, και οι συνεντευκτές μερικές φορές το ελέγχουν. Το AngularJS είναι η γραμμή 1.x με scopes, digest cycles και controllers. Το Angular από την έκδοση 2 και μετά είναι ένα ξεχωριστό framework χτισμένο πάνω σε TypeScript και components. Αν μια περιγραφή θέσης λέει AngularJS, επιβεβαιώστε ποιο εννοούν πριν προετοιμαστείτε.

Πόσο RxJS χρειάζομαι αν η ομάδα χρησιμοποιεί signals;

Ακόμα πολύ. Τα signals καλύπτουν καλά το state του component, αλλά οι κλήσεις HTTP, τα events του router και οι ροές τιμών φορμών είναι observables, γι' αυτό η επιλογή τελεστή και ο καθαρισμός συνεχίζουν να εμφανίζονται. Οι ομάδες αναμειγνύουν και τα δύο, και το να εξηγείτε πού ταιριάζει το καθένα είναι μια συνηθισμένη ερώτηση senior.

Ρωτούν οι συνεντευκτές για testing;

Συνήθως ως στρατηγική και όχι ως ανάκληση API. Περιμένετε τι θα δοκιμάζατε σε επίπεδο component έναντι end to end, πώς το TestBed στήνει ένα component, και πώς θα προσποιούσασταν ένα service. Το να ονομάσετε το trade-off μετράει περισσότερο από το να απαγγείλετε έναν matcher.

Για πόσες εκδόσεις Angular πρέπει να μπορώ να μιλήσω;

Για αυτήν στην οποία δουλέψατε, συν ό,τι άλλαξε από τότε. Οι συνεντευκτές ρωτούν για standalone components, τα μπλοκ control flow και τα signals επειδή αυτές οι απαντήσεις σηματοδοτούν επικαιρότητα. Το να πείτε σε ποια έκδοση κάνατε το τελευταίο σας release και να σκεφτείτε καθαρά για τα υπόλοιπα είναι μια πλήρης απάντηση.

Σχετικές ερωτήσεις

← Περισσότερα για Ερωτήσεις συνέντευξης ανά ρόλο & θέμα