Zkouška 28.1.2019

LadyMalande at 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

  1. 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

  1. 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

  1. 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;};

  2. 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

  1. 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(.........................

  2. 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(...............................
}

  1. 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){
    ...........
    }

  2. 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){
    ........
    }*