1. Předpokládejte, že máte za úkol pro konkrétního zákazníka vytvořit informační systém pro evidenci zakázek. Půjde o relativně jednoduchou webovou aplikaci, jejíž těžiště bude spočívat v provádění CRUD operací nad několika entitami. Informace o zákaznících budou čerpány z externího CRM systému.

    Navrhněte architekturu systému a vyberte vhodné technologie pro jeho realizaci. Svůj návrh architektury i volbu technologií dobře zdůvodněte.

  2. Vysvětlete, k čemu slouží návrhový vzor DAO a co nám jeho použití přináší.
  3. Vysvětlete, k čemu slouží návrhový vzor Session Façade a co nám jeho použití přináší.
  4. Vysvětlete, k čemu slouží návrhový vzor Adapter a co nám jeho použití přináší.
  5. Proč je na úrovní API mezi prezentační a aplikační vrstvou lepší používat DTO místo entit?
  6. Co je to IoC, k čemu se to používá a co nám to přináší?
  7. Co je to ORM? Jaké jsou výhody a nevýhody této technologie?
  8. Uveďte alespoň dva příklady, kdy je ORM vhodná technologie, a alespoň dva příklady, kdy se ORM naopak nehodí.
  9. Jaké jsou výhody a nevýhody JPA?
  10. Jaké jsou vlastnosti JPA entit (např. ve srovnání s EJB 2.x) a jakým způsobem můžeme definovat mapování do databáze?
  11. Nakreslete a popište stavový diagram entity.
  12. Vysvětlete všechny rozdíly mezi operacemi merge() a persist().
  13. Předpokládejme, že máme ORM nástroj, který implementuje JPA i své vlastní proprietární API. Jaké výhody a nevýhody nám přinese použití JPA ve srovnání s proprietárním API?
  14. Jaké jsou rozdíly mezi JPA a JDO?
  15. Jaké jsou výhody POJO entit ve srovnání s heavyweight entitami?
  16. Co je to JPQL? Napište libovolný příklad.
  17. Mějme entitu Person s atributy name a salary. V jazyce JPQL napište dotaz, který spočítá průměrný plat všech osob v databázi.
  18. Mějme entitu Person s atributy name a salary. V jazyce JPQL napište dotaz, který vrátí kolekci všech osob s platem alespoň 10000.
  19. Mějme entitu Person s atributy name a salary. V jazyce JPQL napište dotaz, který vrátí plat osoby se jménem "Franta Vocásek".
  20. Vyjmenujte alespoň čtyři příklady, k čemu se dají vhodně použít interceptory.
  21. Vyjmenujte alespoň čtyři příklady, k čemu se dá vhodně použít AOP.
  22. Co jsou to interceptory a k čemu se to používá?
  23. Co je to AOP a k čemu se to používá?
  24. Vysvětlete pojmy pointcut, aspect a advice.
  25. Vysvětlete, jakým způsobem lze implementovat AOP (uveďte oba používané způsoby). Jaké jsou jejich výhody a nevýhody?
  26. Je v pořádku rozhraní následující komponenty? Pokud ne, vysvětlete proč.
    public interface CustomerDAO {
                        
        public void create(Customer customer) throws SQLException;
                        
    }
    
  27. Je v pořádku rozhraní následující komponenty? Pokud ne, vysvětlete proč.
    public interface CustomerDAO {
    
        public void create(String firstName, String lastName) throws DataException;
    
    }
    
  28. Je v pořádku rozhraní následující komponenty? Pokud ne, vysvětlete proč.
    public interface CustomerDAO {
    
        public Customer[] findByName(String customerName) throws DataException;
    
    }
    
  29. Mějme aplikaci, jejíž architektura obsahuje níže uvedené vrstvy. Která vrstva bude zodpovědná za orchestraci služeb?
  30. Mějme aplikaci, jejíž architektura obsahuje níže uvedené vrstvy. Která vrstva bude zodpovědná za konverzi entit na DTO?
  31. Mějme aplikaci, jejíž architektura obsahuje níže uvedené vrstvy. Na kterých vrstvách mohou vznikat instance DTO?
  32. Mějme aplikaci, jejíž architektura obsahuje níže uvedené vrstvy. Která vrstva bude zodpovědná za page flow?
  33. Mějme vícevláknovou serverovou aplikaci s globálním řízením transakcí. K čemu je aktuální transakce vázána?
  34. Může v rámci jednoho Persistence Context probíhat více transakci?
  35. Co všechno musí být splněno, abychom mohli používat distribuované transakce (zaškrtněte vše, co musí platit).
  36. Které z následujících vět jsou pravdivé?
  37. Jaké možnosti propagace transakcí podporuje EJB 3.1?
  38. Jaké možnosti propagace transakcí podporuje Spring?
  39. Co je to distribuovaná transakce?
  40. Jak funguje deklarativní řízení transakcí?
  41. Kdo (tj. která komponenta) zajišťuje řízení transakcí u EJB, pokud používáme deklarativní řízení transakcí?
  42. Kdo (tj. která komponenta) zajišťuje řízení transakcí u rámce Spring, pokud používáme deklarativní řízení transakcí?
  43. Vysvětlete rozdíl mezi deklarativním a imperativním řízení transakcí.
  44. Porovnejte webové služby typu REST a SOAP.
  45. Co je to WSDL? K čemu se to používá a proč je to důležité?
  46. Jaké výhody a nevýhody nám přinášejí webové služby typu REST.
  47. Jak vypadají webové služby typu REST.
  48. Co je to ESB. K čemu ESB slouží?
  49. Popište rozdíl mezi komponentově orientovaným webovým aplikačním rámcem (component based framework) a webovým aplikačním rámcem založeném na požadavcích (request based framework).
  50. Jaké jsou obecně výhody a nevýhody komponentově orientovaných webových aplikačních rámců (component based framework) ve srovnání s webovými aplikačními rámci založených na požadavcích (request based framework)?
  51. Které technologie používají POJO entity?
  52. Jakým způsobem můžeme definovat ORM mapování v JPA
  53. Pokud u JPA definujeme mapování pomocí anotací i pomocí XML, co má vyšší prioritu?
  54. Je tento test napsaný správně? Svoji odpověď zdůvodněte.
    @Test
    public void testDoSomethingEqualsTen(){
        MyClass myClass = new MyClass();
        myClass.setTime(System.currentTimeMillis());
        long expected = 10;
        long actual = myClass.doSomething();
        assertEquals(expected, actual);
    }
    
  55. Vyjmenujte a popište základní vlastnosti, které by mělo mít jednotkové testování.
  56. Uveďte a charakterizujte aspoň 3 druhy testování podle cíle.
  57. Porovnejte ručné testování s automatizovaným.
  58. Porovnejte výhody a nevýhody formální verifikace a testování.
  59. Stručně popište k čemu slouží funkční testování a uveďte příklad nástroje pro toto testování.
  60. Vysvětlete pojem akceptační testování. K čemu slouží? Jaké jsou časté problémy?
  61. K čemu slouží mock objekty? Kvůli čemu je potřebujeme ? Uveďte příklad knihovny, která poskytuje mechanizmy vytváření mock objektů.
  62. Jaké jsou výhody a nevýhody technologie EJB ve srovnání s rámcem Spring?
  63. Jaké máme typy EJB komponent v EJB 3.1 (jsou čtyři plus jedna je zastaralá)? Stručně je popište.
  64. K čemu slouží kompomenta typu Stateless Session Bean ?
  65. Kdy je lepší použít EJB a kdy je lepší použít Spring? Zdůvodněte.
  66. Co to je EJB? (čeho je součástí, která vrstva, co zajišťuje, kdy ji použít)
  67. Co je to EJB kontejner? Kde jej nalezneme a k čemu slouží?
  68. Jaké máme typy EJB komponent typu Session Bean v EJB 3.1? Jaké jsou mezi nimi hlavní rozdíly?
  69. Co to je a k čemu slouží Message-Driven Bean?
  70. Stručně popište dva typy business rozhraní u EJB komponent. Které z nich musíme vždy použít?
  71. Co to je a k čemu slouží Singleton Session Bean? Její omezení? Je stavová? Přístup a jak ho lze řídit? Životní cyklus.
  72. Jaké jsou druhy komunikace při vzdáleném přístupu? Jaký se nejčastěji používá pro komunikaci na internetu?
  73. K čemu slouží protokol TCP a jaké jsou jeho nevýhody? Víte které třídy v Jave představují protokol TCP?
  74. Co je to RPC a RMI? Vysvětlete rozdíly a ke každému uveďte aspoň jednu implementaci.
  75. Co je to Java RMI? Jaké má výhody a nevýhody?
  76. Co je to JSON-RPC? Jaký formát správ používá? V čem se liší od XML-RPC?
  77. Co je to SOAP? Který z konceptů je v SOAP implementován: RPC nebo RMI? V jakém formátu je popsané jeho API? V jakém formátu jsou přenášené správy?
  78. Co je to to REST? Jaká je jeho hlavní výhoda?
  79. Co je to AMQP? Jaké jsou rozdíly mezi JMS a AMQP?
  80. Co je to JMS? Jaký druh komunikace JMS podporuje?
  81. Jaké jsou výhody webové aplikace oproti desktopové aplikaci?
  82. Vysvětlete princip Convention over configuration.
  83. Napište 3 Request base technologie a 3 Component Base technologie.
  84. Co znamená řízení průchodu aplikací? Jaké technologie tuto činnost usnadňují?
  85. Popište MVC architekturu. Jak spolu jednotlivé části spolupracují? (Nakreslete obrázek)
  86. Jaký je rozdíl mezi Component-based a Request-based webovým frameworkem?
  87. Jaký je rozdíl mezi internacionalizací a lokalizací? Na co všechno je potřeba dbát při internacionalizaci aplikace? Napište názvy třídy, které se v Javě nejčastěji používají při internacionalizaci.
  88. Která z následujících anotací nepatří do knihovny JUnit?
  89. Co nejlépe použijeme, pokud chceme při startu více uživatelské aplikace vytvořit trvalé připojení do databáze?
  90. Co nejlépe použijeme, pokud chceme při ukončení více uživatelské aplikace ukončit a zavřít trvalé připojení k databázi?
  91. Co nejlépe použijeme, pokud chceme přijímat více JMS zpráv najednou a neblokovat tak prostředky komponenty?
  92. Co nejlépe použijeme, pokud chceme v aplikaci vytvořit službu, která vrací aktuální měnový kurz načtený z databáze?
  93. Co nejlépe použijeme pro realizaci služby nákupního košíku ve více uživatelské aplikaci?
  94. Co nejlépe použijeme, pokud chceme aby se část informací odkládala na server během komunikace klienta s více uživatelskou aplikací?
  95. Pro které z následujících aplikací je vhodný transientní (pomíjivý) druh komunikace?
  96. Pro které z následujících aplikací je vhodný persistentní (vytrvalý) druh komunikace?
  97. Které z následujících možností jsou postupy pro volání vzdálených metod?
  98. Co patří mezi technologie prezentační vrstvy?
  99. Vyberte známé typy útoků na webové aplikace.
  100. Entita v JPA se z Odpojeného (Detached) stavu dostane do Spravovaného stavu (Managed) pomocí jakého příkazu?
  101. Kde mohou být uložena data?