# Zkouška 28.1.2019

<{ForumPost(poster="LadyMalande", timestamp=2019-01-28 11:53:45)}>
Tak se znovu objevily nějaké nové příklady. Tentokrát znovu bylo 5 otázek na zaškrtnutá odpovědi a 5 otázek na doplnění kódu.   
  
1) Co program vypíše? (Odpovědi píšu na řádek, ale hodnoty mají být odřádkovány)  
 int i1 = 5;  
int i2 = i1;  
i1 += 1;  
System.out.println(i1);  
System.out.println(i2);  
  
A)  5   5   
B)  5   6       
C)  6   5        
D)  6   6      
E) Nevypíše nic  
  
2) Co vypíše kód:    (nejsem si úplně jistá přesností zadání)  
class MyClass{  
public static int i = 0;  
public MyClass() {  
i++;  
}  
public static void main(String\[] args){  
MyClass\[] my = new MyClass\[5];  
for(int i = 0; i < 5; i++){  
my* = new MyClass();  
}  
System.out.println(i);  
}}  
  
A) 0  
B) 1  
C) 4  
D) 5  
E) Nelze určit  
  
3) Co vypíše následující program  
Interface Iface {  
default void foo(){ System.out.println("Interface");}  
}  
class A{  
public void foo(){ System.out.println("Class");}  
}  
......class B extends A implements Iface{  
public static void main(String\[] args){  
B b = new B();  
b.foo();  
}  
  
A) Interface  
B) Class  
C) Nevypíše nic  
D) nepůjde přeložit   
  
4) Callable, Suplies a Predicate jsou standardní interfacy z JDK a jsou definovány takto:  
interface Callable<T> {  
T call();  
}  
interface Supplier<T> {  
T get();  
}  
interface Predicate<T>{  
boolean test(T t);  
}  
Která z následujících přiřazení lamda výrazu jsou správná (kompilátor je přeloží):  
A) Supplier<Boolean> su = () -> {return true;};  
B) Callable<Boolean> sa = () -> {return true;};  
C) Predicate<Boolean> pr = () -> {return true;};  
  
5) Co vypíše následující kód:  
public class A{ public static void foo(){ System.our.println("A");}}  
public class B extends A{ public static void foo() {System.out.println("B");}}   
public class Main{  
public static void main(String\[] args){  
A a = new B();  
a.foo();  
}}  
  
A) A  
B) B  
C) nelze určit  
  
6) Do následujícího kódu doplňte do parametru metody map lambda výraz tak, aby výstupní stream obsahoval délky řetězců ve vstupním streamu.  
List<String> list = ...;  
Stream<Integer> st = list.stream().map(.........................  
  
7) doplňte dekladaci hashTable tak, aby obsahovala základní sémantiku hash tabulky. (tedy objekt má alespoň metody V get (K key) a void put(K key, V value) pro vytvoření asociace hodnoty na klíč. Navíc k objektu musí bezpečně přistupovat více vláken najednou (tedy volání metod musí být vyloučeno pro více vláken zároveň). Můžete si definovat libovolné další třídy nebo použít cokoliv ze standardní knihovny.  
......hashTable = ............  
- prázdná A5 -  
  
8 ) Napište metodu, která vytiskne obsah jakékoliv kolekce (jako parametr bere instance typu Collection a jakéhokoliv podtypu a jsou definovány jakýmkoliv typem mezi špičatými závorkami)  
Tedy vytiskne všechny prvky z například těchto kolekcí: Collection<String>, Set<Object>, List<Thread>... (Set i List jsou potomci Collection)  
public void printAllItemsInCollection(...............................  
}  
  
9) Doplňte metodu tak, aby vracela počet osob s daným křestním jménem narozených v daném roce. Nezapomeňte otestovat, zda předané parametry nejsou null atd.  
class Person { String firstname; String surname; int yearOfBirth;}  
public class Test{  
public static int metoda(Person \[] array, int year, String firstname){  
...........  
}  
  
10) Napište metodu, která vrátí řetězec obsahující n-krát řetězec str, který bere v parametru. Např. pro 3 a Hello vypíše HelloHelloHello:  
public static String metoda(String str, int n){  
........  
}*
<{/ForumPost}>

