Bine v-am gasit pe ItAssistant.org. Va aducem de aceasta data un nou set de intrebari centrate pe Java, care vor necesita un nivel mediu spre avansat de cunostinte despre platforma Java. De asemenea oferim si raspunsurile pentru aceste intrebari.
Intrebare: Definiti conceptul de polimorfism.
Raspuns: Acelasi nume se poate referi la metode diferite. Este de 2 feluri: overloading si overriding.
- Overriding – metoda cu acceasi semnatura cu o alta din clasa parinte
- Overloading – doua sau mai multe metode in aceeasi clasa cu acelasi nume dar semnaturi diferite.
Atentie! Semnatura unei metode nu include tipul returnat.
Intrebare: Ce inseamna incapsulare?
Raspuns: Calitatea obiectelor de a avea proprietati si metode (actiuni)
Intrebare: Ce inseamna mostenire? Ce fel de mostenire avem in Java?
Raspuns: Calitatea unei clase de a contine proprietatile si metodele altei clase (fara a le mai defini o data). In Java avem doar mostenire simpla, o clasa nu poate extinde mai multe clase.
Intrebare: Ce este o clasa abstracta?
Raspuns: O clasa care nu poate fi instantiata. Acest raspuns este suficient si complet pentru ca restul proprietatilor deriva de aici.
Inca o definitie corecta: “O clasa care se defineste folosind cuvantul cheie abstract!”. Restul proprietatilor deriva de aici!
Si acum sa vedem proprietatile:
- Poate contine si metode abstracte
- Nu poate fi instantiata
- Clasele neabstracte care extind clasele abstracte trebuie sa le implementeze metodele abstracte
- Clasele abstracte pot sa nu implementeze toate metodele interfetelor pe care le implementeaza
Intrebare: Ce este o interfata? Ce modificatori de acces au metodele? dar proprietatile?
Raspuns: Interfetele sunt sabloane ale claselor, entitati care definesc unele proprietati si metode ale claselor care le implementeaza.
Metodele sunt numai publice!
Proprietatile sunt constante: publice, statice si finale!
In Java o clasa poate implementa mai multe interfete. Interfetele evident nu pot fi instantiate!
Intrebare: Ce aduce nou java 1.5?
Raspuns: Tipuri generice, foreach, autoboxing/unboxing (conversia automata de la tipuri de baza la wrapper corespondente), Varargs (ca-n C++), static import, annotations, typesafe enums.
Intrebare: Definiti conceptul de serializare. Cum se implementeaza in Java?
Raspuns: Transformarea unui obiect in sir de biti! Orice obiect care are aceasta proprietate poate fi trimis pe fir sau salvat pe disc. In general scopul serializarii este persistenta.
In Java obiectele serializabile trebuie sa implementeze Serializable. Simpla implementare ii “spune” masinii virtuale ca obiectul poate fi pus pe fir. In cazul in care dorim sa definim un mecanism de serializare diferit de cel al masinii virtuale (de exemplu salvarea unui obiect in format XML) trebuie implementata interfata Externalizable.
Campurile transiente nu se serializeaza!
Metodele din Serializable care pot fi folosite sunt readObject si writeObject!
Intrebare: Colectii: care este diferenta intre set si list.
Raspuns: In set elementele sunt unice.
Intrebare: Stringuri. Cum se aloca, cum se compara valorile. Proprietati ale clasei String.
Raspuns: Se aloca cu new sau cu =”string”. In primul caz obiectul va fi alocat in memorie in al doilea in String Pool. Compararea valorilor se face cu equals in primul caz, cu equals sau == in cazul alocarii pe Pool. Clasa String (nu poate fi extinsa) e finala si imutabila (schimbarea valorii conduce automat la schimbarea referintei). In plus operatorul + e suprascris pentru aceasta clasa.
Intrebare: Cum se transmit parametrii la metode in Java, prin valoare sau referinta?
Raspuns: Exclusiv prin valoare!
Explicatii: tipurile de baza se transmit prin valoare.
Tipurile Obiect (Referinta): referintele in sine se transmit prin valoare. Valorile continute de acestea se transmit prin referinta (i.e. daca isi schimba valorile in cadrul unei metode modificarile valorilor vor fi vizibile din afara; schimbarea referintei insa nu va fi vizibila)!
Intrebare: Care este superclasa clasei Exception? Cate tipuri de exceptii exista in Java? Diferente.
Raspuns: Throwable care are 2 subclase: Exception si Error. In Java exista exceptii checked si unchecked. Unchecked – erori in program, nu trebuiesc prinse, apar la runtime. Erori care trebuiesc tratate in mod obligatoriu chiar din timpul scrierii codului (try/catch, throws).
Intrebare: Multithreading: cum functioneaza? Ce face synchronized? ce face wait?
Raspuns: Mecanism de acces concurent la o resursa. Primul thread care apeleaza o metoda sincronizata obtine lockul obiectului. Urmatoarele threaduri care apeleaza metode synchronizate vor astepta eliberarea lockului. Un thread elibereaza lockul unui obiect cand termina executia metodei synchronizate sau cand apeleaza wait.
Wait intrerupe executia unui thread care in acest fel este adaugat in thred poolul obiectului, sau clasei daca metoda ce apeleaza wait este statica. Un thread iese din thread pool cand un alt thread apeleaza notify sau notifyAll. Metodele nesynchronizate pot fi apelate de threaduri care nu au lockul obiectului.
Alte consideratii: un thread care apeleaza o metoda synchronizata si nu poate obtine lockul obiectului NU este suspendat (nu ajunge in thread pool). El va astepta eliberarea lockului pentru a executa metoda respectiva. Threadurile din thread pool nu isi vor continua executia chiar daca lockul obiectului va fi eliberat.
Intrebare: Care sunt pasii necesari pentru realizarea unui query?
Raspuns: Connection, Statemet, Exec.
Intrebare: Care sunt tipurile de Statement? Care sunt diferentele?
Raspuns: Statement, PreparedStatement. PreparedStatement este precompilat si permite folosirea caracterelor escape (? poate fi inlocuit cu valori de parametrii)
Intrebare: Ce este un LayoutManager?
Raspuns: Un mecanism care defineste asezarea componentelor intr-un container (i.e. butoane in ferestre). Exemple: FlowLayout, BorderLayout, GridBagLayout etc.
Intrebare: Mecanismul de tratare a evenimentelor?
Raspuns: Exista 3 concepte: Observable – obiect care poate produce evenimente, Observer (Listener) -obiect care trateaza evenimentele produse pe un obiect observable pe care il “observa” (“asculta”) si eveniment – un obiect creat in anumite conditii. Aici te mai intreb cum se adauga un listener pentru un obiect si cateva detalii de implementare.
Intrebare: Ce este un Singleton?
Raspuns: Pattern-ul Singleton este utilizat pentru a restrictiona numarul de instantieri a unei clase la un singur obiect.



Felicitari ITAssistant! Articolele voastre pe programare si linux ajuta foarte mult comunitatea opensource romaneasca si mai ales viitorii specialisti in calculatoare!!
Multumim Cristi!
“Overriding – doua sau mai multe metode in aceeasi clasa cu acelasi nume dar semnaturi diferite.” – e Overloading
Desi sunt incepator jumatate din intrebari mi se par destul de simple pentru mid-level(ca sa nu mai zic de avansat)… Daca e un post asemanator cu intrebari pentru juniori, lasa-mi te rog un replay,
Multumiri pentru intrebari si raspunsuri, sunt foarte utile atunci cand vrei sa mai fixezi anumite cunostinte inainte de un interviu.
Multumesc! am corectat
Poti gasi toate posturile cu intrebari pentru interviuri aici: http://itassistant.org/diverse/interviu