Top 21 pytań i odpowiedzi na wywiad z programistami MEAN Stack dla początkujących i doświadczonych
Opublikowany: 2020-03-09Wraz z rosnącą popularnością cyfryzacji we współczesnym przemyśle, firmy i marki chętnie inwestują w szybkie, dynamiczne i wydajne strony internetowe i aplikacje. Jednak powszechna dostępność i dostępność technologii programistycznych sprawia, że wybór odpowiedniej technologii do tworzenia aplikacji internetowych jest trudny. Podczas gdy programowanie typu full-stack, front-end i backend przodują w tworzeniu stron internetowych, pojawia się nowa gwiazda – stos MEAN.
Zasadniczo stos MEAN to technologia open source, która obejmuje cztery technologie oparte na JavaScript, w tym MongoDB, ExpressJS, AngularJS, Node.js (MEAN). Ucząc się i opanowując stos MEAN, możesz korzystać z zalet wielu domen do tworzenia aplikacji internetowych i dynamicznych witryn internetowych.
Przeczytaj: Pytania do wywiadu z programistami Full Stack
Ponieważ zapotrzebowanie na MEAN Stack Developers stale rośnie, w tym poście omówimy najczęściej zadawane pytania do wywiadów dotyczących MEAN Stack.
Więc bez zbędnych ceregieli, przejdźmy od razu!
Top MEAN Stack Pytania i odpowiedzi na wywiad z programistami
1. Jaki jest cel MongoDB?

MongoDB to zorientowany na dokumenty menedżer baz danych przeznaczony do przechowywania dużych ilości danych. Zapisuje dane w binarnym formacie JSON i realizuje koncepcję gromadzenia i dokumentacji. MongoDB to wieloplatformowa baza danych NoSQL wyposażona w wysoką wydajność, wysoką skalowalność i elastyczność, które pozwalają na bezproblemowe wykonywanie zapytań i indeksowanie.
Naucz się tworzyć aplikacje, takie jak Swiggy, Quora, IMDB i nie tylko2. Jaki jest cel ExpressJS?
ExpressJS to framework aplikacji internetowych przeznaczony do obsługi i hostowania projektów Node.js. Jest to framework open-source dostępny na licencji MIT. ExpressJS zarządza przepływem pracy między front-endem a bazą danych i ułatwia płynny i bezpieczny transfer danych. Oferuje doskonałą obsługę błędów i funkcjonalność projektowania stron internetowych, aby zoptymalizować proces tworzenia stron internetowych.
3. Jakiemu celowi służy AngularJS?
AngularJS to platforma do tworzenia aplikacji internetowych typu front-end typu open source, utrzymywana przez Google. Pozwala programistom internetowym używać HTML jako języka szablonów i rozszerzać składnię HTML, aby wyraźnie i precyzyjnie reprezentować komponenty aplikacji internetowej.
4. Jaka jest funkcja Node.js?
Node.JS to wieloplatformowa, jednowątkowa struktura JavaScript o otwartym kodzie źródłowym, która jest używana do tworzenia aplikacji serwerowych i sieciowych. Jest to podstawa stosu MEAN. Oprócz JavaScript, Node.js używał także języków programowania C i C++. Node.js jest wyposażony w zintegrowany serwer WWW, który ułatwia płynne wdrożenie bazy danych MongoDB i jej aplikacji w chmurze.
5. Nazwij IDE, które są powszechnie używane do rozwoju Node.JS?
Najpopularniejsze IDE, które można wykorzystać do rozwoju Node.JS to:
- Atom
- Chmura9
- Zaćmienie
- IDE Komodo
- JetBrainsWebBurza
- JetBrains IntelliJ IDEA
6. Co to jest mangusta?
Mongoose to Object Document Mapper (ODM), co oznacza, że za pomocą Mongoose można definiować obiekty za pomocą silnie określonego schematu, który można dalej mapować do dokumentu MongoDB. Oferuje oparte na schemacie rozwiązanie do modelowania danych aplikacji. Mongoose zawiera wbudowane rzutowanie typów, walidację, budowanie zapytań, zaczepy logiki biznesowej i wiele innych gotowych funkcji.
Przeczytaj: Różnica między rozwojem pełnego stosu a średnim rozwojem stosu
7. Zdefiniować modelowanie DANYCH?
Modelowanie danych to termin używany w kontekście Mongoose i MongoDB. Jak sama nazwa wskazuje, modelowanie danych odnosi się do procesu tworzenia modelu danych dla dostępnych danych, aby można je było przechowywać w bazie danych. Model danych to koncepcyjna reprezentacja obiektów danych, relacji między różnymi obiektami danych oraz reguł definiujących te relacje.
Modelowanie danych pomaga wizualnie przedstawiać dane, a jednocześnie egzekwuje zasady biznesowe, zgodność z przepisami i zasady rządowe dotyczące danych. Jest wdrażany w celu zapewnienia spójności konwencji nazewnictwa, wartości domyślnych, semantyki, bezpieczeństwa i jakości danych.
8. Co to jest REPL w Node.Js?
REPL lub „Read Eval Print Loop” to prosty program, który może akceptować polecenia, oceniać je i drukować wyniki. To, co robi REPL, to tworzenie środowiska, które jest podobne do powłoki Unix/Linux lub konsoli Windows, w którym można wprowadzić polecenie i system, a on odpowie danymi wyjściowymi. Oto funkcje, które wykonuje REPL:
- READ – Odczytuje dane wejściowe dostarczone przez użytkownika, analizuje je do struktury danych JavaScript i przechowuje w pamięci.
- EVAL – Wykonuje strukturę danych.
- PRINT – Drukuje wynik wygenerowany po ocenie polecenia.
- LOOP — zapętla powyższe polecenie, dopóki użytkownik nie naciśnie dwukrotnie Ctrl+C.
9. Zdefiniuj zakres w JavaScript.
W JavaScript każda funkcja ma zasięg, który jest zasadniczo zbiorem zmiennych i reguł określających, w jaki sposób ich unikatowa nazwa uzyskuje dostęp do tych zmiennych. Dostęp do zmiennych objętych zakresem funkcji można uzyskać tylko za pomocą kodu wewnątrz tej funkcji. Chociaż zmienne zawarte w określonym zakresie muszą mieć unikalne nazwy, zakres może istnieć w innym zakresie. W takim przypadku kod najbardziej wewnętrznego zakresu może uzyskać dostęp do zmiennych zawartych w jednym z zakresów.
10. Podaj różnicę między wyszukiwaniem liniowym a wyszukiwaniem binarnym.
Wyszukiwanie liniowe rozpatruje elementy listy jeden po drugim, bez sekwencji przeskoków. Tak więc, pod względem złożoności, klasyfikuje się jako wyszukiwanie O(n), w którym czas potrzebny na przeszukanie listy wzrasta proporcjonalnie do wzrostu listy. W przeciwieństwie do tego, wyszukiwanie binarne rozpoczyna się w środku listy. To wyszukiwanie ma na celu sprawdzenie, czy wartość elementu jest większa lub mniejsza od żądanej wartości.
To dodatkowo określa pozycję wartości na liście – czy będzie ona znajdować się w pierwszej czy drugiej części listy. Pod względem złożoności klasyfikuje się jako wyszukiwanie O(log n), w którym liczba operacji wyszukiwania rośnie stosunkowo wolno niż lista. Dzieje się tak głównie dlatego, że przestrzeń wyszukiwania jest dzielona na połowę w każdej operacji.
Podczas gdy wyszukiwanie binarne wymaga najpierw posortowania danych wejściowych, lista liniowa nie ma takich wymagań wstępnych.
11. Zaznacz różnicę między Node.js, AJAX i jQuery.
Node.js, AJAX i jQuery to zaawansowana implementacja JavaScript. Jednak mają spory udział w różnicach.
Node.js to platforma po stronie serwera, która służy do tworzenia aplikacji klient-serwer, podczas gdy AJAX, czyli asynchroniczny JavaScript i XML, to technika skryptów po stronie klienta, która jest używana głównie do renderowania zawartości strony bez jej odświeżania. AJAX służy głównie do prezentowania treści dynamicznych. jQuery to moduł JavaScript, który uzupełnia AJAX, przechodzenie DOM i pętle. Zawiera wiele przydatnych funkcji wspomagających rozwój JavaScript.
12. Zdefiniuj wstrzykiwanie zależności.
Dependency Injection to koncepcja projektowania oprogramowania, która umożliwia używanie lub wstrzykiwanie usługi w sposób niezależny od jakiegokolwiek użycia klienta. W ten sposób zasadniczo uniemożliwiasz klientowi modyfikowanie zależności, gdy zmieni się usługa bazowa.
Głównym celem wstrzykiwania zależności jest oddzielenie tworzenia zależności klientów od ich zachowania, co pozwala na projektowanie luźno powiązanych programów. W luźno powiązanym programie komponenty zwykle wykorzystują funkcjonalność zdefiniowaną przez interfejsy bez wcześniejszej wiedzy o tym, które klasy implementacyjne są używane.
Wstrzykiwanie zależności umożliwia modyfikowanie lub dostosowywanie zachowania aplikacji poprzez zmianę składników implementujących interfejsy definiujące funkcje aplikacji.

13. Zdefiniuj konteneryzację.
Konteneryzacja jest alternatywą dla tradycyjnej wirtualizacji maszyn opartej na hiperwizorze, polegającej na enkapsulacji aplikacji w kontenerze we własnym środowisku operacyjnym. W przypadku konteneryzacji zamiast klonowania systemu operacyjnego dla poszczególnych maszyn wirtualnych jest on współdzielony przez różne kontenery. Ładując aplikację na maszynę wirtualną, możesz uruchomić aplikację na dowolnej odpowiedniej maszynie fizycznej bez martwienia się o zależności.
14. Zdefiniuj piramidę testową. Jak można zaktualizować Piramidę Testową podczas omawiania API HTTP?
Zazwyczaj aplikacje internetowe z pełnym stosem są duże i złożone. Zostały zaprojektowane z myślą o rozszerzeniu ich funkcjonalności, aby obsłużyć setki różnych wymagań milionów użytkowników. W konsekwencji, wraz ze wzrostem rozmiaru pełnego stosu kodu i liczby użytkowników, koszty radzenia sobie z błędami również rosną. Można to jednak z powodzeniem złagodzić, stosując koncepcję piramidy testowej do swojej bazy kodu.
Podejście piramidy testowej implikuje radykalny sposób myślenia o tym, jak różne rodzaje testów automatycznych mogą i powinny być wykorzystywane do tworzenia zrównoważonego portfela. Podkreśla, że liczba niskopoziomowych testów jednostkowych powinna być znacznie większa niż wysokopoziomowych testów BroadStack przeprowadzanych przez GUI.
Omawiając API HTTP, możesz zaktualizować piramidę testową, wykonując następujące kroki:
- Uwzględnij wiele testów jednostkowych niskiego poziomu dla swojego modelu.
- Uwzględnij mniej testów łączenia używanych do określenia, w jaki sposób modele współpracują ze sobą.
- Uwzględnij mniej testów potwierdzających używanych do testowania prawdziwych punktów końcowych HTTP.
15. Do czego służą indeksy w MongoDB?
W MongoDB indeksy służą do obsługi i ułatwienia wydajnego wykonywania zapytań. Bez indeksów MongoDB musi wykonać skanowanie kolekcji, w którym musi przeskanować każdy dokument w kolekcji i wybrać odpowiednie dokumenty, które pasują do zapytania. Jeśli jednak do każdego zapytania przypisany jest odpowiedni indeks, MongoDB może użyć tego indeksu do ograniczenia liczby dokumentów, które musi sprawdzić.
16. Jaka jest różnica między klasami a interfejsami w TypeScript?
Klasy i interfejsy to struktury, które promują zarówno programowanie obiektowe, jak i sprawdzanie typów w TypeScript. Chociaż klasa jest planem, na podstawie którego można utworzyć grupę obiektów o tej samej konfiguracji (właściwości i metody), interfejs jest grupą powiązanych właściwości i metod opisujących obiekt. Jednak interfejs nie zapewnia implementacji ani inicjalizacji obiektów.
Zazwyczaj klasa definiuje, jak obiekt powinien wyglądać i działać, a zatem tworzy i implementuje plan, inicjując właściwości klasy i definiując metody. Klasy są obecne we wszystkich fazach kodu. Z drugiej strony interfejs jest wirtualną strukturą, która istnieje tylko w kontekście TypeScript. Kompilator TypeScript używa interfejsów wyłącznie do sprawdzania typu.
17. Zdefiniuj „Dekoratory” w TypeScript.
W języku TypeScript dekorator odwołuje się do specjalnego rodzaju deklaracji, która jest zwykle dołączona do deklaracji klasy, metody, akcesora, właściwości lub parametru. Dekoratory to funkcje, które przyjmują swój cel jako argument. Pozwalają na uruchomienie dowolnego kodu wokół wykonania celu lub nawet zastąpienie celu zupełnie nową definicją.
18. Co oznacza „oddzwanianie” w Node.js?
W Node.js wywołanie zwrotne jest asynchronicznym odpowiednikiem funkcji. Node.js w dużym stopniu opiera się na wywołaniach zwrotnych, które są wywoływane w kulminacji lub zakończeniu danego zadania. Załóżmy na przykład, że funkcja przeznaczona do odczytu plików może rozpocząć odczytywanie plików i natychmiast zwrócić sterowanie do środowiska wykonawczego, aby ułatwić wykonanie następnej instrukcji.
Po zakończeniu operacji wejścia/wyjścia pliku funkcja wywołania zwrotnego jest uruchamiana i przekazuje zawartość pliku jako parametr. Daje to pewność, że nie ma blokowania ani oczekiwania na wejście/wyjście pliku. To właśnie ta cecha sprawia, że Node.js jest wysoce skalowalny, ponieważ może przetwarzać dużą liczbę żądań bez czekania na wyniki jakiejkolwiek funkcji.
Wszystkie interfejsy API węzłów są napisane w taki sposób, że mogą obsługiwać wywołania zwrotne.
19. Zdefiniuj Cross-Site Scripting (XSS).
Cross-site Scripting (XSS) to atak polegający na wstrzykiwaniu kodu po stronie klienta, w którym złośliwe skrypty są wykonywane w przeglądarce internetowej, umieszczając złośliwy kod na legalnej stronie internetowej lub aplikacji internetowej. Może również wystąpić, gdy dana osoba kliknie niezaufane linki, które mogą przekazywać atakującym pliki cookie i inne poufne informacje.
Atak ma miejsce, gdy odwiedzasz stronę internetową lub aplikację internetową, która wykonuje złośliwy kod. W ten sposób strona internetowa lub aplikacja internetowa staje się narzędziem do dostarczania złośliwych skryptów do przeglądarki użytkownika.
Najczęściej używanymi pojazdami do ataków cross-site scripting są fora, fora dyskusyjne, a nawet strony internetowe, które zachęcają użytkowników do komentowania.
20. Zdefiniuj AOT i wspomnij o jego zaletach.
Aplikacje Angular zawierają szablony HTML obok standardowych komponentów. Ponieważ przeglądarka nie może bezpośrednio zrozumieć tych komponentów i szablonów HTML, aplikacje Angular muszą zostać skompilowane przed uruchomieniem ich w przeglądarce.
Kompilator Angular z wyprzedzeniem (AOT) konwertuje kod Angular HTML i TypeScript na kod JavaScript w fazie kompilacji, zanim przeglądarka będzie mogła pobrać i uruchomić kod. Kompilując aplikację Angular na etapie budowania, zachęcasz do szybszego uruchamiania aplikacji Angular w przeglądarce.

Korzyści z używania kompilatora AOT to:
- Korzystając z AOT, przeglądarka może pobrać wstępnie skompilowaną wersję aplikacji. Przeglądarka pobiera kod wykonywalny, dzięki czemu może natychmiast renderować aplikację Angular, bez konieczności wcześniejszego skompilowania aplikacji.
- Dzięki AOT kompilator umieszcza zewnętrzne szablony HTML i arkusze stylów CSS w aplikacji JavaScript, eliminując w ten sposób oddzielne żądania AJAX dotyczące plików źródłowych.
- Podczas samego etapu kompilacji kompilator AOT wykrywa i zgłasza wszelkie błędy powiązania szablonu.
- Ponieważ AOT kompiluje szablony HTML i komponenty do plików JavaScript przed udostępnieniem ich klientom, nie ma już szablonów do przeczytania, a nawet ryzykownej oceny HTML/JavaScript po stronie klienta. Zmniejsza to możliwości ataków iniekcyjnych.
21. Co to jest system Grid w CSS?
W CSS system siatki jest strukturą używaną do układania treści zarówno w pionie, jak iw poziomie w spójny i łatwy w zarządzaniu sposób. Systemy gridowe składają się z dwóch podstawowych elementów – wierszy i kolumn. Niektóre z najczęściej używanych systemów siatek to Simple, Pure, Flexbox, Bootstrap i Foundation.
Wniosek
To jest lista naszych najlepszych pytań i odpowiedzi podczas wywiadów z programistami stosu MEAN. Mamy nadzieję, że pomoże to w złamaniu kolejnego wywiadu ze stosu MEAN!
Opanowanie języków i narzędzi z pełnym stosem jest ważne, aby stać się przeciętnym programistą stosu. Podróż bycia deweloperem full-stack jest trudna, ale także satysfakcjonująca. Możliwości twórcze i finansowe naprawdę sprawiają, że jest to jedna z najlepszych karier na świecie, istnieje pasja, aby ją realizować. Jeśli masz pasję do tworzenia inteligentnych chatbotów, portfeli fintech i nie tylko, sprawdź pełny kurs tworzenia oprogramowania PG od upGrad.