This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
test_grila_ian2015 [2015/01/21 00:44] Adriana Draghici [Clase interne] |
test_grila_ian2015 [2015/01/21 00:53] Adriana Draghici [Design patterns, Junit, reflection] |
||
---|---|---|---|
Line 326: | Line 326: | ||
== Colecții și genericitate == | == Colecții și genericitate == | ||
- | **12. Dacă dorim să stocăm un șir de elemente fără duplicate într-o colecție fără să ne intereseze ordinea elementelor sau sortarea lor, clasa cea mai potrivită este** | + | **13. Dacă dorim să stocăm un șir de elemente fără duplicate într-o colecție fără să ne intereseze ordinea elementelor sau sortarea lor, clasa cea mai potrivită este** |
* Vector | * Vector | ||
Line 337: | Line 337: | ||
- | **4. Ce se întâmplă la rularea următorului cod:** | + | **14. Ce se întâmplă la rularea următorului cod:** |
<code java> | <code java> | ||
Line 359: | Line 359: | ||
- | **19. Care dintre următoarele variante este corectă (compilează)?** | + | **15. Care dintre următoarele variante este corectă (compilează)?** |
* ''ArrayList <Person>mylist = new ArrayList<Student>();'' | * ''ArrayList <Person>mylist = new ArrayList<Student>();'' | ||
Line 366: | Line 366: | ||
* ''ArrayList<Student>mylist = new ArrayList<Person>();'' | * ''ArrayList<Student>mylist = new ArrayList<Person>();'' | ||
- | **Explicație**: Ideea cheie în această întrebare și în lucrul cu generics în general este că, de exemplu (exemplul nostru), dacă ''Student'' e subclasă a ''Person'', atunci ''ArrayList<Student>'' **nu** e subclasă a ''ArrayList<Person>'', deci atribuirea nu este corectă. Matching-ul tipului generic (cel dintre paranteze unghiulare) este făcut la compilare și singura variantă care trece de această verificare este varianta în bold. Am fi putut avea matching corect cu wildcard-uri, dar nu a fost cazul aici. | + | **Explicație**: Ideea cheie în această întrebare și în lucrul cu generics în general este că, de exemplu (exemplul nostru), dacă ''Student'' e subclasă a ''Person'', atunci ''ArrayList<Student>'' **nu** e subclasă a ''ArrayList<Person>'', deci atribuirea nu este corectă (un astfel de exemplu este și în [[:laboratoare:genericitate#genericitatea-in-subtipuri|laboratorul de genericitate]]). |
- | Pentru cultura voastră generală, citiți despre //covarianță/contravarianță// și despre //type erasure// ca să înțelegeți motivele pentru care Java se comportă astfel. | + | Matching-ul tipului generic (cel dintre paranteze unghiulare) este făcut la compilare și singura variantă care trece de această verificare este varianta în bold. Am fi putut avea matching corect cu wildcard-uri, dar nu a fost cazul aici. Pentru mai multe detalii puteți să citiți despre //covarianță/contravarianță// și despre //type erasure// ca să înțelegeți motivele pentru care Java se comportă astfel. |
== Excepții == | == Excepții == | ||
- | **5. Despre excepțiile unchecked:** | + | **16. Despre excepțiile unchecked:** |
* clasele lor nu pot fi extinse | * clasele lor nu pot fi extinse | ||
Line 423: | Line 423: | ||
- | == Design patterns, Junit, reflection == | + | == Design patterns, Junit, misc == |
- | **16. Vrem să implementăm un framework de user interface. Cu ce design pattern am putea modela comportamentul de onClick -> doSomething pentru un element de tip buton oarecare?** | + | **18. Vrem să implementăm un framework de user interface. Cu ce design pattern am putea modela comportamentul de onClick -> doSomething pentru un element de tip buton oarecare?** |
* Visitor | * Visitor | ||
Line 436: | Line 436: | ||
- | **11. Care cuvânt dintre următoarele este rezervat în Java?** | + | **19. Care cuvânt dintre următoarele este rezervat în Java?** |
* method | * method | ||
Line 449: | Line 449: | ||
- | **18. Fie următorul ters JUnit funcțional. Ce se va afișa în urma execuției lui?** | + | **20. Fie următorul ters JUnit funcțional. Ce se va afișa în urma execuției lui?** |
<code java> | <code java> | ||
Line 473: | Line 473: | ||
* **before:test1:after:before:test2:after:** | * **before:test1:after:before:test2:after:** | ||
- | **Explicație**: întrebare simplă despre funcționarea JUnit. Fiecare test în parte este precedat de rularea metodei adnotată cu Before și succedată de rularea metodei adnotată cu After. | + | **Explicație**: întrebare simplă despre funcționarea JUnit. Fiecare test în parte este precedat de rularea metodei adnotată cu ''Before'' și succedată de rularea metodei adnotată cu ''After''. |