50 Otázky a odpovědi v rámci rozhovoru pro softwarové inženýrství

Zde jsou otázky a odpovědi na pohovor v softwarovém inženýrství pro čerstvější i zkušené kandidáty, aby získali svou vysněnou práci.

 

Otázky a odpovědi na rozhovor pro vývojáře softwaru pro Freshers

1) Jaké jsou důležité kategorie softwaru?

  • Systémový software
  • Aplikační software
  • Vestavěný software
  • Webové aplikace
  • Software umělé inteligence
  • Vědecký software.

👉 Zdarma ke stažení PDF: Otázky a odpovědi k pohovoru o softwarovém inženýrství


2) Jaký je hlavní rozdíl mezi počítačovým programem a počítačovým softwarem?

Počítačový program je část programovacího kódu. Provádí přesně definovaný úkol. Na druhou stranu software obsahuje programovací kód, dokumentaci a uživatelskou příručku.


3) Co je softwarové přepracování?

Je to proces vývoje softwaru, který se provádí za účelem zlepšení udržovatelnosti softwarového systému.

Otázky softwarového inženýrství


4) Stručně popište proces vývoje softwaru:

Vývoj softwaru je životní cyklus, který se skládá z následujících fází:

  • Analýza požadavků
  • Specifikace
  • Softwarová architektura
  • Implementace
  • Testování
  • Dokumentace
  • Školení a podpora
  • Údržba

5) Jaké modely SDLC jsou k dispozici?

Waterfall Model, Spiral Model, Big-bag model, Iterative Model a V-Model jsou některé ze slavných SDLC modely.


6) Co je ověřování a validace?

Ověřování:

Verifikace je termín, který označuje soubor činností, které zajišťují, že software implementuje určitou funkci.

Validace:

Jedná se o soubor činností, které zajišťují, že software, který byl vytvořen podle potřeb klientů.


7) Jaký je význam ladění v procesu vývoje softwaru?

Ladění je proces, jehož výsledkem je odstranění chyby. Je to velmi důležitá součást úspěšného testování.


8) Jak se můžete ujistit, že váš kód je bezpečný a rychlý?

V softwaru je zabezpečení vývoje vždy na prvním místě. Pokud je tedy provádění programu pomalé, pokusím se zjistit příčinu jeho časové složitosti.


9) Vyjmenujte dva nástroje, které se používají pro sledování požadavků na software?

Existuje mnoho způsobů, jak sledovat požadavky.

Dva běžně používané jsou:

  • Vytvořte dokument se specifikacemi požadavků, ve kterém budou uvedeny všechny požadavky.
  • Vytvořte excelový list se seznamem požadavků, typu, závislosti, priority atd.

10) Jaký je hlavní rozdíl mezi pahýlem, falešným?

Útržek je minimální implementace rozhraní, které obecně vrací pevně zakódovaná data, zatímco simulace obvykle ověřuje výstupy podle očekávání. Tato očekávání jsou stanovena v testu.


11) V jakém jazyce nejraději píšete programovací algoritmy?

Každý vývojář má svůj názor, pokud jde o volbu programovacího jazyka. Měli bychom však preferovat jazyky na vysoké úrovni, protože jsou dynamické. Jako C a C++ jazyků.


12) Co je počítačový software?

Počítačový software je balíček, který obsahuje softwarový program, jeho dokumentaci a uživatelskou příručku, jak software používat.


13) Který model SDLC je podle vás nejlepší?

Neexistuje žádné takové hodnocení, protože modely SDLC jsou přijímány podle potřeby procesu vývoje. Může se lišit software od softwaru.


14) Kdo je manažer softwarového projektu? Jaká je jeho role?

Manažer softwarového projektu je osoba odpovědná za řízení projektu vývoje softwaru.

Projektový manažer provádí plánování projektu, sleduje průběh, komunikaci. On nebo ona také řídí rizika a zdroje, aby projekt dodal v rámci omezení času, nákladů a kvality.


15) Co znamená rozsah softwaru?

Rozsah softwaru je dobře definovaná hranice. Zahrnuje všechny druhy činností, které jsou prováděny za účelem vývoje a dodání softwarového produktu.

Rozsah softwaru definuje všechny funkce a artefakty, které mají být dodány jako součást softwaru. Rozsah také určuje, co bude produkt dělat? Co není součástí projektu? Co je to odhad projektu?

Tento proces je užitečný pro odhad různých aspektů softwarového produktu. O tomto odhadu lze rozhodnout buď konzultací s odborníky, nebo pomocí předem definovaných vzorců.


16) Jak zjistit velikost softwarového produktu?

Velikost softwarového produktu lze vypočítat pomocí následujících dvou metod

  • Počítání řádků doručeného kódu
  • Počítání dodaných funkčních bodů

17) Co jsou funkční body?

Funkční body jsou funkce, které poskytuje softwarový produkt. Je považováno za nejdůležitější měření velikosti softwaru.


18) Jaké jsou dostupné techniky odhadu softwarových projektů?

Nejčastěji používané techniky odhadu jsou:

  • Technika rozkladu
  • Empirická technika

19) Co je správa konfigurace softwaru?

Správa konfigurace softwaru je proces sledování a řízení změn, ke kterým dochází v softwaru.

Řízení změn je funkce, která zajišťuje, že všechny změny provedené v softwarovém systému jsou konzistentní a vytvořené pomocí organizačních pravidel a předpisů.


20) Jak můžete měřit realizaci projektu?

Realizaci projektu můžeme měřit pomocí sledování aktivity, zpráv o stavu a kontrolních seznamů milníků.


21) Řekněte mi o některých nástrojích projektového řízení.

Existuje mnoho typů nástrojů pro správu, které se používají podle potřeby softwarového projektu. Některé z nich jsou Pertův diagram, Ganttův diagram, histogram zdrojů, zprávy o stavu atd.


22) Jaké jsou požadavky na software?

Softwarové požadavky jsou funkčním popisem navrhovaného softwarového systému. Předpokládá se, že jde o popis cílového systému, jeho funkcí a vlastností.


23) Co je studie proveditelnosti?

Je to měřítko, které má zjistit, jak praktický a přínosný bude vývoj softwarového projektu pro organizaci. Softwarový analyzátor provede studii, aby zjistil ekonomickou, technickou a provozní proveditelnost projektu.

  1. Hospodářský: Zahrnuje náklady na školení, náklady na dodatečné nástroje a nástroje a celkový odhad nákladů a přínosů projektu.
  2. Technický: Hodnotí technickou stránku. Je možné tento systém vyvinout? Posouzení vhodnosti stroje (strojů) a OS, na kterém bude software spouštěn, znalost vývoje softwaru a nástrojů dostupných pro tento projekt.
  3. Operanárodní: Zde musí analytik posoudit, zda se organizace bude schopna plynule přizpůsobit změnám provedeným podle poptávky po projektu. Vyplatí se problém vyřešit za odhadovanou cenu?

Po prostudování tohoto všeho je vytvořena závěrečná zpráva o proveditelnosti.


24) Jaké jsou funkční a nefunkční požadavky?

Funkční požadavky jsou funkční vlastnosti, které uživatelé očekávají od navrhovaného softwarového produktu.

Nefunkční požadavky souvisejí s bezpečností, výkonem, vzhledem a chováním uživatelského rozhraní.


25) Co je softwarová metrika?

Software Metrics nabízí měření pro různé aspekty softwarového procesu, které se dělí na:

  1. Metriky požadavků: Požadavky na délku, úplnost
  2. Metriky produktu: Počet řádků kódování, objektově orientované metriky, metriky designu a testování.

26) Co je modularizace?

Modularizace je technika, která se používá pro rozdělení softwarového systému do různých diskrétních modulů. Od toho se očekává, že bude plnit úkoly nezávisle.


27) Co je soudržnost?

Koheze je měřítkem, které definuje vnitřní závislost mezi prvky modulu.


28) Zmiňuje některé softwarové nástroje pro analýzu a návrh?

Některé z nejdůležitějších nástrojů pro analýzu a návrh softwaru jsou:

  • Diagramy toku dat
  • Strukturované grafy
  • Strukturovaná angličtina
  • Datový slovník
  • Hierarchický vstupní proces Schémata výstupu
  • Schémata vztahů entit a rozhodovací tabulky

29) Co znamená diagram toku dat úrovně 0?

Nejvyšší úroveň abstrakce se nazývá úroveň 0 DFD. Nazývá se také DFD na kontextové úrovni. Zobrazuje celý informační systém jako jeden diagram.


30) Jaký je hlavní rozdíl mezi strukturovanou angličtinou a pseudokódem?

Strukturovaná angličtina je rodným anglickým jazykem. Používá se k zápisu struktury programového modulu. Používá klíčová slova programovacího jazyka. Na druhou stranu, Pseudo Code je více podobný programovacímu jazyku bez syntaxe jakéhokoli konkrétního jazyka.


Softwarové inženýrství viva Otázky a odpovědi pro zkušené

31) Co je strukturovaný design?

Strukturovaný design je konceptualizací problému. Nazývá se také návrh řešení a je založen na strategii „rozděl a panuj“.


32) Co je funkcionální programování?

Jedná se o metodu programování, která využívá konceptů matematické funkce. Poskytuje prostředky pro výpočty jako matematické funkce, které také poskytují výsledky bez ohledu na stav programu.


33) Co je zajištění kvality vs. kontrola kvality?

Quality Assurance kontroluje, zda je při vývoji softwaru dodržován správný proces, zatímco Quality Control se zabývá udržováním kvality softwarového produktu.


34) Co jsou nástroje CASE?

CASE znamená Computer Aided Softwarové inženýrství. Jedná se o sadu automatizovaných softwarových aplikačních programů, které se používají k podpoře, vylepšení a posílení SDLC aktivit.


35) Který procesní model odstraňuje vady dříve, než se software dostane do problémů?

Metoda softwarového inženýrství v čisté místnosti odstraňuje vady dříve, než se software dostane do problémů.


36) Vyřešte tento problém

V jedné tmavé místnosti je v šuplíku dvacet různých ponožek dvou typů. Jaký je minimální počet ponožek, které si musíte vzít, abyste se ujistili, že máte odpovídající pár?

Pokud si vezmete tři ponožky, mohou být stejného typu, i když je pravděpodobnost 50%. Šance nikdy stejná realita. Jediným způsobem, jak „zajistit, že máte odpovídající pár“, je tedy vyzvednout alespoň 11 výbojů.


37) Jak se můžete ujistit, že váš psaný kód zvládne různé druhy chybových situací?

Umím napsat testy, které definují očekávané chybové situace.


38) Vysvětlete rozdíly mezi vláknem a procesem?

Proces je instancí počítačového programu. V jediném programu je možné mít jedno nebo více vláken.


39) Řekněte mi rozdíl mezi EXE a DLL?

exe je spustitelný program, zatímco DLL je soubor, který lze načítat a spouštět programy dynamicky. Jedná se o externí úložiště kódu pro programy. Vzhledem k tomu, že oba jsou různé programy, použijte znovu stejnou knihovnu DLL místo toho, abyste měli tento kód ve svém souboru. Snižuje také potřebný úložný prostor.


40) Co je silné a slabé psaní? Kterému dává přednost? Proč?

Silné psaní kontroluje typy proměnných v době kompilace. Na druhou stranu slabé psaní kontroluje typy systému za běhu. Mezi nimi je vždy preferováno silné psaní, protože minimalizuje chyby.


41) Popište rozdíl mezi rozhraním orientovaným, objektově orientovaným a aspektově orientovaným programováním.

  • Programování rozhraní je založeno na smlouvě.
  • Objektově orientovaný je způsob, jak psát granulované objekty, které mají jediný účel.
  • Aspektově orientované programování má oddělit kód takovým způsobem, že různé objekty nesou hlavní úkoly a vedlejší úkoly nesou nezávislé objekty.

42) Proč je použití catch (výjimka) vždy špatný nápad?

Je to špatný nápad, protože:

  • Protože není definována žádná proměnná, není možné výjimku přečíst
  • Pokud znáte typy výjimek, je dobré použít výjimku.

43) Jaký typ dat je předáván prostřednictvím HTTP hlaviček?

Skript a metadata předávaná prostřednictvím HTTP hlaviček.


44) Jak upřednostňujete požadavky?

Nejprve musíte navrhnout systém vyhodnocením datové struktury. Poté byste měli přejít ke struktuře kódu potřebné k její podpoře.


45) Řekněte mi rozdíly mezi objektově orientovaným a komponentovým designem?

Objektově orientovaný design lze snadno do určité míry zapouzdřit do návrhu založeného na komponentech.


46) Kdy používáte polymorfismus?

Polymorfismus se používá, když je potřeba přepsat funkcionalitu při dědění třídy. Jde o sdílené třídy a sdílené smlouvy.


47) Jaký je rozdíl mezi zásobníkem a frontou?

  • Fronta je vždy první dovnitř, první ven
  • Stack je vždy Last In, First Out

48) Co je podstatné pro testování kvality kódu?

Unit testing framework je podle mě zásadní pro testování kvality kódu.


49) Myslíte si, že údržba softwaru je nákladná?

Podle mého názoru nebude údržba softwaru nikdy drahá, pokud použijeme správný vývojový proces.


50) Řekni mi rozdíly mezi tagy a větvemi?

Tagy jsou pro vydání verzí, které jsou dočasnými úložnými místy pro takové věci. Větve jsou však odstraněny, když jsou tyto změny sloučeny do kmene.


51) Kde je k dispozici chráněná proměnná na úrovni třídy?

Chráněné proměnné na úrovni třídy jsou dostupné pro jakoukoli podtřídu odvozenou ze základní třídy.


52) Je možné provést více bloků catch pro jeden příkaz try?

Ano. Pro jeden příkaz try lze provést více bloků catch.


53) Kdy potřebujete deklarovat třídu jako abstraktní?

Třídu bychom měli deklarovat jako abstraktní v následujících situacích:

  1. Když je třída zděděna z abstraktní třídy, ale ne všechny abstraktní metody byly přepsány.
  2. V případě, že minimálně jedna z metod ve třídě je deklarována jako abstraktní.

54) Vytvořte algoritmus, který vydá vaši aktuální polohu a seznam umístění bankomatů v této oblasti. Získejte nejbližší bankomaty K vaší lokalitě.

Vytvořte metodu getDistance(a, b), která vypočítá vzdálenost mezi a a b.

Kód:

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;

}

}

Tyto otázky na pohovoru také pomohou ve vašem životě (ústních)