Pokročilá Java [zkouška 10.6.2024]

Odpovědět
marikaG
Matfyz(ák|ačka) level I
Příspěvky: 1
Registrován: 23. 6. 2024 12:14
Typ studia: Informatika Bc.

Pokročilá Java [zkouška 10.6.2024]

Příspěvek od marikaG »

1. mame tridu Foo v balicku foo a promennou f typu Foo, ktera obsahuje instanci triedy Foo, tedy:

Kód: Vybrat vše

package foo;

class Foo {}

...

Foo f = new Foo();
do promenne clz (definujte i jeji typ) priradte instanci tridy Class, ktera reprezentuje tridu Foo.

Kód: Vybrat vše

... clz = 
reseni:

Kód: Vybrat vše

Class <Foo> clz = f.getClass();
2.Uvazujme nasledujici interface:

Kód: Vybrat vše

@Functionalinterface
interface String Consumer {
void accept(String t);
}
Jaky typ vypise následujici kod:

Kód: Vybrat vše

StringConsumer consumer = System.out::println;
System.out.println(consumer.getClass().getName()):
A. StringConsumer
B. System
C. PrintStream
D. Proxy
E. FunctionalInterface
F. nelze urcit

reseni: F

3. Predpokladejme nasledujici definice (interface List dedi od interfacu Collection):

Kód: Vybrat vše

java.util.List<String> ls = new java.util.ArrayList<>();
java.util.List<Object> lo = new java.util.ArrayList<>():
java.util.Collection<Object> co;
java.util.Collection<?> cu;
Ktera z nasledujicich prirazeni jsou legalni?
A. lo = ls;
B. co = ls;
C. cu = ls;
D. co = lo;

reseni: C,D

4. Napiste generickou metodu, ktera prohodi dva prvky v poli. Metoda ma tri argumenty - pole libovolneho typu a dva indexy prvku k prohozeni.

reseni:

Kód: Vybrat vše

public static <T> void swap(T[] array, int index1, int index2) {
	if (array == null || index1 < 0 || index2 < 0 || index1 >= array.length || index2 >= array.length) { 
		throw new Exception();
	 }
        T temp = array[index1];
        array[index1] = array[index2];
        array[index2] = temp;
    }
5. Napiste signaturu metody, ktera vrati prazdny seznam (instanci typu java.util.List) libovolného typu. Tj. vysledek je priraditely do promenne typu list, kde ve spicatych zavorkach je jakykoliv typ.

reseni:

Kód: Vybrat vše

public static <T> List <T> emptyList();
6. Predpokladejme definici nasledujici anotace:

Kód: Vybrat vše

public @interface Copyright {
String value() default "Charles University";
}
Ktera z nasledujicich pouziti jsou legalni (prekladac je prelozi)?
A.

Kód: Vybrat vše

@Copyright
B.

Kód: Vybrat vše

@Copyright ("me")
C.

Kód: Vybrat vše

@Copyright(value="me")
D.

Kód: Vybrat vše

@Copyright(
setValue("me")
)
reseni: A,B,C

7. Mejme interface Hello, ktery reprezentuje vzdalene dostupny objekt (pres Java RMI).

Kód: Vybrat vše

import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
string sayHello() throws RemoteException;
}
Tento interface je implementovan tridou Hellolmpl a instance teto tridy je zaregistrovana v RMI Naming pod jmenem helloservice. Jake jmeno typu vypise nasledujici kod, ktery ziska vzdalenou referenci na vyse zmineny objekt?

Kód: Vybrat vše

Hello hello = (Hello) Naming.lookup("helloservice");
System.out.println(hello.getClass().getName());
reseni:

Kód: Vybrat vše

 Proxy 
8.Predpokladejte modul, ktery obsahuje balicky com.foo.bar a com.foo.baz a veskery kod modulu je v techto dvou baliccich.
Modul ma následujici deskriptor (soubor module--info.java):

Kód: Vybrat vše

module com.foo {
exports com.foo.bar;
}
Z kódu v defaultnim nepojmenovanem modulu lze z tohoto modulu pouzivat:
A. veskery kod
B. kod z balicku com.foo.bar
C. kod z balicku com.foo.baz
D. zadny kod

reseni: B

9. Na kterou metodu se zkonvertuje nize uvodena metoda behem prekladu v ramci erasure mechanizmu (t. jake typy budou na mistech generickych parametru)?

Kód: Vybrat vše

public static <T extends Comparable<T>>
    int findFirstGreaterThan(T[] at, T elem){
//
}
reseni:

Kód: Vybrat vše

public static int findFirstGreaterThan(Comparable []at, Comparable elem){
//
}
10.
Mejme tridu Person, ktera ma metodu public String getName(). Dale mejme tridy Student, Teacher, Alumni, apod., které dedi od tridy Person. Napiste metodu, která bere jako parametr kolekci trid Person nebo jakékoliv jeji podtridy (tj. Collection<Person>, Collection<Student>, Collection<Teacher>,...) a vypise jména vsech osob v kolekci (bez pouziti explicitniho pretypovani).

Kód: Vybrat vše

public void printNamesOfPersonsInCollection(Collection
reseni:

Kód: Vybrat vše

public void printNamesOfPersonsInCollection(Collection <? extends Person> people) {
    for (Person person: people){
        System.out.println(person.getName()) ;
    }
}
Odpovědět

Zpět na „Ostatní“