Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:test:test_2014 [2020/07/28 23:08]
127.0.0.1 external edit
poo-ca-cd:test:test_2014 [2020/08/19 23:26] (current)
florin.mihalache
Line 1: Line 1:
-= Subiecte test ianuarie 2014 = +===== Subiecte test ianuarie 2014 ====
  
-==  POO + Java (principii, best practices, constructii ale limbajului, cuvinte cheie) ==+====  POO + Java (principii, best practices, constructii ale limbajului, cuvinte cheie) ​====
 **1.** Identificați afirmațiile corecte din următorul set: \\ **1.** Identificați afirmațiile corecte din următorul set: \\
  A. O clasă imutabila nu permite existența de metode de tip "​setter"​ publice (definite cu identificatorul de acces public) \\  A. O clasă imutabila nu permite existența de metode de tip "​setter"​ publice (definite cu identificatorul de acces public) \\
Line 73: Line 73:
 Posibilitatea implementării interfețelor nu are legătură cu conceptul OOP de încapsulare. Restul afirmațiilor definesc caracteristici/​avantaje ale încapsulării. Posibilitatea implementării interfețelor nu are legătură cu conceptul OOP de încapsulare. Restul afirmațiilor definesc caracteristici/​avantaje ale încapsulării.
  
-== Moștenire și agregare ==+==== Moștenire și agregare ​====
  
 **5.** Ce se afișează la execuția următorului cod: **5.** Ce se afișează la execuția următorului cod:
Line 172: Line 172:
 **R:** Din moment ce metoda ''​getValue''​ nu este suprascrisă în B, atunci se apelează cea din A, pentru care este vizibil x-ul din A, care are valoarea 10.  **R:** Din moment ce metoda ''​getValue''​ nu este suprascrisă în B, atunci se apelează cea din A, pentru care este vizibil x-ul din A, care are valoarea 10. 
  
-==  Clase abstracte și interfețe== ​+====  Clase abstracte și interfețe==== 
  
 **8.** ​ Care afirmație este adevărată în contextul limbajului Java?\\ **8.** ​ Care afirmație este adevărată în contextul limbajului Java?\\
Line 190: Line 190:
 **R:** Întrebarea verifică cunoștiințele legate de scopul și utilizarea interfețelor și cu ce diferă față de cel al claselor. Raspunsul corect este că interfețele expun operațiile unui obiect (un contract a ceea ce face/oferă un obiect) iar clasele modul în care le execută. **R:** Întrebarea verifică cunoștiințele legate de scopul și utilizarea interfețelor și cu ce diferă față de cel al claselor. Raspunsul corect este că interfețele expun operațiile unui obiect (un contract a ceea ce face/oferă un obiect) iar clasele modul în care le execută.
  
-== Clase interne ==+==== Clase interne ​====
  
 **10.** Ce va afișa următorul program: **10.** Ce va afișa următorul program:
Line 264: Line 264:
 - la execuție întoarce 12356\\ - la execuție întoarce 12356\\
  
-**R:** Răspunsul corect este șirul "​123"​ deoarece, deși se execută instrucțiunile din// finally//, pe stivă s-a pus deja ca rezultat returnat versiunea "​123"​ a șirului. Obiectele //String// sunt immutable, deci modificările aduse în //finally// au rezultat într-un alt obiect string, nemodificându-se șirul pus să fie returnat. Dacă era un //return// în ultimul //finally// atunci s-ar fi întors 12356. Conform [[:poo-ca-cd:http://​docs.oracle.com/​javase/​specs/​jls/​se5.0/​html/​statements.html#​14.17 | specificației]] Java, blocul //finally// se execută înainte de transferul controlului (//​return//​-ul efectiv), dar expresia returnată (în cazul nostru șirul) va fi cea de dinainte de întrepunerea finally-ului.+**R:** Răspunsul corect este șirul "​123"​ deoarece, deși se execută instrucțiunile din// finally//, pe stivă s-a pus deja ca rezultat returnat versiunea "​123"​ a șirului. Obiectele //String// sunt immutable, deci modificările aduse în //finally// au rezultat într-un alt obiect string, nemodificându-se șirul pus să fie returnat. Dacă era un //return// în ultimul //finally// atunci s-ar fi întors 12356. Conform [[http://​docs.oracle.com/​javase/​specs/​jls/​se5.0/​html/​statements.html#​14.17 | specificației]] Java, blocul //finally// se execută înainte de transferul controlului (//​return//​-ul efectiv), dar expresia returnată (în cazul nostru șirul) va fi cea de dinainte de întrepunerea finally-ului.
  
  
Line 318: Line 318:
 **R:** Scopul exercițiului este verificarea înțelegerii flow-ului try-catch-finally. Secvența de cod generează o excepție la împărțirea cu 0, și atunci se intră în //catch// și apoi în //​finally//,​ return-ul luat în considerare fiind cel din finally. ​ **R:** Scopul exercițiului este verificarea înțelegerii flow-ului try-catch-finally. Secvența de cod generează o excepție la împărțirea cu 0, și atunci se intră în //catch// și apoi în //​finally//,​ return-ul luat în considerare fiind cel din finally. ​
  
-== Colecții și genericitate ==+==== Colecții și genericitate ​====
  
 **16.** ​ Pe câte linii există erori în următoarea secvență de cod?  **16.** ​ Pe câte linii există erori în următoarea secvență de cod? 
Line 332: Line 332:
 - 4 - 4
  
-**R:** Scopul exercițiului este verificarea regulilor legate de genericitate în contextul polimorfismului. Regula de bază, ​ accentuată și în [[:​poo-ca-cd:​http://​elf.cs.pub.ro/​poo/​laboratoare/genericitate#​genericitatea-in-subtipuri ​| laborator]] este că atribuirile polimorfice se aplică doar tipului de bază nu și tipului generic. Din acest motiv, //l2// și //l4// sunt greșite. Atribuirea //l3// este greșită deoarece tipurile primitive int/​double/​float/​short/​byte/​boolean nu pot fi folosite ca tipuri generice.+**R:** Scopul exercițiului este verificarea regulilor legate de genericitate în contextul polimorfismului. Regula de bază, ​ accentuată și în [[:​poo-ca-cd:​laboratoare:genericitate#​genericitatea_in_subtipuri ​| laborator]] este că atribuirile polimorfice se aplică doar tipului de bază nu și tipului generic. Din acest motiv, //l2// și //l4// sunt greșite. Atribuirea //l3// este greșită deoarece tipurile primitive int/​double/​float/​short/​byte/​boolean nu pot fi folosite ca tipuri generice.
  
 **17.** Ce colecție ar fi cel mai bine de folosit dacă am vrea să menținem o serie de configurări/​proprietăți ale aplicatiei, citite dintr-un fișier de configurare. Alegeți în funcție de cat de ușor e de lucrat cu colecția respectivă în cazul de față, al lizibiltății codului și eficiența d.p.d.v. al timpului de acces.\\ **17.** Ce colecție ar fi cel mai bine de folosit dacă am vrea să menținem o serie de configurări/​proprietăți ale aplicatiei, citite dintr-un fișier de configurare. Alegeți în funcție de cat de ușor e de lucrat cu colecția respectivă în cazul de față, al lizibiltății codului și eficiența d.p.d.v. al timpului de acces.\\
Line 354: Line 354:
 **R:** Scopul principal al acestui exercițiu este verificarea înțelegerii folosirii/​implementării equals și hashcode. Afirmația 1 e falsă pentru că e fix negarea ​ contractului Java pentru //equals// și //​hashcode//​. Afirmația a 3-a este falsă pentru că există situații în care dacă nu văfaceți propria implementare a metodei //equals// în clasa voastră folosită drept cheie în //Map//, atunci comportamentul programului poate sa nu fie cel dorit: se adauga obiecte drept chei in map care din punctul vostru de vedere sunt egale, insa neavand nici equals si nici hashcode cu implementari proprii, ele sunt considerate diferite. Aceasta afirmație verifică înțelegerea necesității de a suprascrie //equals// și //​hashcode//​ pentru obiecte proprii, atunci când sunt adăugate în seturi sau folosite drept chei în map-uri. **R:** Scopul principal al acestui exercițiu este verificarea înțelegerii folosirii/​implementării equals și hashcode. Afirmația 1 e falsă pentru că e fix negarea ​ contractului Java pentru //equals// și //​hashcode//​. Afirmația a 3-a este falsă pentru că există situații în care dacă nu văfaceți propria implementare a metodei //equals// în clasa voastră folosită drept cheie în //Map//, atunci comportamentul programului poate sa nu fie cel dorit: se adauga obiecte drept chei in map care din punctul vostru de vedere sunt egale, insa neavand nici equals si nici hashcode cu implementari proprii, ele sunt considerate diferite. Aceasta afirmație verifică înțelegerea necesității de a suprascrie //equals// și //​hashcode//​ pentru obiecte proprii, atunci când sunt adăugate în seturi sau folosite drept chei în map-uri.
  
-== Design Patterns == +==== Design Patterns ​==== 
 19. Care pattern implică ascunderea vizibilității contructorilor unei clase?\\ 19. Care pattern implică ascunderea vizibilității contructorilor unei clase?\\
 + Singleton\\ + Singleton\\
poo-ca-cd/test/test_2014.1595966903.txt.gz · Last modified: 2020/08/19 23:26 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0