Model Examen Java#3


28 ianuarie 2003 numarul 1

1). Cum poate fi lansata o aplicatie Java arhivata intr-un fisier cu numele demo.jar?

R : java –jar demo.jar

2). Care este rolul interfetei Observable ?

R: Observable este clasa, iar Observer este interfata! (greseala profului)

Conform java-help, “A class can implement the Observer interface when it wants to be informed of changes in observable objects.”. Raspunsul la acesta intrebare ar putea fi: Rolul interfetei Observer este de a informa despre schimbarile dintr-un object care este observat (de un obiect din clasa Observable )(are legatura cu firele de executie)

3). Cum trebuie declarata metoda top a clasei Stack (ce descrie o stiva de obiecte) asfel incat aceasta sa returneze obiectul din varful stivei, sau sa arunce o exceptie de tipul EmptyStackException daca stiva este vida ?

R: public Object top() throws Exception {

if ( this.nrElementeDinStiva>0)

return EmptyStackException;

else

return this.Elemente[nrElementeDinStiva];

}

4). Descrieti succint o modalitate de creare a unei clase din care sa poata fi instantiate fire de executie.

R: class FirExec implements Runnable{

private fir=null;

public FirExec ()

{

if (fir == null) {

fir = new Thread(this);

fir.start();

}

}

public void run() {…}

sau direct: class FirExec extends Thread { public void run() {…}}

5). Ce este o relatie de ordine totala? Cum poate fi specificata o astfel de relatie asupra obiectelor unei clase?

R: ??! Am gasit ceva: Interfata Comparable contine o functie de comparare, care implica o ordine totala intre obiectele unei colectii (java-help: This interface imposes a total ordering on the objects of each class that implements it). Pentru a fi specificata o astfel de relatie pentru obiectele unei clase trebuie ca respectiva clasa sa implemeteze interfata Comparable (deci sa aiba si functia compareTo). Definitia unei relatie de ordine totala: (conform FAI): oricare doua obiecte din multime sunt in relatie unul cu celalalt (unul si numai unul din cazurile urmatoare are loc: a<b, a=b sau a>b)

6). Care din instantierile de mai jos este (sunt) gresita (gresite):

a)List a=new List(); b)List c=new ArrayList(); c)LinkedList b=new List(); d) AbstractList d=new LinkedList();

R: a) (List e interfata; nu poate fi instantiata); c) (din acelasi motiv);

Atentie: d) e corect: LinkedList extinde AbstractList; eu la examen am citit ArrayList in loc de AbstractList si am zis ca d) e gresit;

7). Cum pot fi folosite comentariile introduse in codul sursa al unei clase Java prin secventa /** ?

R: javadoc Aplicatie.java; comentariile sunt introduse in documentatia aplicatiei

8). Care din instantierile de mai jos este (sunt) gresita (gresite):

a)String a=”xy”; b) String b=new String(”xy”);

c)String c={’x’, ’y’}; d)String d=”x”+”y”;

R: c)

9). Care este signatura completa a metodei main din clasa principala a unei aplicatii Java?

R: public static void main(String args[])

10). Ce se va afisa la executia urmatoarei secvente de cod:

RuntimeException a=new RuntimeException();

System.out.println(a.getClass().getSuperclass().getSuperclass());

R: class java.lang.Throwable (cred ca ideea era ca se apeleaza Throwable.toString() pentru afisare, ceea ce determina afisarea textului class <nume_pachet>.<nume_clasa>)(nu stiu daca se puncta raspunsul simplu: Throwable)

11). Scrieti secventa care scrie intr-un fisier cu numele ’test.txt’ o linie formata din sirul ’Test’.

R: try{

FileWriter fw=new FileWriter(“test.txt”);

fw.write(“Test\n”);

fw.close(); //e foarte important!

}

catch(IOException e) {}

12). Care este motivul pentru secventa de mai jos nu va fi compilata ?

interface Hello{

String sayHello(); }

class HelloImp1 implements Hello{

String sayHello() {return ”Hello”;}}

R: in clasa HelloImo1 functia trebuie declarata public (modificatorul de acces implicit in interfata pentru metode e public, iar pentru clasa e package); corect deci

public String sayHello() {return ”Hello”;}

13). Cum trebuie declarata metoda aduna a clasei Complex astfel incat sa poata fi apelata sub forma Complex c=a.aduna(b);, unde a,b sunt variabile de tip Complex ?

R: Complex aduna(Complex b){

return new Complex (this.real+b.real,this.imag+b.imag); }

14). Scrieti instructiunea care creeaza o conexiune la o baza de date inregistrata in ODBC sub numele ’dbDemo’.

R: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); //incarcare driver in memorie

Connection c=DriverManager.getConnection(“jdbc:odbc:geografie”);

15). Mentionati cel putin doi modificatori ai metodei parseInt din clasa Integer, tinand cont de forma in care aceasta este folosita.

R: public si static (se apeleaza cu Integer.parseInt; pentru a avea acces la ea trebuie sa fie publica; o metoda statica poate fi apelata sub forma <nume_clasa>.<metoda>)

16). Care este mecanismul de oprire a unui fir de executie care trebuie sa ruleze pe o perioada nedeterminata, fara a folosi metoda invechita stop ?

R: folosind o variabila de terminare:

        public void run() {
                               while ( running ) {…}
               }
 iar din exteriorul functiei se face running=false;

17). Scrieti secventa care afiseaza suma primelor doua argumente de la linia de comanda (presupunand ca ele exista si sunt reale).

R: public static void main (String[] args){ System.out.println(Float.parseFloat(args[0])+Float.parseFloat(args[1])); }

18). Ce se va intampla la executia urmatoarei secvente?

int test = 0, infinit=0;

try { infinit=1/0; test++; }

catch(Exception e) { test++; }

finally {test++; }

System.out.println(”test=” + test + ” infinit=” + infinit);

R: test=2 infinit=0 (la 1/0 da exceptie; infinit nu se modifica; sare la catch (deci primul test++ nu se executa) si apoi in finally (care se executa indiferent daca apar exceptii sau nu)

19). Va fi compilata secventa de mai jos ? Daca da, care este mesajul afisat la executie ?

class A {

A(int x) {System.out.println(”apel constructor A”); } }

class B extends A {

B() {System.out.println(”apel constructor B”); } }

public class C {

public static void main(String args[]) { B b = new B(); } }

R: deoarece B extends A, B() apeleaza constructorul implicit A(), dar acesta nu exista (datorita existentei deja a unui constructor in clasa A) (cel implicit e creat doar daca nu exista nici un alt constructor in clasa A).

20). Scrieti metodele getter si setter pentru variabila de tip Point cu numele location.

R: Point getLocation(); double getX(); double getY();

void setLocation(float x,float y); void setLocation(int x,int y);

void setLocation(Point p) (cred ca asta trebuia; numele location e al variabilei sau a metodelor ? Daca e al metodei, atunci se exclud metodele getX(), getY() (singurele care le-am scris la examen))

21). In urma compilarii unui fisier ce contine o clasa publica cu numele Test a rezultat, pe langa fisierul Test.class si un fisier cu numele Test$1.class. Care este explicatia acestui fapt?

R: clasa Test contine un obiect anonim dintr-o clasa al carei cod e scris imediat dupa declaratia obiectului. Vezi pb.34: codul compilat pentru obiectul de tip ActionListener va fi inclus intr-un fisier cu $1.class

22). Declarati si instantiati o matrice M cu doua linii si trei coloane cu valorile M(i,j)=10*i+j;

R: int M[][]=new int[2][3];

for(int i=0;i<2;i++)

for(int j=0;j<3;j++)

M[i][j]=10*i+j;

23). Fie a, b doua variabile booleene. Care este valoarea de adevar a expresiei:

!(a && b) == (!a && !b) ?

R: e valoarea de adevar a expresiei a==b; daca a si b au aceeasi valoare de adevar, valoarea expresiei este true, in caz contrar e false. (ce legatura are intrebarea asta cu java? Nu e nici o capcana; am testat cele 4 cazuri posibile pentru uplul (a,b) si rezultatul a fost conform asteptarilor)

24). Ce exceptie va genera urmatoarea secventa de cod?

java.awt.Panel p[]=new java.awt.Panel[2];

p[0].setLocation(0,0);

R: NullPointerException; p[0] trebuie initializat (p[0]=new java.awt.Panel() si apoi p[0].setLocation(0,0))

25). Ce intelegeti prin termenul portabilitate ?

R: Java este independenta de platforma de lucru (de sistemul de operare)

26). Care este diferenta intre clasele TreeMap si HashMap ?

R: In TreeMap, spre deosebire de HashMap, reprezentarea e sub forma de arbore, iar elementele sunt ordonate crescator.

27). Care va fi valoarea lui z dupa atribuirile de mai jos ?

int x=5, y=3, z=(x++ / 2 < –y ? –x : y++);

R: z=2 (x=6; y=3; 5/2=2 < –y=2)

28). Enumerati cel putin cinci pachete disponibile in JDK 1.3.

R: java.applet; java.awt; java.beans; java.io; java.lang; java.math; java.net; java.rmi; java.security; java.sql; java.text; java.util (am intrat in C:\jdk1.3\src\java)

29). Dati cel putin cinci exemple de componente AWT sau Swing.

R: Button, Canvas, Checkbox, Label, List (de exemplu)

30). Cum poate fi controlat accesul concurent al mai multor fire de executie la o resursa comuna gestionata prin intermediul unei metode ?

R: Acea metoda se declara synchronized; un singur fir de executie va putea folosi la un moment dat resursa comuna (indiferent daca apeleaza sau nu metoda respectiva)

31). Care este rolul clasei ResultSetMetaData ?

R: Prelucrarea rezultatelor dintr-un ResultSet.

32). Care sunt erorile ce vor fi detectate la compilarea fisierului A.java ce contine urmatoarele declaratii de clase:

public class A {}

public class B extends A {}

class C extends A, B {}

R: clasa C nu poate extinde doua clase (eroarea de la compilare: dupa extends A trebuie {, adica trebuie corpul clasei C)

clasa B trebuie declarata intr-un fisier separat (B.java); intr-un fisier java poate exista o singura clasa publica (cea cu main-ul)

33). Care este rolul metodei forName din clasa java.lang.Class ?

R: Conform java-help:”Returns the Class object associated with the class or interface with the given string name.”; returneaza un obiect de tip Class corespunzator clasei sau interfetei al carei nume este dat drept argument functiei.

34). Cum pot fi tratate evenimentele generate de un meniu ?

R: meniu.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {...}});

35). Care din instantierile de mai jos este (sunt) gresita (gresite):

a) int a[10]=new int[]; b) double []b=new double[10];

c) char c[]={”O”,”K”}; d) Class[]=new Class[]{String.class};

R: a) (evident), c) (tipuri incompatibile:”O” e String) si d) (nu exista String.class)

36). Care este rolul metodei toString din clasa Object?

R: returneaza o reprezentare sub forma de sir de caractere a obiectului de catre care a fost apelata

37). Dati o solutie pentru un applet sa poata scrie informatii intr-un fisier de pe masina de unde provine appletul, avand in vedere restrictiile de securitate ale appleturilor.

R: editarea unui fisier de permisiuni (vezi penultimul curs)

38). Scrieti instructiunea care deschide, dintr-un applet, pagina Web de la adresa ”http://www.infoiasi.ro

R:try{
               URL doc = new URL("http://www.infoiasi.ro");
               getAppletContext().showDocument(doc);
               }
               catch(MalformedURLException e) {}
39).      Dati o solutie pentru crearea unei clase publice care sa nu poata fi instantiata.
R: o declaram abstracta: public abstract class numeClasa {}
40).      Scrieti o metoda care returneaza un vector cu primele n numere ale sirului lui Fibonacci (n este primit ca argument)

R: public int[] Fibonacci(int n) throws Exception {

int v[]=new int[n];

if(n<0)

throw new Exception();

v[0]=1;

if(1<=n)

v[1]=1;

if(2<=n)

for(int i=2;i<n;i++)

v[i]=v[i-1]+v[i-2];

return v;

}

2 Responses to “Model Examen Java#3”

  1. […] Model examen Java #2 9. Model examen Java #3 8. Pisi, sarbatorita saptamanii 7. Model examen Java #5 6. Picnicul de ziua Alinelor 5. In prag de […]

  2. la intrebarea 27 raspunsul este z=3😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: