Sunteți pe pagina 1din 10

1. Care este signatura completa a metodei main?

public static void main(String arg[]) {}


2. Cum se numeste alfabetul pe care este construit limbajul Java? Unicode
3. Enumerati tipurile primitive ale limbajului Java.
aritmetice:{[intregi]:byte(1),short(2),int(4),long(8), [reale]:float(4),double(8)},caracter:{char(2)}, logic:{boolean(true/false)}
4. Completati valorile variabilelor x si y dupa executia secventei : int x = 1, y = (x++ > 1 ? – x : x–) ; x=1 y=2
5. Care este efectul modificatorului static aplicat unei variabile?
Pentru a specifica faptul ca variabila are o singura valoare comuna tuturor instantelor clasei în care este declarata. Modificarea valorii acestei
variabile din interiorul unui obiect face ca modificarea sa fie vizibila din celelalte obiecte. Variabilele statice sunt initializate la încarcarea
codului specific unei clase si exista chiar si daca nu exista nici o instanta a clasei respective. Din aceasta cauza, ele pot fi folosite de metodele
statice. Pentru fiecare obiect exista o zona de mem.
- static - prezenta lui declara ca o variabila este variabila de clasa si nu de instanta.
- final - indica faptul ca valoarea variabilei nu mai poate fi schimbata, cu alte cuvinte este folosit pentru declararea constantelor.
- transient - este folosit la serializarea obiectelor, pentru a specifica ce variabile membre ale unui obiect nu participa la serializare
- volatile - este folosit pentru a semnala compilatorului sa nu execute anumite optimizari asupra membrilor unei clase. facilitate avansata Java
8. Este o eroare ca o clasa publica sa nu fie declarata intr-un fisier cu acelasi nume ? Da.
7. Care este clasa care ofera support pentru manipularea la nivel fizic a fisierelor si directoarelor ? File
8. Ce metoda tb obligatoriu supradefinita at cand se declara un fir de executie prin extinderea clasei Thread?
public void run()
9. Care este pachetul importat automat in orice aplicatie Java ? java.lang (+ pachetul curent+pachetul implicit-fara nume)
10. Ce reprezinta un pachet si cum poate fi declarat ? Un pachet este o colectie de clase si interfete ınrudite din punctul de vedere al
functionalitatii lor (de ex., clasele referitoare la fisiere sunt grupate in java.io). Sunt folosite pentru gasirea si utilizarea mai usoara a claselor,
pentru a evita conflictele de nume si pentru a controla accesul la anumite clase. Daca dorim sa scriem un pachet numit fisiere, cream un director
cu numele fisier in care punem toate clasele ce dorim sa faca parte din pachet. Aceste clase trebuie sa aiba ca prima intructiune: package fisiere.
11. Care este superclasa tuturor obiectelor care au o reprezentare vizuala (mai putin a meniurilor) ? Component
12. Care sunt modificatorii impliciti ai variabilelor declarate in cadrul unei interfete?
static&final. public daca interfata este declarata public.
13. Care sunt clasele cu ajutorul carora se pot construi fluxuri de obiecte necesare pentru serializarea, respectiv
deserializarea obiectelor? DataInputStream(restaurare) / DataOutputStream (scriere) care implemn interfata DataInput/DataOutput
14. Care este superclasa acelor clase ce descriu exceptii a caror tratare nu este obligatorie? RunTimeException
15. Ce exceptie va genera urmatoarea secventa de cod : Rectangle r[]= new rectangle[10] ; r[0].setSize(10,10);
java.lang.ArrayIndexOutOfBoundsException
16. Care este rolul modificatorului synchronized plasat inaintea unei metode?
Pe o instanta de clasa, la un moment dat, poate lucra o sg metoda sincronizata. Daca un alt fir de executie încearca sa apeleze aceeasi metoda pe
aceeasi instanta sau o alta metoda a clasei de asemenea declarata sincronizata, acest al 2-lea apel va tb sa astepte înainte de executie eliberarea
instantei de catre cealalta metoda. Este folosit in cazul ın care se lucreaza cu mai multe fire de execut ie iar metoda respectiva gestioneaza
resurse comune. Are ca efect construirea unui monitor care nu permite executarea metodei, la un moment dat, decat unui singur fir de executie.
17. Dati o modalitate de a converti un sir de caractere intr-un numar intreg.
int n=(new Integer(“123”)).intValue(); sau n = Integer.parseInt(”123”)
18. Care este pachetul care ofera suport pentru operatii de I/O? java.io.*
19. Care sunt superclasele (pt cit/scr) ale fluxurilor care lucreaza la nivel de caracter? Reader / Writer
20. Care este clasa cu ajutorul careia pot fi citite linii de caractere dintr-un flux de intrare ?
String line=(new BufferedReader(new FileReader(“f.txt”))).readLine();
21. Ce reprezinta serializarea ? Serializarea este o metoda ce permite transformarea unui obiect ıntr-o secventa de octeti sau caractere din
care sa poata fi refacut ulterior obiectul original. Cu alte cuvinte, serializarea permite salvarea ıntr-o maniera unitara a tuturor informatiilor unui
obiect pe un mediu de stocare extern programului. Intr-un cadru mai larg, prin serializare se ıntelege procesul de scriere/citire a obiectelor.
22. Care e rolul modificatorului transient plasat inaintea unei variabile? E folosit la serializarea obiectelor, pt a specifica ce var
membre ale unui obiect nu participa la serializare. Deci elimina variabila din procesul de serializare (daca variabila nu e declarata static).
23. Care sunt pachetele principale care ofera suportul pentru crearea interfetelor grafice (GUI) si pentru tratarea
evenimentelor generate de componentele grafice? java.awt.* , java.awt.event.*
24. Enumerati cel putin trei gestionari de pozitionare.
FlowLayout, BorderLayout, GridLayout, CardLayout GridBagLayout (toate implementeaza interfata LayoutManager)
25. Care sunt cele patru metode fundamentale ale appleturilor? init(), start(), stop(), destroy
26. Care este gestionarul de pozitionare implicit pentru applet-uri ? FlowLayout
27. Ce metoda declara interfata ActionListener ? void actionPerformed(ActionEvent e)
28. Ce inseamna implementare indirecta a unei interfete ?
Interfetele reprezinta nucleul mecanismului de lucru cu colectii, scopul lor fiind de a permite utilizarea structurilor de date independent de
modul lor de implementare. Collection modeleaza o colectie la nivelul cel mai general, descriind un grup de obiecte numite si elementele sale.
Unele implementari ale acestei interfete permit existenta elementelor duplicate, alte implementari nu. Unele au elementele ordonate, altele nu.
Platforma Java nu ofera nici o implementare directa a acestei interfete, ci exista doar implementari ale unor subinterfete mai concrete, cum ar fi
Set sau List.
1
29. Scrieti instructiunea care deschide, dintr-un applet, pagina Web de la adresa ”www.infoiasi.ro”
try{ URL doc = new URL(”http://www.infoiasi.ro”);
getAppletContext().showDocument(doc);
}
catch(MalformedURLException e) {}
30. Ce este un “articol” ( cu referire la interfata AWT ) ?
Meniuri fixe (vizibile permanent): sunt grupate ıntr-o bara de meniuri ce contine cate un meniu pentru fiecare intrare a sa. La randul lor, aceste
meniuri contin articole ce pot fi selectate, comutatoare sau alte meniuri (submeniuri). Orice articol al unui meniu trebuie sa fie o instanta a
clasei Menu-Item. Obiectele acestei clase descriu asadar optiunile individuale ale meniurilor derulante, cum sunt ”Open”, ”Close”, ”Exit”, etc.
Articolele dintr-un meniu trebuie sa apartina clasei MenuItem, ceea ce ınseamna ca pot fi instante ale uneia din clasele MenuItem, Menu sau
CheckboxMenuItem.
31. Care este rolul interfetei Observable ?
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)
32. Metodele din interfete pot sa aiba corp ? Nu. O interfata este o colectie de metode fara implementare si declaratii de constante.
33. Care dintre modificatorii static, final, abstract, transient, synchronized se pot aplica metodelor declarate in interfete?
Pot fi sau nu declarate cu modificatorul public, care este implicit; nici un alt modificator nu poate aparea ın declaratia unei metode a unei
interfete.
34. Este posibil ca pe un lant de mosteniri de clase sa se piarda semnificatia metodelor din interfetele implementate ?
(raspuns elaborat) Spre deosebire de alte limbaje de programare orientate-obiect, Java permite doar mostenirea simpla, ceea ce ıneamna ca o
clasa poate avea un singur parinte (superclasa). Evident, o clasa poate avea oricati mostenitori (subclase), de unde rezulta ca multimea tuturor
claselor definite ın Java poate fi vazuta ca un arbore, radacina acestuia fiind clasa Object. Asadar, Object este singura clasa care nu are parinte,
fiind foarte importanta ın modul de lucru cu obiecte si structuri de date ın Java. O subclasa mostenese de la parintele sau toate variabilele si
metodele care nu sunt private.
35. Constructorii pot fi finali ? Nu, final este pentru constante.
36. Enumerati cel putin 3 evenimente generate de obiectele derivate din clasa Window.
WINDOW_ACTIVATED, WINDOW_ICONIFIED, WINDOW_OPENED, WINDOW_CLOSED, WINDOW_CLOSING,
WINDOW_DEACTIVATED, WINDOW_DEICONIFIED, WINDOW_FIRST, WINDOW_LAST
37. Prin ce difera o aplicatie independenta de un applet?
Intr-un applet nu este nevoie sa cream un obiect cu numele clasei (acesta este creat automat de browser sau applet-viewer), applet-ul nu ruleaza
independent, nu contine functia main(), are in schimb functia init(), se poate incarca de pe web.
Diferenta fundamentala dintre un applet si o aplicatie consta ın faptul ca un applet nu poate fi executat independent, ci va fi executat de
browserul ın care este ıncarcata pagina Web ce contine appletul respectiv. O aplicatie independenta este executata prin apelul interpretorului
java, avand ca argument numele clasei principale a aplicatiei, clasa principala fiind cea care contine metoda main. Ciclul de viata al unui applet
este complet diferit, fiind dictat de evenimentele generate de catre browser la vizualizarea documentului HTML ce contine appletul.
38. Prin ce difera utilitarul de arhivare jar de un arhivator obisnuit ?
Diferenta fata de o arhiva ZIP obisnuita este doar existenta unui director denumit META-INF, ce contine diverse informatii auxiliare legate de
aplicatia sau clasele arhivate (contine un fisier manifest.mf cu informatii despre arhiva).
39. 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. editarea unui fisier de permisiuni
40. Care dintre modificatorii public, private sau protected se pot aplica unei metode abstracte ? De ce ?
O clasa abstracta poate avea modificatorul public, accesul implicit fiind la nivel de pachet, dar nu poate specifica modificatorul final,
combinatia abstract final fiind semnalata ca eroare la compilare - de altfel, o clasa declarata astfel nu ar avea nici o utilitate.
41. Care dintre modificatorii static, final, transient, synchronized se pot aplica unei metode abstracte ? De ce ?
O clasa abstracta poate avea modificatorul public, accesul implicit fiind la nivel de pachet, dar nu poate specifica modificatorul final,
combinatia abstract final fiind semnalata ca eroare la compilare - de altfel, o clasa declarata astfel nu ar avea nici o utilitate. Modificatorul unei
metode poate fi public, protected, private, abstract, final, static, synchronized, native. Fiecare poate aparea cel mult o data, iar dintre primii 3
poate aparea cel mult unul. In caz contrar, se obtine eroare la compilare.
42. Canvas este clasa abstracta ?
Da, Canvas este o clasa generica din care se deriveaza subclase pentru crearea suprafetelor de desenare (planse).
43. Exista si alti modificatori pentru interfete in afara de cel implicit si public?
O interfata poate avea un singur modificator si anume public.
44. 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”;
45. Exista cazuri in care se pot instantia interfete ? Interfetele nu au nici o implementare si nu pot fi instantiate.
46. Care este rolul metodei toString din clasa Object?
returneaza o reprezentare sub forma de sir de caractere a obiectului de catre care a fost apelata
2
47. Exista descendenti ai clasei Color ? ( creati deja ) Nu.
48. Container este sau nu derivat din Component ?
Clasa Container este o subclasa aparte a lui Component, fiind la randul ei superclasa tuturor suprafetelor de afisare Java.
49. Exista cuvantul rezervat package ? Daca da, la ce se foloseste ? Da. Toate clasele si interfetele Java apartin la diverse pachete,
grupate dupa functionalitatea lor. Clasele de baza se gasesc ın pachetul java.lang, clasele pentru intrari/iesiri sunt ın java.io, clasele pentru
interfata grafica ın java.awt, etc. Crearea unui pachet se realizeaza prin scriere la ınceputul fisierelor sursa ce contin clasele si interfetele pe care
dorim sa le grupam ıntr-un pachet a instructiunii: package numePachet; Instructiunea package actioneaza asupra ıntregului fisier sursa la
ınceputul caruia apare. Cu alte cuvinte nu putem specifica faptul ca anumite clase dintr-un fisier sursa apartin unui pachet, iar altele altui pachet.
Daca nu este specificat un anumit pachet, clasele unui fisier sursa vor face parte din pachetul implicit (care nu are nici un nume). In general,
pachetul implicit este format din toate clasele si intefetele directorului curent de lucru. Este recomandat ınsa ca toate clasele si intefetele sa fie
plasate ın pachete, pachetul implicit fiind folosit doar pentru aplicatii mici sau prototipuri.
50. Cum poate fi lansata o aplicatie Java arhivata intr-un fisier cu numele demo.jar? java –jar demo.jar
51. Ce este o relatie de ordine totala? Cum poate fi specificata o astfel de relatie asupra obiectelor unei clase?
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: (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)… pag. 139
52. Cum pot fi folosite comentariile introduse in codul sursa al unei clase Java prin secventa /** ?
javadoc Aplicatie.java; comentariile sunt introduse in documentatia aplicatiei
53. Dati o solutie pentru crearea unei clase publice care sa nu poata fi instantiata.
o declaram abstracta: public abstract class numeClasa {}
54. Ce se va afisa la executia urmatoarei secvente de cod:
RuntimeException a=new RuntimeException();
System.out.println(a.getClass().getSuperclass().getSuperclass());
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)
55. Scrieti secventa care scrie intr-un fisier cu numele ’test.txt’ o linie formata din sirul ’Test’.
try{
FileWriter fw=new FileWriter(”test.txt”);
fw.write(”Test\n”);
fw.close(); //e foarte important!
}
catch(IOException e) {}
56. 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 ?
Complex aduna(Complex b){return new Complex (this.real+b.real,this.imag+b.imag); }
57. Dati cel putin cinci exemple de componente AWT sau Swing. Button, Canvas, Checkbox, Label, List (de exemplu)
58. Scrieti instructiunea care creeaza o conexiune la o baza de date inregistrata in ODBC sub numele ’dbDemo’.
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”); //incarcare driver in memorie
Connection c=DriverManager.getConnection(”jdbc:odbc:geografie”);
59. Mentionati cel putin doi modificatori ai metodei parseInt din clasa Integer, tinand cont de forma in care aceasta este
folosita.
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>;)
60. Care este mecanismul de oprire a unui fir de executie care trebuie sa ruleze pe o perioada nedeterminata, fara a folosi
metoda invechita stop ?
folosind o variabila de terminare:
public void run() {
while ( running ) {…}
}
iar din exteriorul functiei se face running=false;
61. Scrieti secventa care afiseaza suma primelor doua argumente de la linia de comanda (presupunand ca ele exista si sunt
reale). public static void main (String[] args){ System.out.println(Float.parseFloat(args[0])+Float.parseFloat(args[1])); }
62. 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? clasa Test contine un obiect anonim dintr-o clasa al carei cod e scris
imediat dupa declaratia obiectului. Codul compilat pentru obiectul de tip ActionListener va fi inclus intr-un fisier cu $1.class
63. Declarati si instantiati o matrice M cu doua linii si trei coloane cu valorile M(i,j)=10*i+j;
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;

3
64. 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);
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)
65. 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”); } } NU deoarece B extends A, B() apeleaza constructorul implicit A(),
class B extends A { dar acesta nu exista (datorita existentei deja a unui constructor in
B() {System.out.println(”apel constructor B”); } } clasa A) (cel implicit e creat doar daca nu exista nici un alt
public class C { constructor in clasa A).
public static void main(String args[]) { B b = new B(); } }
66. Scrieti metodele getter si setter pentru variabila de tip Point cu numele location.
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() )
67. Fie a, b doua variabile booleene. Care este valoarea de adevar a expresiei: !(a && b) == (!a && !b) ?
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. (Nu e nici o
capcana; am testat cele 4 cazuri posibile pentru uplul (a,b) si rezultatul a fost conform asteptarilor)
68. Ce exceptie va genera urmatoarea secventa de cod?
java.awt.Panel p[]=new java.awt.Panel[2];
p[0].setLocation(0,0);
NullPointerException; p[0] trebuie initializat (p[0]=new java.awt.Panel() si apoi p[0].setLocation(0,0))
69. Care este diferenta intre clasele TreeMap si HashMap ?
In TreeMap, spre deosebire de HashMap, reprezentarea e sub forma de arbore, iar elementele sunt ordonate crescator.
70. Ce intelegeti prin termenul portabilitate ?
Java este un limbaj independent de platforma de lucru, aceeasi aplicatie ruland fara nici o modificare si fara a necesita recompilarea ei pe
sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris, etc. lucru care aduce economii substantiale firmelor dezvoltatoare de
aplicatii. Java este independenta de platforma de lucru (de sistemul de operare).
71. Care va fi valoarea lui z dupa atribuirile de mai jos ? int x=5, y=3, z=(x++ / 2 < –y ? –x : y++);
z=2 (x=6; y=3; 5/2=2 < –y=2)
72. Enumerati cel putin cinci pachete disponibile in JDK 1.3. 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)
73. Care este motivul pentru secventa de mai jos nu va fi compilata ?
interface Hello{
String sayHello(); }
class HelloImp1 implements Hello{
String sayHello() {return ”Hello”;}}
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”;}
74. Cum poate fi controlat accesul concurent al mai multor fire de executie la o resursa comuna gestionata prin
intermediul unei metode ? 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)
75. Care este rolul clasei ResultSetMetaData? Extragerea si prelucrarea rezultatelor dintr-un ResultSet.
76. 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 {}
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)
77. Care este rolul metodei forName din clasa java.lang.Class ?
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.
Aceasta metoda va ıncarca respectiva clasa folosind class loader-ul obiectului curent (care o apeleaza).
78. Care din instantierile de mai jos este (sunt) gresita (gresite):
a) int a[10]=new int[]; (evident) c) char c[]={”O”,”K”}; (tipuri incompatibile:”O” e String)
b) double []b=new double[10]; d) Class[]=new Class[]{String.class}; (nu exista String.class)
79. Dati un exemplu de utilizare a clasei FileDescriptor. public FileReader(FileDescriptor fd), pag 103
4
80. Cum pot fi tratate evenimentele generate de un meniu ?
meniu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {…}});
81. Pot exista interfete vide ? Daca nu, de ce ? Daca da, dati exemplu.
public interface ActionListener extends java.util.EventListener{
public void actionPerformed( ActionEvent e ); }
Toate interfetele de tip "listener" sunt subinterfetele lui java.util.EventListener. Aceasta din urma este o interfata vida. Interfetele ajuta la
identificarea obiectelor capabile de o primi anumite tipuri de evenimente. Interfata MouseListener descrie metodele necesare primirii
evenimentelor MouseEvent ( intrarea mouseului intr-o zana sau iesirea dintr-o zona, apasarea sau eliberarea unui butom al mouseului.
MouseMotionListener este o interfata pentru a identifica evenimentele de tip miscarea(move) sau tarairea (drag) mouseului.
82. Ce reprezinta conceptul de persistenta usoara ? Serializarea permite persistenta obiectelor, ceea ce ınseamna ca durata de viata a
unui obiect nu este determinata de executia unui program ın care acesta este definit - obiectul poate exista si ıntre apelurile programelor care ıl
folosesc. Acest lucru se realizeaza prin serializarea obiectului si scrierea lui pe disc ınainte de terminarea unui program, apoi, la relansarea
programului, obiectul va fi citit de pe disc si starea lui refacuta. Acest tip de persistenta a obiectelor se numeste persistenta usoara, ıntrucat ea
trebuie efectuata explicit de catre programator si nu este realizata automat de catre sistem.
83. 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 ?
public Object top() throws Exception {
if ( this.nrElementeDinStiva>0)
return EmptyStackException;
else
return this.Elemente[nrElementeDinStiva];
}
84. Descrieti succint o modalitate de creare a unei clase din care sa poata fi instantiate fire de executie.
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() {…}}
85. Se pot instantia obiecte ale clasei Math ? Se poate extinde clasa Math ? Explicati.
Nu. Spre deosebire de limbajele de programare procedurale, ın Java nu putem avea functii globale definite ca atare, ıntrucat ”orice este un obiect”. Din acest
motiv chiar si metodele care au o functionalitate globala trebuie implementate ın cadrul unor clase. Acest lucru se va face prin intermediul metodelor de clasa
(globale), deoarece acestea nu depind de starea particulara a obiectelor din clasa respectiva. De exemplu, sa consideram functia sqrt care extrage radicalul unui
numar si care se gaseste ın clasa Math. Daca nu ar fi fost functie de clasa, apelul ei ar fi trebuit facut astfel (incorect, de altfel):
Math obj = new Math(); double rad = obj.sqrt(121); // Incorect ! ceea ce ar fi fost extrem de neplacut... Fiind ınsa metoda statica ea poate fi apelata prin:
Math.sqrt(121) . Asadar, functiile globale necesare unei aplicatii vor fi grupate corespunzator ın diverse clase si implementate ca metode statice.
86. Care din instantierile de mai jos este (sunt) gresita (gresite):
a) List a=new List(); // (List e interfata; nu poate fi instantiata);
b) List c=new ArrayList();
c) LinkedList b=new List(); //(din acelasi motiv);
d) AbstractList d=new LinkedList(); // e corect: LinkedList extinde AbstractList; eu la examen am citit ArrayList in loc de AbstractList si am
zis ca d) e gresit;
87. Care va fi valoarea variabilei s dupa executia blocului de instructiuni?
int s=0;
try {
java.awt.Point p[] = new java.awt.Point[10];
p[0].setLocation(-1,-1); s+=1;
}
catch(IllegalArgumentException e) { s+=2; }
catch(NullPointerException e) { s+=3; }
finally { s+=4; }
a) 0
b) 1
c) 5
d) 6
e) 7 (corect)

5
88. Scrieti o metoda contains(Point p, Point p1, Point p2) care sa testeze daca un punct p se gaseste pe dreapta determinata
de punctele p1 si p2. Se va folosi ecuatia dreaptei: (x,y) se gaseste pe dreapta (x1,y1) – (x2, y2) daca: y - y1 = (x–x1) * (y2–y1) / (x2–x1);
89. Scrieti un program care primeste ca argument de la linia de comanda un numar de puncte si afiseaza nota obtinuta
conform tabelului de mai jos:
Punctaj 40-36 35-31 30-26 25-21 20-16 15-11 10-6 5-0
10 9 8 7 6 5 4 L
import java.io.*;
class test{
public static void main(String [] s) {
int puncte;
boolean gata=false;
//ca sa ies din program dau o valoare in afara intervalului
while(!gata) {
System.out.println(”Introduceti nr de puncte: “);
System.out.flush();
try {
//citesc de la tastatura
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String linie = in.readLine();
try {
puncte = Integer.parseInt(linie);
if (puncte < 0) gata=true;
else
if (puncte>35) System.out.println(”aveti nota 10″);
else
if (puncte<=35 && puncte >=31 ) System.out.println(”aveti nota 9″);
else
if (puncte<=30 && puncte >=26 ) System.out.println(”aveti nota 8″);
else
if (puncte<=25 && puncte >=21 ) System.out.println(”aveti nota 7″);
else
if (puncte<=20 && puncte >=16 ) System.out.println(”aveti nota 6″);
else
if (puncte<=15 && puncte >=11 ) System.out.println(”aveti nota 5″);
else
if (puncte<=10 && puncte >=6 ) System.out.println(”aveti nota 4″);
else System.out.println(”nu aveti nota!!!”);
}
catch (NumberFormatException e1) {System.out.println(”Introduceti un nr intreg!!!”); }
}
catch (IOException e2) { System.out.println(”Intrare gresita de la tastatura “+e2.toString());}
}
}}
90. Scrieti o metoda care returneaza un vector cu primele n numere ale sirului lui Fibonacci (n este primit ca argument)
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;
}
91. Care din afirmatiile urmatoare referitoare la colectii nu este adevarata ?
a) Clasa TreeMap mentine sortate elementele sale.
b) Singura modalitate de a parcurge o multime de tip HashSet, fara a folosi alte structuri de date, este prin intermediul iteratorilor.
c) Clasa Collection este superclasa tuturor claselor ce descriu colectii.
d) Intr-un obiect de tip HashMap, cheia si valoarea sunt de tip Object.
e) Orice colectie de elemente poate fi sortata folosind metoda sort din clasa Collections. [corect]

6
92. Scrieti o clasa Java care sa permita instantierea a maxim 100 de obiecte de tipul ei.
class A {
static int n=0;
private A() {}
public static A newInstance() throws Exception {
if (n < 100) {
n ++;
return new A();
}
throw new Exception("Too many objects!");
}
}
93. Ce se va afisa in urma executiei seventei?
String s1 = new String("hello"), s2="Hello".toLowerCase();
System.out.println(s1 == s2);
a) Secventa nu va fi compilata, deoarece variabila s2 nu este instantiata.
b) Secventa nu va fi compilata, deoarece sirurile nu pot fi comparate cu operatorul ==.
c) false, deoarece s1 si s2 au adrese de memorie diferite. [corect]
d) true, deoarece toLowerCase converteste un sir la litere mici.
e) true, deoarece compararea sirurilor nu tine cont de litere mici sau mari.
94. Care din urmatoarele afirmatii referitoare la cele 4 linii numerotate ale metodei main este corecta:
public class Test {
public static String sayHello() {
return "Hello"; }
public static void main(String args[]) {
Test t = new Test();
String s = Test.sayHello(); // 1
t.sayHello().toUpperCase(); // 2
System.out.println(sayHello()); // 3
args[0] = t.sayHello(); // 4
}
}
a) Totul este corect, clasa va fi compilata.
b) Linia 1 este gresita, deoarece metodele de clasa nu pot fi apelate astfel.
c) Linia 2 este gresita, deoarece metoda sayHello returneaza un sir de caractere.
d) Linia 3 este gresita, deoarece metoda sayHello este statica.
e) Linia 4 este gresita, deoarece este posibil ca vectorul args sa nu fie instantiat. [corect]
95. Ce se va intampla la compilarea fisierului Test.java ce contine clasele urmatoare?
class A {
double x=0;
A(double x) {this.x = x;}
A(float x) {this.x = x;}
}

class B extends A {
double y=0;
B(double x) {
y=0;
super(x);
}
}
a) Compilarea va fi cu succes.
b) Compilarea va fi cu succes, dar la executie instantierile obiectelor din clasa A pot provoca exceptii.
c) Clasa B nu va fi compilata deoarece nu supradefineste ambii constructori.
d) Clasa B nu va fi compilata deoarece constructorul este definit gresit. [corect]
e) Clasa A nu va fi compilata deoarece al doilea constructor este gresit.
96. Care din afirmatiile urmatoare referitoare la serializarea obiectelor nu este adevarata ?
a) Pentru a fi serializabila, o clasa trebuie obligatoriu sa implementeze una din interfetele Serializable sau Externalizable.
b) Obiectele serializate pot fi scrise atat in fisiere cat si in memorie.
c) Variabilele declarate cu modificatorii transient sau private nu participa la serializare. [corect]
d) Mecanismul implicit de serializare a obiectelor unei clase poate fi modificat.
e) Clasele ObjectInputStream si ObjectOutputStream permit si serializarea tipurilor primitive de date.

7
97. Scrieti o un program Java care sa memoreze intr-un obiect de tip HashMap cuvintele unui text si numarul lor de
aparitii. Textul va fi citit de la tastatura iar cuvintele sunt secvente de caractere delimitate prin spatiu, virgula sau punct.
import java.util.*;
import java.io.*;
public class AnalizaText {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String text = in.readLine();
StringTokenizer st = new StringTokenizer(text, " ,.");
HashMap hm = new HashMap();
while (st.hasMoreTokens()) {
String cuvant = st.nextToken();
Integer n = (Integer) hm.get(cuvant);
n = (n == null ? new Integer(1) : new Integer(n.intValue() + 1));
hm.put(cuvant, n);
}
System.out.println(hm);
}
}
98. In urma compilarii fisierului Test.java rezultat, pe langa fisierul Test.class si fisierul Test$1.class. Care este explicatia
acestui fapt ?
a) In fisierul Test.java exista mai exista o clasa cu numele Test$1.
b) Clasa Test contine o subclasa cu numele Test$1.
c) Clasa Test contine o clasa interna statica cu numele 1.
d) Clasa Test contine o clasa anonima. [corect] Test$1.class este un fisier temporar creat de catre compilator.
99.Care va fi valoarea variabilei counter dupa executia blocului de instructiuni?
int counter=0;
try {
Objectobj[]=new Object[10]; counter++;
obj[0] = new String("hello"); counter++;
counter++;
}
catch(Exception e) { counter++; }
finally { counter++; }
a) 1
b) 2
c) 3
d) 4
e) 5
100. Care vor fi erorile depistate la compilarea clasei de mai jos?
class A {
private int x=0;
protected static int y=0;
public void f() { x=1; y=1; }
static void g() { x=2; y=2; }
}
a) Variabila x nu poate fi apelata dintr-un context static
b) Variabila x nu poate fi apelata dintr-un contex ne-static
c) Variabila y nu poate fi apelata dintr-un context static
d) Variabila y nu poate fi apelata dintr-un context ne-static
e) Metoda g nu are modificator de acces
101. Ce se va întâmpla la compilarea urmãtorului program:
public class SubiectLicentaUnu {
int i = 3, j = 4;
public static void main(String [] arg) {
System.out.println(i ++ + ++ j); }
}
a) va apare eroare la compilare deoarece parametrul metodei main() trebuie sã fie String args []
b) va apare eroare la compilare deoarece din funcþia staticã main() nu putem accesa variabilele nestatice i si j
c) va apare eroare la compilare deoarece nu s-au inserat paranteze între operatorii ++, adicã (i++) si (++j)
d) se va afisa 8
e) se va afisa 9

8
102. Care este numarul de octeti ce vor fi folositi pentru memorarea valorilor variabilelor membre ale vectorului de obiecte
A a[]=new A[100]:
class A {
final int N=0;
static double PI=3.14;
static char c[] = {'a', 'b', 'c'};
byte c[] = {1, 2, 3};
}
a) 100
b) 417
c) 711
d) 714
e) 2100
103. Care din afirmatiile de mai jos sunt adevarate ?
interface Test { int N=0; void inc(); }
abstract class AbstractImpl
implements Test {}
class TestImpl extends AbstractImpl {
void inc() { N++; }
public static void main(String args[]) { a) Variabila a este definita corect
Test a = new Test(); b) Variabila b este definita corect
TestImpl b = new AbstractImpl(); c) Variabila c este definita corect
AbstractImpl c = new TestImpl(); } d) Definitia metodei inc este gresita
} e) Corpul metodei inc este gresit
104. Ce se va intampla la compilarea fisierului Stiva.java ce contine clasele alaturate ?
class ExceptieStiva extends Exception {}
public class Stiva {
Object v[] = new Object[100]; int top=0;
public void push(Object x) { v[top]=x;
top++; }
public void pop(){
if (top == 0) throw new ExceptieStiva();
top --;
}
public Object top() { return v[top-1]; }
}
a) Compilarea va fi cu succes si vor rezulta fisierele ExceptieStiva.class si Stiva.class
b) Compilarea va fi cu succes, dar la executie metodele push si top pot fi sursele unor exceptii netratate
c) Clasa ExceptieStiva nu va fi compilata deoarece nu supradefineste constructorul clasei Exception
d) Clasa Stiva nu va fi compilata deoarece metodele push si top nu trateaza exceptiile ce pot aparea.
e) Clasa Stiva nu va fi compilata deoarece metoda pop este incorect definita
105. Care din urmatoarele afirmatii referitoare la appleturi sunt adevarate:
a) Trebuie obligatoriu sa extinda clasa java.applet.Applet
b) Trebuie obligatoriu sa supradefineasca metodele init, start, stop, destroy.
c) Clasele unui applet pot fi grupate in mai multe pachete
d) Un applet trebuie sa defineasca cel putin doua fire de executie
e) Daca appletul nu se gaseste intr-o arhiva jar, clasele sale sunt transferate una cate una in conexiuni HTTP diferite.
106. Care din afirmatiile urmatoare referitoare la fire de executie in Java sunt adevarate ?
a) Orice fir de executie este o instanta a clasei Thread
b) Orice clasa care descrie un fir de executie trebuie sa implementeze obligatoriu interfata Runnable
c) Pentru a controla accesul mai multor fire de executie la o resursa comuna, trebuie sa declaram clasa ce descrie resursa respectiva folosind
modificatorul synchronized
d) Un fir de executie poate sa cedeze procesorul altor fire de executie cu aceeasi prioritate, chiar daca nu si-a terminat inca activitatea.
e) Singura modalitate de a opri un fir de executie este prin apelul metodei stop
107. Care din afirmatiile urmatoare referitoare la programare Java in retea sunt adevarate ?
a) O aplicatie Java poate deschide o conexiune cu un URL oarecare si citi informatiile de la acea adresa
b) Un port este un numar reprezentat pe 16 biti
c) Intr-o aplicatie client-server, clasa care descrie serverul trebuie obligatoriu sa creeze cate un fir de executie pentru fiecare client
d) Comunicarea prin datagrame stabileste o conexiune sigura prin care sunt transmise pachete de informatii
e) Exista posibilitatea de a transmite simultan mesaje de la server catre un grup prestabilit de clienti
108. In ce conditii pot declara o clasa private? In nici una
109. Se poate aplica modificatorul synchronized pentru variabile membre ?
9
- java- considerat un pachet (o multime de clase, interfete adunate sub un nume) – default
- tipurile referinta le manevram cu variabile
- newPointerException – nu am creat obiectul
- A a = new A(); a2=a1 (mai fac o referinta); a1=null, a2=null (sterg referintele explicit)
- distrugerea obiectelor: init – cand ies din init obiectul nu mai este referit
- d1.equals(d2) = true, d1==d2 = false, d1 si d2 sunt referinte si adresa lui d1=adresa lui d2. continutul lor e egal
- int v[]=new int[10]; v[10]=0; exceptie pt ca exista numai pana la v[9] – exception handler (trateaza), catch the exception, throw an exception;
IOException este clasa pentru Exception
- metodele trimit exceptia metodei apelante; RuntimeException
- fluxurile primare (primitive – sunt seriale); fluxurile pentru procesoare ofera functionalitate pt fluxurile primare
- fire de executie – pipe; decorator – wrapper; nu se instantiaza o interfata; pot avea referinta
- inserarea si stergerea merg greu la ArrayList pentru ca shifteaza; accesarea directa merge greu la LinkedList pentru ca merge pas cu pas;
callback – trimiterea unei secvente de cod altei secvente de cod pentru a fi executat acolo
- comparatori, import, packet (director), map=cheie+valoare
- reprezentarea datelor: „text” (fisier), binar-serializare, baze de date orientate obiecte – db.commit(), relatii-BD relationate (nu in arborescente,
multime de uple), XML – JAXB
- FlowLayout – pune elementele unele dupa altele cat timp incap, la dimensiunea preferata
- getImage – pune mana doar pe referinta imaginii; - drawImage (referinta, coordonate, dimensiune, this)
- ImgeObserver (preia imagini) – are o singura metoda ImageUpdate
- Canvas – este deja in Observer
- Shape: draw (deseneaza), fill (umple)
- in AWT ferestrele erau containere; in Swing ferestrele contin un container (containerPane); toate componentele Swing pot juca rol de
container
- programare imperativa secventiala, concurenta, paralela (concurenta pe masini cu mai mult de un procesor), distribuita (arhitectura orientata
pe servicii)
- clasa Thread contine metoda start care invoca metoda run; fir.start() – porneste un fir de executie
- cat timp aplicatia are fire de executie pornite, ea este activa (main-ul nu se inchide); chiar daca moare firul principal, aplicatia este activa daca
acest fie are fii; NotRunnable nu inseamna ca moare; un fir de executie moare (Dead) cand nu mai are nimic de facut; un fir de executia isi
incepe activitatea cu run; daca celelalte fire care nu sunt Daemoni isi incheie activitatea, si firele care sunt Daemoni isi vor incheia automat
activitatea; yield se aplica in cazul aceleiasi prioritati; get si put – sectiuni critice; fiecare obiect in Java are un monitor
- ce este un proxy? Proxy sta intre client si server; clientul trimite cererile sale la server, dar acestea ajung prima data la proxy, care le selecteaza
si apoi trimite serverului doar ce vrea el
- componente in retea, sistem de distributie
- aplicatii web – paradigma cerere-raspuns
- dezavantaje aplicatii web – sunt dependente de retea; interfata grafica trebuie facuta cu cea mai mare grija
- appleturile se executa pe masina clientului (client.site); aplicatiile web se executa la server (server.site)
- dezavantaje applet: daca vor sa acceseze ceva de la server pot avea probleme cu proxy; restrictii de securitate
- un applet poate face orice, este o clasa Java 100%
- nu browserul stie sa aplice appleturi ci anumite containere introduse in browser
- appletViewer – ignora toate tag-urile html in afara de applet
- clasa applet nu este abstracta; toate metodele ei sunt instantiate; init (ii dau sansa sa construiasca), start (cod care creeaza fire de executie si il
pornesc), stop (cod ce opreste firele de executie), metode - destroy
- daca am mai multe clase+resurse Æ jar
- identificatorul depinde de baza de date
- set de instructiuni ce se executa in mod atomic
- tranzactie – unitate atomica de lucru de comunicare cu baza de date (ori faci toate comenzile, ori nu faci nici una)
- commit si rollback – incheierea tranzactiei
Clasa TreeMap mentine sortate elementele sale.
Singura modalitate de a parcurge o multime de tip HashSet, fara a folosi alte structuri de date, este prin intermediul iteratorilor.
Clasa Collection este superclasa tuturor claselor ce descriu colectii.
Intr-un obiect de tip HashMap, cheia si valoarea sunt de tip Object.
Pentru a fi serializabila, o clasa trebuie obligatoriu sa implementeze una din interfetele Serializable sau Externalizable.
Obiectele serializate pot fi scrise atat in fisiere cat si in memorie.
Mecanismul implicit de serializare a obiectelor unei clase poate fi modificat.
Clasele ObjectInputStream si ObjectOutputStream permit si serializarea tipurilor primitive de date.
Appleturile trebuie obligatoriu sa extinda clasa java.applet.Applet
Daca appletul nu se gaseste intr-o arhiva jar, clasele sale sunt transferate una cate una in conexiuni HTTP diferite.
Orice fir de executie este o instanta a clasei Thread
Orice clasa care descrie un fir de executie trebuie sa implementeze obligatoriu interfata Runnable
Un fir de executie poate sa cedeze procesorul altor fire de executie cu aceeasi prioritate, chiar daca nu si-a terminat inca activitatea.
O aplicatie Java poate deschide o conexiune cu un URL oarecare si citi informatiile de la acea adresa
Un port este un numar reprezentat pe 16 biti
Exista posibilitatea de a transmite simultan mesaje de la server catre un grup prestabilit de clienti
10

S-ar putea să vă placă și