top 48 spring interview questions
Seznam nejčastěji kladených dotazů a odpovědí na jarní rozhovor, které vám pomohou připravit se na nadcházející rozhovor:
V tomto článku se dozvíme o nejpopulárnějším a nejpoužívanějším jarním rámci. Zahrnuje otázky Spring Framework a Spring MVC pro nováčky a zkušené profesionály. Než se ale pustíme hluboko do jarní části, pochopme, co je to Framework a proč navíc vyžadujeme framework?
Rámec v jednoduchých pojmech lze chápat jako určitou hranici, která je již vytvořena pro další věci, které se budou hromadit, aby provedly určitou akci.
V softwarové terminologii lze Framework definovat jako určitou aplikaci, která je již vyvinuta, obsahující mnoho funkcí a funkcí pro podporu jakékoli aplikace, která je ve vývojovém režimu.
Jarní rámec
Rámec obsahuje několik připravených tříd a komponent, které vývojář nemusí vytvářet pro vývoj aplikace, čímž se sníží spousta složitosti kódu a aplikace se snadno udržuje. Šetří také čas, a tím je dosaženo snížení nákladů.
Jaro Rámec je známý jako lehký rámec díky své malé velikosti a vysoké účinnosti. Je to open-source, a tak poskytuje silnou infrastrukturu pro snadný a snadný vývoj aplikací Java. Poskytuje podporu různým dalším rámcům, jako je Hibernate, Struts, EJB atd.
Je rozdělena do určitých modulů, aby bylo možné dosáhnout více věcí současně. Jarní moduly zahrnují základní modul, webový modul, modul integrace dat, testovací modul, modul AOP atd. Každý modul slouží svému vlastnímu účelu podle požadavků vývojářů.
V tomto článku se budeme na jaře věnovat všem důležitým tématům, která jsou z hlediska pohovoru důležitá.
Budeme se zabývat tím, co je Spring Framework, jeho typy modulů, koncept vkládání závislostí a inverze řízení, fazole a její životní cyklus, různé obory fazole, koncept autowiring, zpracování událostí na jaře, Spring AOP, správa jarních transakcí , jarní MVC a jeho architektura toku.
Pokryjeme také důležitou anotaci použitou v různých modulech pružin a konfigurací a o kontejneru pružin.
Zde byly vysvětleny některé příklady velmi důležitých konceptů kódu, které vám pomohou podrobně vysvětlit. Byly uvedeny další odkazy, které odkazují na ukázkový příklad Spring MVC. Koncept servletu dispečera jsme vysvětlili velmi rafinovaným způsobem.
S těmito ostrými odpověďmi typu point-to-point budete schopni s jistotou odpovědět na většinu otázek z pohovoru.
Nejoblíbenější otázky a odpovědi z jarního rozhovoru
Prozkoumejme nejčastěji kladené otázky jarního rámcového rozhovoru s podrobnými odpověďmi a příklady.
Otázka č. 1) Co je to Framework? Vysvětlete jarní rámec.
Odpovědět: Framework je již vytvořený software, který pomáhá vývojářům přidávat další funkce do svých aplikací pomocí již vytvořených tříd a knihoven.
Spring Framework je rámec pro vkládání závislostí, který pomáhá vývojářům vyvíjet aplikace založené na Javě. Jaro je open-source framework pro Java Enterprise.
Otázka 2) Proč je jaro upřednostňováno před ostatními rámci?
Odpovědět: Jaro je upřednostňováno před ostatními rámci kvůli níže uvedeným funkcím:
- Velmi malé rozměry a nízká hmotnost
- Pomáhá dosáhnout volně spojené aplikace pomocí Inverze kontroly.
- Podpora AOP
- Rámec MVC
- Dobrá funkce správy transakcí
- Jarní kontejner
- Zpracování výjimek
Otázka č. 3) Kategorizujte různé typy modulů v jarním rámci.
Odpovědět: The níže je uvedeno pět hlavních modulů v jarním rámci:
- Kontejner Spring Core, který zahrnuje jádro, fazole, kontext a výrazový jazyk.
- AOP a aspekty.
- Modul pro integraci dat, který zahrnuje JDBC, OXM, ORM, transakční moduly atd.
- Webový modul, který zahrnuje web, servlet, vzpěry a portlet.
- Test
Otázka č. 4) Vysvětlete jarní konfigurační soubor.
Odpovědět: Soubor XML obsahuje všechny informace o třídách spolu s jejich procesem konfigurace a o tom, jak tyto třídy interagovaly s ostatními třídami.
Otázka č. 5) Vysvětlete koncept Dependency Injection.
Odpovědět: Za prvé, Injekce znamená přenos závislosti na jakýkoli závislý objekt.
Injekce závislostí je druh návrhového vzoru, který pomáhá vyvinout volně spojenou aplikaci. Jedná se o implementaci inverze řízení, která pomáhá při řešení závislostí v aplikaci.
Vyhýbá se vytváření vlastních objektů a spíše vede, jak by měly být objekty vytvářeny prostřednictvím konfigurací, a poté IOC rozhodne, které služby je třeba porovnat s kterými komponentami.
Dependency Injection je základní funkcí Spring Framework.
Otázka č. 6) Jaké jsou různé typy Dependency Injection? Vysvětlete jim to.
Odpovědět: Existují dva typy vkládání závislostí. Jsou to následující:
- Vstřikování závislostí založené na konstrukci - Toho je dosaženo, když kontejner Spring vyvolá konstruktor s argumenty a každý má určitou závislost na druhé třídě.
- Vstřikování závislostí založené na nastavovači Toho je dosaženo, když kontejner Spring zavolá metodu setter fazolí po vyvolání konstruktoru bez argumentů pro vytvoření instance fazole.
Otázka č. 7) Které je dobré použít - závislost založená na konstruktoru nebo setteru?
Odpovědět: Oba typy vkládání závislostí lze podle situace použít odpovídajícím způsobem. Je palcovým pravidlem, že pro povinnou závislost se používá injekce závislostí založené na konstruktoru, zatímco pro volitelnou závislost se používá injekce závislosti založené na nastavovači.
Otázka č. 8) Jaké jsou výhody inverze kontroly?
Odpovědět: Existuje několik výhod IOC a několik z nich je uvedeno níže:
- IOC dokáže snížit složitost kódu snížením kódu v aplikaci.
- Použitím IOC v aplikaci se testování stává jednodušším a snadnějším, protože není vyžadováno žádné vyhledávání a singletony.
- Volného propojení je dosaženo IOC a díky tomu je kód lépe udržovatelný.
- IOC podporuje včasné vytváření instancí a pozdní načítání služeb.
Otázka č. 9) Vysvětlete koncept AOP.
Odpovědět: AOP znamená Aspect Oriented Programming. Jedná se o další programovací přístup, který vývojářům pomáhá restrukturalizovat chování odpovědností, jako je správa transakcí a protokolování.
AOP je implementován pro průřezové problémy, tj. Definice je poskytována na jednom místě a funkčně ji lze použít na mnoha místech pomocí skriptu.
Otázka č. 10) Vysvětlete použití kontejneru Spring.
Odpovědět: Je to hlavní část a páteř jarního rámce. Kontejner Spring pomáhá vytvářet objekty, kombinovat je dohromady, spravovat jejich konfigurace a dokončit životní cyklus vytváření, implementace a destrukce.
Kontejner Spring využívá pomoc Dependency Injection ke správě komponent, které vytvářejí aplikaci.
Otázka č. 11) Jaké jsou různé typy kontejnerů IOC?
Odpověď: Kontejner IOC je dvou typů, jak je uvedeno níže:
- Továrna na fazole - Je to jednoduchý kontejner a poskytuje podporu pro vkládání závislostí.
- Jarní ApplicationContext - Jedná se o pokročilý kontejner, který přidává složité funkce, jako je dekódování textových zpráv ze souborů, a je schopen publikovat události posluchačům.
Otázka č. 12) Jaká je implementace kontejneru Bean Factory?
Odpovědět: Třída XmlBeanFactory je nejdůležitější implementací továrny na fazole a je užitečná pro čtení dat ze souborů XML.
Otázka č. 13) Jaká je implementace kontejneru ApplicationContext?
Odpovědět: Mezi nejčastěji používané kontejnery ApplicationContext patří FileSystemXmlApplicationContext, ClassPathXmlApplicationContext a WebXmlApplicationContext atd.
Otázka č. 14) Co jsou fazole na jaře?
Odpovědět: Spring Beans nejsou nic jiného než jednoduché objekty Java, které jsou spravovány kontejnerem Spring.
Příklad:
package com.javaworld; public class Demo { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println('Display Information: ' + message); } }
Otázka č. 15) Jaké jsou komponenty v definici Bean?
Odpovědět: V zásadě definice fazole obsahuje konfigurační metadata, která se používají v kontejneru Spring ke zjištění podrobností, jako je proces vytváření fazole, životní cyklus fazole a závislosti fazole.
Otázka č. 16) Jakými způsoby lze poskytnout metadata konfigurace do kontejneru Spring?
Odpovědět: Konfigurační metadata lze poskytnout Spring Container třemi způsoby, tj. Prostřednictvím konfiguračního souboru založeného na XML, konfigurace založené na anotacích a konfigurace založené na Javě.
Otázka č. 17) Jaká je syntaxe pro přidání fazole v jarní aplikaci?
Odpověď: Syntaxe:
Otázka č. 18) Jaké jsou typy rozsahu fazole?
Odpovědět: Rozsah fazole lze definovat jako singleton a prototyp, požadavek, relaci, globální relaci atd.
- Prototyp je deklarován, když je pokaždé požadována nová instance fazole.
- Singleton je deklarován, když je pokaždé použita stejná instance fazole.
- Požadavek se používá pro rozsah požadavku HTTP.
- Relace se používá pro rozsah relace HTTP.
- Relace Global-HTTP oboruje fazole na globální relaci HTTP.
Syntax:
Otázka č. 19) Jaký je výchozí rozsah fazole na jaře? Kromě toho jsou synchronizovány?
Odpovědět: Výchozí rozsah fazole na jaře je Singleton. Kromě toho nejsou synchronizovány, tzn. Nejsou bezpečné pro vlákna.
Otázka č. 20) Jaký je životní cyklus fazole na jaře?
Odpovědět: Životní cyklus Spring Bean následuje určité kroky, jak je uvedeno níže:
- Instance - Kontejner pružiny ze souboru XML najde definici fazole a poté bude instance fazole vytvořena.
- Naplnit vlastnosti - Jarní kontejner naplní všechny vlastnosti uvedené v definici fazole pomocí injekce závislostí.
- Nastavení jména Beana.
- Nastavení továrny na fazole.
- Předinicializace a inicializace fazole.
- Po inicializaci fazole.
- Zničte fazole voláním metody destru ().
Otázka č. 21) Co myslíte vnitřními fazolemi?
Odpovědět: Fazole, která je definována uvnitř prvku vlastnosti nebo konstruktoru, se nazývá vnitřní fazole.
Pro vnitřní fazole se nevyžaduje žádné konkrétní ID nebo název, ve skutečnosti se kontejner Spring vyhne těmto hodnotám spolu s definicí oboru. O vnitřních fazolích se říká, že jsou anonymní a jejich rozsah je vždy definován jako prototypy.
Otázka č. 22) Jaké jsou způsoby, jak vložit koncept kolekce na jaře?
Odpovědět: V zásadě existují čtyři prvky kolekce, které lze vložit na jaro.
Oni jsou:
- živel - Propojuje sadu hodnot tím, že z nich vylučuje duplikáty.
- živel - Je užitečné vkládat nebo vkládat hodnoty a umožňuje také duplicitní hodnoty.
- živel - Používá se k vložení páru klíčů nebo jmen a hodnot, které mohou být jakéhokoli typu.
- živel - Používá se k vložení párů klíčů nebo jmen a hodnot, ale typ by měl být pouze řetězec.
Otázka č. 23) Vysvětlete koncept Autowiring.
Odpovědět: Autowiring je základním konceptem v jarním rámci. Používá se k implicitnímu vložení závislosti objektu pomocí injekce založené na seřizovači nebo konstruktoru. Autowiring funguje pouze s referenčními typy, takže není užitečné pro vkládání hodnot pro primitivní a řetězcové typy.
Nejlepší výhodou autowire je, že vývojáři potřebují psát méně kódu, protože o závislost se stará autowire. Programátor také poté tento proces neovládal.
Syntax:
Doporučené čtení => Jarní autowired anotace, Spring Bean Autowire Byname
Otázka č. 24) Vysvětlete různé režimy automatického propojení.
Odpovědět: Autowiring přichází s pěti režimy, které vedou kontejner Spring k používání funkce Dependency Injection.
- Žádný režim - Nazývá se jako výchozí nastavení a implikuje automatické zapojení deaktivováno a pro referenční zapojení by měl být použit explicitní objekt typu bean.
- podle jména - Autowiring lze provést podle názvu nemovitosti. Jarní kontejner prohledá konfigurační soubor XML pro fazole, jejichž atribut autowire je nastaven na byName.
- podle typu - Autowiring lze provést podle typu nemovitosti. Jarní kontejner prohledá konfigurační soubor XML pro fazole, jejichž atribut autowire je nastaven na byType.
- Stavitel - Je téměř stejné jako byType, ale typ je použitelný pro argumenty konstruktoru, pokud v kontejneru není nalezen žádný typ argumentu konstruktoru, pak je vyvolána chyba.
- Auto detekce - Odkazuje na chování jara, které ukazuje jeho prioritu výběru. Nejprve Spring vybere autowiring pomocí konstruktoru, pokud se tak nestane, změní prioritu na byType.
Otázka č. 25) Existuje nějaké omezení automatického zapojení? Pokud ano, vysvětlete.
Odpovědět: Ano, existují určitá omezení automatického zapojení, která jsou uvedena níže:
- Vždy existuje možnost přepsání.
- Vývojář nebude moci autowire primitivní a jarní vlastnosti.
- Autowiring se stává složitým při použití ve velkých aplikacích ve srovnání s explicitním zapojením.
Otázka č. 26) Co je zapojení anotací a jak je zapneme?
Odpovědět: Alternativním využitím XML jsou anotace, ve kterých vývojáři přesouvají celou konfiguraci v jedné třídě pomocí anotací pro konkrétní třídu nebo metodu.
Zapíná se v souboru jarní konfigurace deklarací.
Otázka č. 27) Jaké je použití poznámky @Required?
Odpovědět: Používá se k označení, že v době konfigurace by se vlastnost bean měla naplnit prostřednictvím automatického propojení nebo hodnoty explicitní vlastnosti v definici fazole.
Příklad:
package com.softwaretestinghelp; import org.Springframework.beans.factory.annotation.Required; public class Employee { private Integer age; private String Lname; @Required public void setAge(Integer age) { this.age = age; } public Integer getAge() { return age; } @Required public void setLName(String Lname) { this.name = name; } public String getLName() { return name; } }
Otázka č. 28) Jaké je použití anotace @Autowired?
Odpovědět: Pomáhá získat lepší kontrolu a pochopení toho, jak a kde by mělo být dosaženo automatického zapojení. Lze jej použít k fazole autowire na libovolné metodě setteru, vlastnosti nebo konstruktoru.
Příklad:
package com.softwaretestinghelp; import org.Springframework.beans.factory.annotation.Autowired; public class code-editor { private SpellCheck spellCheck; @Autowired public void setSpellCheck( SpellCheck spellCheck ){ this.spellCheck = spellCheck; } public SpellCheck getSpellCheck( ) { return spellCheck; } public void spellCheck() { spellCheck.checkSpelling(); } }
Otázka č. 29) Jaké je použití anotace @Qualifier?
Odpovědět: Používá se hlavně tehdy, když je vývojář vázán k vytvoření mnoha fazolí stejného typu a chce s vlastností propojit pouze jednu z nich, v tomto scénáři se @Qualifier s @Autowired používá k odstranění nejasností a určení přesné fazole, která má být připojena .
Otázka č. 30) Jak je událost řešena na jaře?
Odpovědět: Zpracování událostí je dosaženo prostřednictvím třídy ApplicationEvent a rozhraní ApplicationListner.
Když fazole implementuje ApplicationListner, pak se ApplicationEvent vygeneruje do ApplicationContext a upozorní, že se fazole vygeneruje.
Otázka č. 31) Jaké jsou příklady standardních jarních akcí?
Odpovědět: Existuje mnoho standardních jarních událostí sloužících příslušnému účelu a jen málo z nich je ContextStartedEvent, ContextRefreshedEvent, ContextStoppedEvent, ContextClosedEvent, RequestHandledEvent atd.
Otázka č. 32) Co označuje společný bod?
Odpovědět: Označuje konkrétní bod, kde lze zapojit aspekt AOP. Jedná se o původní umístění v aplikaci, kde lze pomocí rámce AOP provést nějakou akci.
Otázka č. 33) Co je šablona JDBC a jak ji používat na jaře?
Odpovědět: Šablona JDBC je šablona poskytovaná Spring frameworkem pro efektivnější používání JDBC.
Šablona JDBC se obecně používá pro převod databázových dat na objekty, provádění připravených a volaných příkazů a také podporuje zpracování chyb v databázi.
Otázka č. 34) Co je správa transakcí na jaře? Vysvětlete různé typy správy transakcí.
Odpovědět: Transakce je v podstatě nějaká operace prováděná s některými daty v databázi. Správa transakcí spadá do systému správy relačních databází a používá se k zajištění etiky a konzistence dat.
Hlavní výhodou správy transakcí je, že podporuje deklarativní a programovou správu transakcí a rozhraní API jako Hibernate, JTA a JDBC správnou integrací.
nejlepší aktualizátor ovladačů pro Windows 10
Níže jsou uvedeny dva typy správy transakcí:
- Programatické řízení transakcí se používá k usnadnění transakce, pokud jde o kódování nebo skriptování.
- Deklarativní správa transakcí se používá k izolaci obchodního kódu a transakcí.
Otázka č. 35) Která je nejčastěji používaná správa transakcí?
Odpovědět: Deklarativní správa transakcí je vývojáři široce využívána.
Otázka č. 36) Vysvětlete rámec Spring MVC.
Odpovědět: MVC znamená Model, View a Controller. Jarní rámec MVC se používá k vývoji webových aplikací s dobrým tokem architektury a konfiguracemi. Je vysoce flexibilní v integraci s ostatními rámci.
Otázka č. 37) Vysvětlete jarní architekturu MVC.
Odpovědět: Jarní architektura MVC je založena na modelu, pohledu a řadiči.
(obraz zdroj )
Výše uvedený odkaz má také jednoduchý příklad úplného toku Spring MVC pro referenci.
Tok jarní architektury jde následujícím způsobem :
- Požadavek je přijat servletem dispečera.
- Servlet dispečera odešle požadavek na mapování obslužné rutiny, které poskytuje odpověď, pokud jde o název třídy řadiče.
- Nyní je požadavek odeslán do řídicí jednotky z servletu dispečera, proto řídicí jednotka zpracovává požadavek a vrací objekt zobrazení modelu jako odpověď na servlet dispečera.
- Servlet dispečera opět odešle požadavek na zobrazení resolveru, aby získal správnou stránku zobrazení.
- Nakonec servlet dispečera odešle přijatý objekt modelu na stránku prohlížeče a zobrazí výsledek.
@Controller a @RequestMapping jsou dvě hlavní anotace, které se používají v toku Spring MVC.
Otázka 38) Jaké je použití servletu Dispečer?
Odpovědět: Dispečer Servlet se používá ke zpracování všech příchozích požadavků a odpovědí HTTP od klienta. Celkově řídí veškerou komunikaci od obslužné rutiny k řadiči, aby se zobrazil překladač na stránku skutečného zobrazení.
Otázka č. 39) Vysvětlete použití poznámek @Controller a @RequestMapping v jarním MVC.
Odpovědět:
@Ovladač - Označuje konkrétní třídu, která se chová jako řadič.
@RequestMapping - V zásadě se používá k mapování adresy URL na celou třídu nebo na konkrétní metodu.
Otázka č. 40) Na jednoduchém příkladu vysvětlete inverzi řízení a vkládání závislostí.
Odpovědět: Jak víme, používá se k odstranění závislosti z aplikace.
Kód bez DI:
public class Student { Address address; Employee() { address= new Address();// here we are creating instance } }
Student a adresa budou používat stejnou instanci, proto zde bude vytvořena závislost.
Kód s DI:
public class Student{ Address address; Employee(Address address) { this.address=address;//not creating instance } }
Zde se nevytvoří žádná instance, takže se nevytvoří závislost, proto se kód stane flexibilnějším a volně spojeným.
Otázka č. 41) Vysvětlete rady a jejich typy.
Odpovědět: Jakákoli akce AOP se nazývá Poradenství.
Níže je uvedeno pět typů rad:
- Před radou.
- Po poradě.
- Po vrácení rady.
- Kolem rady.
- Hodí radu.
Otázka č. 42) Jaké jsou různé typy relačních mapování objektů, které Spring podporuje?
Odpovědět: Jaro podporuje ORM jako Hibernate, IBatis, TopLink, Java Data Object, OJB a JPA atd.
Otázka č. 43) Proč je jaro upřednostňováno před rámci nebo základními výhodami Spring Framework?
Odpovědět: Jaro je upřednostňováno před rámcem z několika důvodů. Několik z nich je uvedeno níže:
- Jaro řeší mnoho složitých problémů vývoje aplikací pomocí svých dílčích modulů, jako je jádro, web, přístup k datům, test atd.
- Jaro poskytuje třídy POJO pro vývoj, což zase snižuje stres.
- Výkonná integrace s ostatními rámci.
- Dobré testování aplikací.
- Funkce správy transakcí a modularita.
Otázka č. 44) Co máte na mysli pod Spring Batch?
Odpovědět: Jarní dávka je také lehký rámec, který je vytvořen na podporu vývoje robustních dávkových aplikací pro podnikový systém.
Jarní dávka zlepšuje produktivitu, přístup k vývoji a usnadňuje některé funkce, které se uživatelé na jaře naučili.
Otázka č. 45) Jaké je hlavní použití jarního dávkového rámce?
Odpovědět: Jarní dávka se používá hlavně ke čtení a zápisu souborů a také při provádění určitých operací v databázi, jako je čtení nebo zápis, transformace dat, vytváření zpráv, také import a export dat atd.
Otázka č. 46) Vysvětlete jarní dávkovou architekturu.
Odpovědět: Jarní dávková architektura se skládá hlavně ze tří komponentních vrstev, tj. Aplikace, jádra a infrastruktury.
Aplikace se skládá ze skriptových a dávkových úloh vytvořených vývojáři prostřednictvím jarní dávky. Jádro obsahuje všechny důležité a nezbytné třídy, které jsou vyžadovány pro spuštění a řízení dávkové úlohy. Nakonec infrastruktura zpracovává jak aplikaci, tak jádro, včetně služeb, čtenářů, spisovatelů atd.
Otázka č. 47) Vysvětlete Tasklet v Spring Batch.
Odpovědět: Tasklet je rozhraní, které se často volá k provedení jednoho úkolu, jako je vyčištění nebo odstranění nebo nastavení prostředků během doby provádění.
Otázka č. 48) Vysvětlete princip fungování Spring Batch.
Odpovědět: Jarní dávka funguje hlavně na čtyřech krocích, jak je uvedeno níže:
- Za prvé, krok za krokem povede práci k provedení příslušné práce.
- Má rozhraní itemReader, které poskytuje data.
- Má rozhraní itemProcessor pro transformaci dat.
- Nakonec má rozhraní itemStreamWriter pro generování požadovaného výsledku.
Závěr
Doufáme, že vám tento článek poskytne jasné informace o jarním rámci. Vysvětlil jaro a jeho funkce, aplikace, ve kterých se jaro používá, a proč je to nezbytné pro vývoj aplikací.
Jarní moduly, vkládání závislostí, inverze řízení, správa transakcí, programování orientované na aspekt, koncept volného propojení, jarní architektura MVC, důležité anotace, fazole a automatické zapojení.
Zde jsou uvedeny všechny důležité otázky z jarního pohovoru týkající se všech výše uvedených témat. Je vždy vhodné vysvětlit jakýkoli koncept pomocí příkladu kódu, který poskytne tazateli lepší srozumitelnost.
Doufám, že vám tento článek pomůže vyčistit vaše rozhovory, vše nejlepší!
Doporučené čtení
- Dotazy a odpovědi na pohovor
- Některé zajímavé otázky týkající se testování softwaru
- 20 Selektivních otázek QA Interview k vymazání rozhovoru v roce 2021
- ETL Testing Interview Otázky a odpovědi
- Top 25 dotazů na rozhovor s Perlem, které byste si měli připravit v roce 2021
- Top 25 Software Engineering Interview Questions (LATEST 2021)
- Top 36 dotazů na rozhovor s Jenkinsem (pro rok 2021)
- Top 12 Mockito Interview Questions (Mocking Framework Interview)