Pytania i odpowiedzi dotyczące wywiadu na temat inżynierii oprogramowania [Dla nowicjuszy i doświadczonych]

Opublikowany: 2020-11-18

Inżynieria oprogramowania jest obecnie jednym z najbardziej poszukiwanych wyborów zawodowych. Odnoszący sukcesy profesjonaliści w tej konkurencyjnej dziedzinie muszą zrównoważyć swoje umiejętności techniczne, biznesowe i osobiste, aby utrzymać przewagę w grze.

Ponadto postęp technologiczny przyspiesza i zakłóca branże. Dlatego ważne jest, aby być na bieżąco z podstawowymi koncepcjami. W tym artykule omówimy najważniejsze pytania i odpowiedzi dotyczące wywiadów dotyczących inżynierii oprogramowania, które pomogą Ci w przygotowaniach.

Zanim przejdziemy do pytań i odpowiedzi, najpierw rzucimy okiem na kilka oznaczeń stanowisk, które możesz podjąć w tej dziedzinie:

  • Twórca oprogramowania
  • Programista pełnego stosu
  • Programista
  • kierownik projektu IT
  • Menedżer systemów informatycznych
  • Naukowiec danych
  • Inżynier uczenia maszynowego
  • Inżynier chmury
  • Inżynier ds. cyberbezpieczeństwa

Podczas rozmowy kwalifikacyjnej na dowolne z powyższych stanowisk Twój potencjalny pracodawca sprawdzi Twoją wiedzę i umiejętności koncepcyjne. Dlatego początkujący inżynierowie oprogramowania mogą czerpać korzyści z połączenia swoich stopni naukowych z praktycznym doświadczeniem, czy to poprzez praktyczne projekty, czy staże.

Poza tym Twoja umiejętność komunikacji i orientacja na zespół mogą odgrywać znaczącą rolę w odróżnianiu Cię od konkurencji. Tak więc, przygotowując się do cyklu rekrutacyjnego, pamiętaj o tych rzeczach.

Ucz się kursów oprogramowania online z najlepszych uniwersytetów na świecie. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Dzięki temu nadszedł czas, aby zagłębić się w najczęściej zadawane pytania podczas rozmów kwalifikacyjnych w zakresie inżynierii oprogramowania.

Przeczytaj: Kariera w tworzeniu oprogramowania

Pytania i odpowiedzi dotyczące wywiadu na temat inżynierii oprogramowania

1. Wymień różne typy oprogramowania.

Oprogramowanie komputerowe można podzielić na następujące kategorie:

  • Oprogramowanie systemowe
  • Oprogramowanie
  • Aplikacje internetowe
  • Wbudowane oprogramowanie
  • Oprogramowanie AI
  • Oprogramowanie naukowe

2. Rozróżniać program komputerowy od oprogramowania komputerowego.

Program komputerowy zawiera kod programistyczny, który po wykonaniu może wykonać dobrze zdefiniowane zadanie. I odwrotnie, oprogramowanie komputerowe zawiera pliki (dokumentację i podręcznik użytkownika) oprócz kodu programowania. Dlatego zarówno program, jak i oprogramowanie zawierają zestaw instrukcji, ale zakres oprogramowania jest szerszy w porównaniu z programem.

3. Wyjaśnij główne kroki SDLC.

SDLC to krótka forma cyklu życia oprogramowania. Składa się z wielu etapów, w tym:

  • Planowanie: Ocena oprogramowania i inne aspekty planowania projektu
  • Analiza wykonalności: Analiza wymagań, wyszczególnienie specyfikacji oprogramowania
  • Projektowanie oprogramowania: decydowanie o wzorcach projektowych, opracowywanie prototypów
  • Tworzenie oprogramowania: tłumaczenie wymagań na działający kod
  • Testowanie: Sprawdzanie kodu pod kątem określonych wymagań, jakości, bezpiecznych praktyk programistycznych itp.
  • Wdrożenie: Wdrożenie oprogramowania i integracja go z różnymi systemami w celu stworzenia w pełni funkcjonalnego produktu
  • Dokumentacja projektowa: Gromadzenie zasobów i organizowanie plików oprogramowania, w tym kodów, dokumentów i licencji.
  • Szkolenia i wsparcie: Komunikowanie zastosowania, funkcjonalności i możliwości nowej technologii oraz ułatwianie efektywnego transferu wiedzy
  • Operacje i konserwacja: zgłaszanie problemów i wprowadzanie ulepszeń w produkcie

4. Wymień kilka podstawowych modeli i metodologii SDLC. Według Ciebie, który jest najlepszy?

Waterfall, V-Model, Iterative, Spiral, Big-bag i Agile to jedne z najpopularniejszych modeli SDLC.

Jeśli chodzi o najlepiej ocenianą metodologię, nie ma jednej odpowiedzi, ponieważ rozwiązanie zależy od potrzeb procesu wytwarzania oprogramowania. Na przykład model wodospadu jest odpowiedni dla projektów długoterminowych, w których preferowana jest elastyczność. Model w kształcie litery V sprawdza się dobrze w przypadku nieznanych wymagań. Model Spiral jest idealny do wysoce niestandardowych projektów i tak dalej.

5. Co rozumiesz przez przeprojektowanie oprogramowania?

Reengineering oprogramowania ma na celu ulepszenie systemu oprogramowania. Jest to proces aktualizacji oprogramowania bez ingerencji w jego bieżącą funkcjonalność. Może obejmować zadania związane z utrzymaniem, takie jak dodawanie nowych funkcji, aby oprogramowanie było bardziej wydajne i przyjazne dla użytkownika.

6. Zdefiniuj następujące elementy w kontekście tworzenia oprogramowania: (i) weryfikacja (ii) walidacja (iii) debugowanie

(i) Weryfikacja obejmuje wykonanie zestawu czynności w celu upewnienia się, że oprogramowanie może realizować określoną funkcję.

(ii) Walidacja polega na potwierdzeniu, że oprogramowanie spełnia potrzeby klientów.

(iii) Debugowanie jest częścią procesu testowania, w tym usuwania błędów.

7. W jaki sposób upewniłbyś się, że Twój kod jest szybki i bezpieczny?

Jeśli wykonanie kodu jest powolne, obliczysz złożoność czasową programu. Odnosi się do liczby wykonywanych instrukcji, która zależy między innymi od języka programowania, systemu operacyjnego i mocy obliczeniowej.

Ponadto, niezależnie od używanego języka programowania, istnieje kilka sposobów zabezpieczenia kodu. Tutaj znajomość bezpiecznych praktyk kodowania staje się niezbędna. Na przykład, skanowanie kodu darmowymi narzędziami może pomóc w wykryciu luk w pakietach open source na GitHub.

8. Jakie są wymagania funkcjonalne i niefunkcjonalne oprogramowania?

Wymagania to opisy systemu oprogramowania, jego pożądanych funkcji i docelowych funkcjonalności. Można je podzielić na wymagania funkcjonalne i niefunkcjonalne.

Wymagania funkcjonalne są tym, czego użytkownicy oczekują od proponowanego produktu, a wymagania niefunkcjonalne odnoszą się do aspektów, takich jak wygląd, wydajność, bezpieczeństwo i interfejs użytkownika.

9. Jak śledziłbyś wymagania dotyczące oprogramowania?

Na rynku dostępna jest szeroka gama narzędzi do gromadzenia i zarządzania wymaganiami dotyczącymi oprogramowania. Nowoczesne wymagania, ReQtest, Jama Connect i Orcanos to jedne z najbardziej poszukiwanych obecnie programów RM wśród praktyków. Wybór opiera się na metodologiach i celach i różni się w zależności od projektu. Niemniej jednak pierwszym krokiem w procesie śledzenia jest lista wymagań i utworzenie arkusza Excel ze szczegółami, takimi jak typ, zależność, priorytet itp.

10. Co wiesz o modularyzacji i spójności?

Modularyzacja dzieli system oprogramowania na dyskretne moduły. Tutaj od każdego modułu oczekuje się samodzielnego wykonywania określonych zadań. Spójność mierzy i definiuje wewnętrzną zależność pomiędzy różnymi elementami modułu.

11. Czym zajmuje się kierownik projektu oprogramowania?

Kierownik projektu ma za zadanie odpowiadać za planowanie projektu, monitorowanie postępów i komunikację. W procesie tworzenia oprogramowania głównym obowiązkiem kierownika projektu jest zarządzanie zasobami, równoważenie ryzyka i dostarczanie zamierzonego produktu z zachowaniem ograniczeń czasowych, kosztowych i jakościowych.

12. Co to jest zakres oprogramowania?

Zakres oprogramowania obejmuje wszystkie czynności wymagane do dostarczenia produktu oprogramowania. Definiuje następujące aspekty usprawniające proces rozwoju:

  • Co zrobi produkt
  • Co nie jest częścią projektu
  • Wycena projektu (z pomocą konsultantów, ekspertów lub formuł)

13. Jak określisz wykonalność swojego projektu?

Studium wykonalności pomaga zmierzyć praktyczne korzyści, jakie projekt rozwoju oprogramowania może przynieść organizacji. Analizatory oprogramowania biorą pod uwagę trzy główne czynniki przed przygotowaniem raportu końcowego. Wyjaśniliśmy je szczegółowo poniżej:

  • Ekonomiczny: koszt dodatkowych funkcji i narzędzi, koszty szkoleń oraz ogólna analiza kosztów i korzyści końcowego projektu
  • Techniczne: Przydatność maszyn i oprogramowania operacyjnego, w tym możliwość rozwoju proponowanego systemu przy dostępnym wsparciu technicznym i kadrowym
  • Operacyjny: Zdolność do dokonywania korekt i nadążania za wymaganiami i wartością projektu po szacowanym koszcie.

14. Wymień kilka narzędzi do analizy i projektowania oprogramowania.

Analiza oprogramowania i procedury projektowe pomagają przełożyć specyfikacje wymagań na implementację. Oto kilka standardowych narzędzi:

  • Diagramy przepływu danych
  • Słownik danych
  • Wykresy strukturalne
  • Wykresy HIPO (Hierarchical Input Process Output)
  • Diagramy Entity-Relation lub ER
  • Tabele decyzyjne

15. Jaka jest różnica między ustrukturyzowanym językiem angielskim a pseudokodem?

Język angielski używany do pisania struktury modułu programu jest znany jako język strukturalny. Zawiera słowa kluczowe języka programowania.

W przeciwieństwie do tego, metodologia Pseudo Code bardzo przypomina język programowania, ale bez określonej składni.

Przeczytaj także: Pomysły na projekty rozwoju oprogramowania

16. Jak określisz rozmiar oprogramowania?

Możesz obliczyć rozmiar oprogramowania, obliczając linie dostarczonego kodu lub punkty funkcyjne. Punkty funkcyjne są uważane za istotny pomiar, ponieważ reprezentują funkcje oferowane przez oprogramowanie.

17. Czym są metryki oprogramowania?

Metryki oprogramowania odnoszą się do pomiarów wymagań i samego produktu.

  • Metryki wymagań obejmują takie aspekty, jak długość i kompletność.
  • Metryki produktu odnoszą się do liczby linii kodowania, projektu, metryk testowych, metryk zorientowanych obiektowo itp.

18. Jakie są przydatne techniki szacowania projektów?

Ocena projektu jest integralną częścią planowania projektu oprogramowania dźwiękowego. Oto kilka powszechnie stosowanych metod:

  • Dekompozycja (dobór oprogramowania, techniki oparte na problemach i procesach)
  • Empiryczne (analiza regresji, konstruktywny model kosztów i równanie oprogramowania)

19. Jak zmierzyłbyś wykonanie projektu?

Przegląd wdrożenia oprogramowania wiązałby się z monitorowaniem działań, listami kontrolnymi kamieni milowych i raportami o stanie.

Narzędzia do zarządzania projektami zapewniają wygodny sposób sprawdzania postępów. Inne przykłady to wykres Gantta, wykres Perta i histogram zasobów.

20. Zdefiniuj zarządzanie konfiguracją oprogramowania.

Zarządzanie konfiguracją polega na śledzeniu i kontrolowaniu zmian w projekcie oprogramowania. Niezbędne jest zachowanie spójności systemu oprogramowania z zasadami i regulacjami organizacyjnymi.

21. Jaka jest różnica między zapewnieniem jakości a kontrolą jakości?

Przeprowadzane są kontrole zapewniania jakości, aby dowiedzieć się, czy postępowano zgodnie z prawidłowym procesem rozwoju. Z drugiej strony kontrola jakości dotyczy utrzymania jakości produktu końcowego.

22. Porównaj programowanie zorientowane interfejsowo, obiektowo i aspektowo.

Programowanie interfejsowe to oparty na umowie wzorzec architektoniczny stosowany w celu uzyskania projektu modułowego na poziomie komponentów.

Programowanie obiektowe zajmuje się pisaniem ziarnistych obiektów mających jeden cel.

Programowanie zorientowane aspektowo ma na celu segregację kodu w taki sposób, aby wiele obiektów wykonywało główne zadania, a niezależne obiekty wykonywały zadania pomocnicze.

23. Kiedy zadeklarować klasę jako abstrakcyjną?

Nie można utworzyć instancji klasy zawierającej abstrakcyjne słowo kluczowe w swojej deklaracji. W sytuacjach wymienionych poniżej najlepiej jest zadeklarować klasę jako abstrakcyjną.

  • Gdy co najmniej jedna z metod w klasie jest zadeklarowana jako abstrakcyjna.
  • Kiedy klasa dziedziczona z klasy abstrakcyjnej nadal zawiera metody abstrakcyjne.

24. Wymień główną różnicę między: (i) Stos vs kolejka (ii) Projektowanie obiektowe vs komponentowe (iii) Wątek vs proces (iv) EXE vs DLL (v) Tagi i gałęzie

(i) Stos jest zgodny z zasadą „ostatnie weszło, pierwsze wyszło” (LIFO). Natomiast Kolejka to zawsze FIFO, tj. Pierwsze weszło, pierwsze wyszło.

(ii) Projektowanie zorientowane obiektowo może być do pewnego stopnia włączone do projektowania opartego na komponentach. Jednak odwrotność nie jest możliwa.

(iii) „Proces” odnosi się do instancji wykonywanego programu komputerowego. Jest cięższy i wymaga większej zmiany kontekstu. „Wątek” to lekki proces, którym planista zarządza niezależnie. Pojedynczy program może mieć więcej niż jeden wątek.

(iv) Zarówno EXE, jak i DLL to programy, które do działania wymagają przestrzeni dyskowej. Podczas gdy EXE jest podstawowym programem wykonywalnym, DLL jest bardziej dynamiczny. Jest to zewnętrzne repozytorium kodu, które można załadować i wykonać, dzięki czemu zajmuje mniej miejsca.

(v) Tagi pozostają w określonej wersji kodu i zwykle się nie zmieniają. Działają jako tymczasowe miejsca przechowywania wydań wersji. Gałęzie zawsze wskazują na szczyt linii rozwoju. Tak więc są usuwane po wypchnięciu nowego zatwierdzenia lub po scaleniu zmian w bagażniku.

25. Czy dobrym pomysłem jest użycie haczyka (wyjątek)?

Catch (wyjątek) powinien być używany, gdy znane są typy wyjątków. To zły pomysł, ponieważ nie można odczytać wyjątku, gdy nie zdefiniowano żadnej zmiennej.

26. Co jest lepsze między tymi dwoma: silnym czy słabym pisaniem?

Silne typowanie ma wyrównywać słabe typowanie, ponieważ sprawdza zmienne w czasie kompilacji. Ponadto może znacznie zminimalizować błędy systemowe. Słabo wpisany język wykonuje konwersje tylko w czasie wykonywania i może dawać nieprzewidywalne wyniki.

27. Co to jest projekt strukturalny?

Projekt strukturalny konceptualizuje problem zgodnie ze strategią „dziel i rządź”. To systematyczne podejście pociąga za sobą rozbicie problemu na jego podelementy i indywidualne zajmowanie się tymi mniejszymi kwestiami. Ze względu na tę taktykę nazywana jest również metodą projektowania rozwiązań.

28. Opisz programowanie funkcjonalne.

Metoda programowania funkcjonalnego polega na zastosowaniu pojęć matematycznych. Umożliwia obliczanie funkcji matematycznych, a tym samym generowanie wyników niezależnie od stanu programu.

29. Jak ustalasz priorytety wymagań?

Przede wszystkim musisz ocenić strukturę danych. Następnie musiałbyś sformułować strukturę kodu, aby wspierać to samo.

30. Co wiesz o narzędziach CASE?

CASE to skrót od Computer-Aided Software Engineering. Składa się z zestawu zautomatyzowanych aplikacji, które wspierają działania SDLC. Narzędzia CASE mogą ulepszyć i wzmocnić projekty oprogramowania, oferując następujące usługi:

  • Analiza wymagań
  • Analiza struktury
  • Generowanie kodu
  • Generowanie przypadków testowych
  • Produkcja dokumentów
  • Inżynieria odwrotna

Na wynos

Biuro Statystyki Pracy (Stany Zjednoczone) przewiduje, że popyt na programistów wzrośnie o 22 procent w ciągu następnej dekady. A Indie prawdopodobnie napotkają ten sam wzrost popytu.

Zgodnie z raportem „Workforce Report for India” opublikowanym przez LinkedIn, w pierwszej połowie 2018 roku liczba ofert pracy w inżynierii oprogramowania na jego platformie była najwyższa w wielu branżach. nadal rosnąć. Przeczytaj o wynagrodzeniu programisty w Indiach.

Jak zaobserwowano w pytaniach wymienionych powyżej, ktoś, kto chce wejść do tego zawodu, potrzebowałby szerokiego zakresu powiązanych ze sobą kompetencji. Oto migawka twardych umiejętności, które musiałbyś opanować:

  • C++, C#, Java
  • HTML, CSS JavaScript
  • SQL, Python, Bootstrap
  • Projekt zorientowany obiektowo
  • Oprogramowanie do debugowania i testowania
  • Kodowanie we współczesnych językach (Ruby, Go, R itp.)
  • Znajomość projektów sztucznej inteligencji i tak dalej

Oprócz tych umiejętności technicznych, musisz opanować sztukę wielozadaniowości, komunikacji, zarządzania czasem, dbałości o szczegóły i pracy zespołowej.

Jeśli chodzi o kwalifikacje edukacyjne, licencjat z informatyki lub dziedzin pokrewnych zazwyczaj obejmuje minimalne kryteria kwalifikacyjne do pracy na poziomie podstawowym. Ale ścieżka kariery każdego okazuje się nieco inna. Niektórzy mogli wejść na rynek pracy poprzez samokształcenie, kursy online lub bootcampy kodowania. Inni mogli zdobyć wyższy stopień naukowy po kilku latach pracy w IT.

Posiadanie poświadczeń na poziomie podyplomowym może pomóc w rozpoczęciu kariery, a nawet uzyskać upragnioną promocję w pracy. Sprawdź tytuł magistra informatyki certyfikowanego przez Liverpool John Moores University. Ma na celu wyposażenie Cię w umiejętności istotne dla branży poprzez wysoce interaktywną pedagogikę.

Możesz również wybrać się na Executive PG Program in Software Development – ​​Specialization in Full Stack Development by IIIT-B lub specjalistyczny certyfikat PG, w zależności od twoich zainteresowań i aspiracji zawodowych. Takie certyfikaty mają krótsze zaangażowanie czasowe w porównaniu do kursów magisterskich i dyplomowych. Pozwalają zademonstrować swoje umiejętności w określonym obszarze, takim jak programowanie zaplecza, programowanie front-end, cyberbezpieczeństwo, DevOps, big data i przetwarzanie w chmurze.

W ten sposób omówiliśmy najważniejsze pytania i odpowiedzi podczas wywiadów dotyczących inżynierii oprogramowania . Staraliśmy się uwzględnić zarówno tematy ogólne, jak i techniczne. Wspomnieliśmy również o potencjalnych wyborach zawodowych i przedstawiliśmy przegląd trendów i perspektyw w branży IT. Wykorzystaj te informacje jako drogowskaz w swojej podróży edukacyjnej i usprawnij swoją strategię przygotowania!

Wyląduj na swojej wymarzonej pracy

Złóż wniosek o tytuł magistra informatyki