50 pytań i odpowiedzi do rozmowy kwalifikacyjnej z zakresu inżynierii oprogramowania

Oto pytania i odpowiedzi do rozmów kwalifikacyjnych z zakresu inżynierii oprogramowania, przeznaczone zarówno dla świeżych, jak i doświadczonych kandydatów, którzy chcą zdobyć wymarzoną pracę.

 

Pytania i odpowiedzi dotyczące wywiadu z programistą oprogramowania dla nowicjuszy

1) Jakie są ważne kategorie oprogramowania?

  • Oprogramowanie systemowe
  • Oprogramowanie
  • Oprogramowanie wbudowane
  • Aplikacje internetowe
  • Oprogramowanie sztucznej inteligencji
  • Oprogramowanie naukowe.

👉 Bezpłatne pobieranie pliku PDF: Pytania i odpowiedzi dotyczące wywiadu dotyczącego inżynierii oprogramowania


2) Jaka jest główna różnica między programem komputerowym a oprogramowaniem komputerowym?

Program komputerowy to fragment kodu programistycznego. Wykonuje ściśle określone zadanie. Z drugiej strony oprogramowanie zawiera kod programistyczny, dokumentację i instrukcję obsługi.


3) Czym jest reengineering oprogramowania?

Jest to proces tworzenia oprogramowania mający na celu poprawę łatwości konserwacji systemu oprogramowania.

Pytania dotyczące inżynierii oprogramowania


4) Opisz w skrócie proces tworzenia oprogramowania:

Rozwój oprogramowania to cykl życia składający się z następujących etapów:

  • Analiza wymagań
  • Specyfikacja
  • Architektura oprogramowania
  • Wdrożenie
  • Testowanie
  • Dokumenty
  • Szkolenie i wsparcie
  • Konserwacja

5) Jakie są dostępne modele SDLC?

Model wodospadu, model spirali, model big-baga, model iteracyjny i model V to tylko niektóre ze znanych modele SDLC.


6) Czym jest weryfikacja i walidacja?

Weryfikacja:

Weryfikacja to termin odnoszący się do zestawu działań zapewniających realizację przez oprogramowanie określonej funkcji.

Uprawomocnienie:

Odnosi się do zestawu działań zapewniających, że oprogramowanie zostało zbudowane zgodnie z potrzebami klientów.


7) Jakie jest znaczenie debugowania w procesie tworzenia oprogramowania?

Debugowanie to proces, którego skutkiem jest usunięcie błędu. Jest to bardzo ważna część udanego testu.


8) Jak możesz mieć pewność, że Twój kod jest bezpieczny i szybki?

W oprogramowaniu bezpieczeństwo rozwoju jest zawsze na pierwszym miejscu. Więc jeśli wykonywanie programu jest powolne, spróbuję zidentyfikować przyczynę jego złożoności czasowej.


9) Wymień dwa narzędzia używane do śledzenia wymagań oprogramowania?

Istnieje wiele sposobów śledzenia wymagań.

Dwa powszechnie używane to:

  • Utwórz dokument specyfikacji wymagań, w którym zostaną wymienione wszystkie wymagania.
  • Utwórz arkusz Excela z listą wymagań, typu, zależności, priorytetu itp.

10) Jaka jest główna różnica pomiędzy fragmentem kodu a próbą?

Stub to minimalna implementacja interfejsu, która zazwyczaj zwraca zakodowane na stałe dane, podczas gdy próbna wersja zwykle weryfikuje dane wyjściowe pod kątem oczekiwań. Oczekiwania te są ustalane w teście.


11) W jakim języku lubisz pisać algorytmy programistyczne?

Każdy programista ma swoje poglądy na temat wyboru języka programowania. Chociaż należy preferować języki wysokiego poziomu, ponieważ są one dynamiczne. Podobnie jak C i C++ Języki.


12) Co to jest oprogramowanie komputerowe?

Oprogramowanie komputerowe to pakiet zawierający program, jego dokumentację i instrukcję obsługi dotyczącą sposobu korzystania z oprogramowania.


13) Który model SDLC jest według Ciebie najlepszy?

Nie ma takiego rankingu, ponieważ modele SDLC są przyjmowane w zależności od potrzeb procesu rozwoju. Może się różnić w zależności od oprogramowania.


14) Kto jest kierownikiem projektu oprogramowania? Jaka jest jego rola?

Menedżer projektu oprogramowania to osoba odpowiedzialna za zarządzanie projektem rozwoju oprogramowania.

Kierownik projektu zajmuje się planowaniem projektu, monitorowaniem postępów i komunikacją. Zarządza także ryzykiem i zasobami, aby zrealizować projekt w ramach ograniczeń czasowych, kosztowych i jakościowych.


15) Co oznacza zakres oprogramowania?

Zakres oprogramowania to dobrze określona granica. Obejmuje wszelkiego rodzaju działania podejmowane w celu opracowania i dostarczenia oprogramowania.

Zakres oprogramowania określa wszystkie funkcjonalności i artefakty, które mają być dostarczane jako część oprogramowania. Zakres określa również, co produkt będzie robił? Co nie jest częścią projektu? Co to jest wycena projektu?

Proces ten jest pomocny w ocenie różnych aspektów oprogramowania. Oszacowanie to można ustalić konsultując się z ekspertami lub korzystając z wcześniej zdefiniowanych wzorów.


16) Jak znaleźć rozmiar oprogramowania?

Rozmiar produktu programowego można obliczyć, stosując dwie następujące metody

  • Liczenie linii dostarczonego kodu
  • Liczenie dostarczonych punktów funkcyjnych

17) Co to są punkty funkcyjne?

Punkty funkcyjne to funkcje udostępniane przez oprogramowanie. Jest uważany za najważniejszy pomiar rozmiaru oprogramowania.


18) Jakie są dostępne techniki szacowania projektu oprogramowania?

Do najpowszechniej stosowanych technik estymacji należą:

  • Technika rozkładu
  • Technika empiryczna

19) Co to jest zarządzanie konfiguracją oprogramowania?

Zarządzanie konfiguracją oprogramowania to proces śledzenia i kontrolowania zmian zachodzących w oprogramowaniu.

Kontrola zmian to funkcja zapewniająca, że ​​wszystkie zmiany wprowadzane w systemie oprogramowania są spójne i tworzone przy zastosowaniu zasad i przepisów organizacyjnych.


20) Jak można zmierzyć wykonanie projektu?

Wykonanie projektu możemy mierzyć za pomocą monitorowania działań, raportów stanu i list kontrolnych kamieni milowych.


21) Opowiedz mi o niektórych narzędziach do zarządzania projektami.

Istnieje wiele rodzajów narzędzi do zarządzania używanych w zależności od potrzeb projektu oprogramowania. Niektóre z nich to wykres Perta, wykres Gantta, histogram zasobów, raporty o stanie itp.


22) Jakie są wymagania dotyczące oprogramowania?

Wymagania dotyczące oprogramowania stanowią funkcjonalny opis proponowanego systemu oprogramowania. Zakłada się, że jest to opis docelowego systemu, jego funkcjonalności i cech.


23) Czym jest studium wykonalności?

Jest to środek mający na celu ustalenie, jak praktyczny i korzystny okaże się rozwój projektu oprogramowania dla organizacji. Analityk oprogramowania przeprowadza badanie, aby poznać wykonalność ekonomiczną, techniczną i operacyjną projektu.

  1. Gospodarczy: Obejmuje koszt szkolenia, koszt dodatkowych narzędzi i narzędzi oraz ogólny szacunek kosztów i korzyści projektu.
  2. Techniczny: Ocenia aspekt techniczny. Czy jest możliwość rozwoju tego systemu? Ocena przydatności maszyn i systemów operacyjnych, na których będzie uruchamiane oprogramowanie, wiedza na temat tworzenia oprogramowania i narzędzi dostępnych dla tego projektu.
  3. Operacjonalne: W tym przypadku analityk musi ocenić, czy organizacja będzie w stanie płynnie dostosować się do wprowadzanych zmian zgodnie z zapotrzebowaniem projektu. Czy warto rozwiązać problem przy szacowanym koszcie?

Po przestudiowaniu tego wszystkiego tworzony jest końcowy raport wykonalności.


24) Jakie są wymagania funkcjonalne i niefunkcjonalne?

Wymagania funkcjonalne to cechy funkcjonalne, których użytkownicy oczekują od proponowanego oprogramowania.

Wymagania niefunkcjonalne dotyczą bezpieczeństwa, wydajności, wyglądu i sposobu działania interfejsu użytkownika.


25) Co to jest metryka oprogramowania?

Software Metrics oferuje miary różnych aspektów procesu tworzenia oprogramowania, które dzielą się na:

  1. Metryki wymagań: wymagania dotyczące długości, kompletność
  2. Metryki produktu: liczba linii kodowania, metryki obiektowe, metryki projektowe i testowe.

26) Co to jest modularyzacja?

Modularyzacja to technika stosowana do dzielenia systemu oprogramowania na różne oddzielne moduły. Od tego oczekuje się samodzielnego wykonywania zadań.


27) Czym jest spójność?

Spójność jest miarą określającą wewnętrzną niezawodność pomiędzy elementami modułu.


28) Wspomniałeś o narzędziach do analizy i projektowania oprogramowania?

Do najważniejszych narzędzi do analizy i projektowania oprogramowania należą:

  • Diagramy przepływu danych
  • Wykresy strukturalne
  • Strukturalny angielski
  • Słownik danych
  • Diagramy hierarchicznego procesu wejścia i wyjścia
  • Diagramy relacji encji i tabele decyzyjne

29) Co oznacza diagram przepływu danych poziomu 0?

Najwyższy poziom abstrakcji nazywany jest poziomem 0 DFD. Nazywa się to również DFD na poziomie kontekstu. Przedstawia cały system informacyjny jako jeden diagram.


30) Jaka jest główna różnica pomiędzy ustrukturyzowanym angielskim a pseudokodem?

Strukturalny język angielski jest rodzimym językiem angielskim. Służy do pisania struktury modułu programu. Wykorzystuje słowa kluczowe języka programowania. Z drugiej strony Pseudo Code bardziej przypomina język programowania bez składni żadnego konkretnego języka.


Inżynieria oprogramowania viva Pytania i odpowiedzi dla doświadczonych

31) Co to jest projektowanie strukturalne?

Projektowanie strukturalne to konceptualizacja problemu. Nazywa się to również projektowaniem rozwiązań i opiera się na strategii „dziel i rządź”.


32) Co to jest programowanie funkcjonalne?

Jest to metoda programowania, która wykorzystuje koncepcje funkcji matematycznych. Dostarcza środków obliczeniowych w postaci funkcji matematycznych, które również generują wyniki niezależnie od stanu programu.


33) Czym jest zapewnienie jakości a kontrola jakości?

Zapewnienie jakości sprawdza, czy podczas tworzenia oprogramowania przestrzegany jest właściwy proces, podczas gdy Kontrola jakości zajmuje się utrzymaniem jakości oprogramowania.


34) Czym są narzędzia CASE?

CASE oznacza wspomaganie komputerowe Inżynieria oprogramowania. Są to zestawy zautomatyzowanych programów użytkowych, które służą do wspierania, ulepszania i wzmacniania działań SDLC.


35) Który model procesu usuwa defekty, zanim oprogramowanie wpadnie w kłopoty?

Metoda inżynierii oprogramowania w pomieszczeniach czystych usuwa defekty, zanim oprogramowanie wpadnie w kłopoty.


36) Rozwiąż ten problem

W szufladzie w jednym ciemnym pokoju znajduje się dwadzieścia różnych skarpetek dwóch typów. Jaka jest minimalna liczba skarpet, którą musisz zabrać, aby mieć pewność, że będziesz mieć pasującą parę?”

Jeśli wybierzesz trzy skarpetki, mogą być tego samego rodzaju, nawet jeśli prawdopodobieństwo wynosi 50%. Szanse nigdy nie są równe rzeczywistości. Dlatego jedynym sposobem, aby „upewnić się, że masz pasującą parę”, jest zebranie co najmniej 11 wstrząsów.


37) Jak możesz się upewnić, że napisany kod poradzi sobie z różnego rodzaju błędami?

Potrafię napisać testy definiujące oczekiwane sytuacje błędów.


38) Wyjaśnij różnice między wątkiem a procesem?

Proces jest instancją programu komputerowego. W pojedynczym programie może istnieć jeden lub więcej wątków.


39) Powiedz mi, jaka jest różnica między plikiem EXE a biblioteką DLL?

Plik exe to program wykonywalny, natomiast biblioteka DLL to plik, który może być ładowany i wykonywany dynamicznie przez programy. Jest to zewnętrzne repozytorium kodu dla programów. Ponieważ oba są różnymi programami, użyj ponownie tej samej biblioteki DLL zamiast mieć ten kod w swoim pliku. Zmniejsza również wymaganą przestrzeń do przechowywania.


40) Czym jest silne i słabe typowanie? Które jest preferowane? Dlaczego?

Silne typowanie sprawdza typy zmiennych w czasie kompilacji. Z drugiej strony, słabe typowanie sprawdza typy systemu w czasie wykonywania. Spośród nich, silne typowanie jest zawsze preferowane, ponieważ minimalizuje błędy.


41) Opisać różnicę pomiędzy programowaniem zorientowanym interfejsowo, obiektowo i aspektowo.

  • Programowanie interfejsu opiera się na umowie.
  • Zorientowany obiektowo to sposób pisania szczegółowych obiektów, które mają jeden cel.
  • Programowanie aspektowe polega na segregowaniu kodu w taki sposób, aby różne obiekty pełniły główne zadania, a zadania poboczne realizowały niezależne obiekty.

42) Dlaczego użycie catch (wyjątku) jest zawsze złym pomysłem?

To zły pomysł, ponieważ:

  • Ponieważ nie zdefiniowano żadnej zmiennej, nie jest możliwe odczytanie wyjątku
  • Dobrze jest użyć wyjątku, jeśli znasz typy wyjątków.

43) Jaki typ danych jest przekazywany przez nagłówki HTTP?

Skrypt i metadane przekazywane przez nagłówki HTTP.


44) Jak ustalasz priorytety wymagań?

Najpierw należy zaprojektować system, oceniając strukturę danych. Następnie powinieneś przejść do struktury kodu potrzebnej do jej obsługi.


45) Podaj mi różnice między projektowaniem obiektowym a projektowaniem opartym na komponentach?

Projektowanie obiektowe można łatwo w pewnym stopniu ująć w projektowaniu opartym na komponentach.


46) Kiedy używasz polimorfizmu?

Polimorfizm stosuje się, gdy zachodzi potrzeba nadpisania funkcjonalności podczas dziedziczenia klasy. Chodzi o wspólne zajęcia i wspólne kontrakty.


47) Jaka jest różnica między stosem a kolejką?

  • W kolejce zawsze kto pierwszy przyszedł, pierwszy wyszedł
  • Stos jest zawsze ostatni na wejściu, pierwszy na wyjściu

48) Co jest niezbędne do testowania jakości kodu?

Według mnie framework testów jednostkowych jest niezbędny do testowania jakości kodu.


49) Czy uważasz, że utrzymanie oprogramowania jest drogie?

Według mnie utrzymanie oprogramowania nigdy nie będzie drogie, jeśli zastosujemy odpowiedni proces jego rozwoju.


50) Podaj mi różnice pomiędzy tagami i gałęziami?

Tagi służą do wersjonowania wydań, które tymczasowo przechowują miejsca do wykonywania takich czynności. Jednak gałęzie są usuwane, gdy zmiany te są łączone w pień.


51) Gdzie dostępna jest zmienna na poziomie klasy chronionej?

Zmienne na poziomie klasy chronionej są dostępne dla każdej podklasy wywodzącej się z klasy bazowej.


52) Czy możliwe jest wykonanie wielu bloków catch w jednej instrukcji try?

Tak. Dla jednej instrukcji try można wykonać wiele bloków catch.


53) Kiedy należy zadeklarować klasę jako abstrakcyjną?

Powinniśmy zadeklarować klasę jako abstrakcyjną w następujących sytuacjach:

  1. Gdy klasa jest dziedziczona z klasy abstrakcyjnej, ale nie wszystkie metody abstrakcyjne zostały zastąpione.
  2. W przypadku, gdy minimum jedna z metod w klasie jest zadeklarowana jako abstrakcja.

54) Opracuj algorytm, który wyświetli Twoją aktualną lokalizację i listę lokalizacji bankomatów w tym obszarze. Znajdź najbliższy bankomat K w Twojej lokalizacji.

Utwórz metodę getDistance(a, b), która oblicza odległość między a i b.

Kod:

import java.util.HashMap;

import java.util.Map;

import java.util.PriorityQueue;

public class PrioRQueueExample {

public static void main(String[] args){

PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); });

PrioRQueueExample pqe = new PrioRQueueExample();

//Number of ATMs to return i.e. K

int num_ATMs = 3;

double curr_loc = 0.00;

Map<String,Double> nallATMLocs = new HashMap<String,Double>();

//Map of ATM names and their distance co-ordinates

nallATMLocs.put("atm1",45.0);

nallATMLocs.put("atm2",78.0);

nallATMLocs.put("atm3",54.0);

nallATMLocs.put("atm4",64.0);

nallATMLocs.put("atm5",35.0);

nallATMLocs.put("atm6",42.0);

nallATMLocs.put("atm7",57.0);

nallATMLocs.put("atm7",1.00);

nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){

pq.add(pqe.getLocation(curr_loc,dist));}

else{

if(        pq.peek() > pqe.getLocation(curr_loc,dist)){

pq.poll();

pq.add(pqe.getLocation(curr_loc,dist));

}

}

});

pq.forEach(atmLoc -> System.out.println(atmLoc));

}

private double getLocation(double curr,double atm){

return atm - curr;

}

}

Te pytania podczas rozmowy kwalifikacyjnej pomogą również w Twoim życiu (ustach)