User Tools

Site Tools


Problem constructing authldap
test_grila_ian2015
Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
test_grila_ian2015 [2015/01/21 00:41]
Adriana Draghici [Clase abstracte și interfețe]
test_grila_ian2015 [2015/01/21 00:53]
Adriana Draghici [Design patterns, Junit, reflection]
Line 254: Line 254:
 == Clase interne ==  == Clase interne == 
  
-**14. Cu ce poate fi înlocuită linia (xxx) pentru a obține o instanță a B?**+**10. Cu ce poate fi înlocuită linia (xxx) pentru a obține o instanță a B?**
  
 <code java> <code java>
Line 276: Line 276:
  
  
- +**11. Fie interfața ''​Runnable''​ cu singura metodă ''​public void run()''​. Clasa ''​Thread''​ are un constructor ce primește un ''​Runnable''​ ca parametru și expune o metodă ''​public void start()''​. Ce concluzie trageți de la următorul cod?**
-**1. Fie interfața ''​Runnable''​ cu singura metodă ''​public void run()''​. Clasa ''​Thread''​ are un constructor ce primește un ''​Runnable''​ ca parametru și expune o metodă ''​public void start()''​. Ce concluzie trageți de la următorul cod?**+
  
 <code java> <code java>
Line 297: Line 296:
  
  
-**3. Ce cuvânt cheie introdus la (xxx) va permite compilarea programului:​**+**12. Ce cuvânt cheie introdus la (xxx) va permite compilarea programului:​**
  
 <code java> <code java>
Line 322: Line 321:
   * static   * static
  
-**Explicație:​** Pentru a folosi variabile locale din afara contextului (//​scope//​-ului) unei clase interne (cum e și cazul nostru), e necesar cuvântul cheie ''​final''​. Motivul este layout-ul în memorie al claselor și variabilelor,​ iar ''​final''​ permite (prin copiere) și garantează accesul la valoarea corectă a variabliei ''​x''​ la orice moment. ''​static''​ și ''​public''​ nu au oricum sens pentru variabile locale, iar diferențierea dintre "nu e nevoie de modificator"​ și "​final"​ este motivul precedent.+**Explicație:​** ​//Pentru a folosi variabile locale din afara contextului (//​scope//​-ului) unei clase interne (cum e și cazul nostru), e necesar cuvântul cheie ''​final''​//. Motivul este layout-ul în memorie al claselor și variabilelor,​ iar ''​final''​ permite (prin copiere) și garantează accesul la valoarea corectă a variabliei ''​x''​ la orice moment. ''​static''​ și ''​public''​ nu au oricum sens pentru variabile locale, iar diferențierea dintre "nu e nevoie de modificator"​ și "​final"​ este motivul precedent.
  
  
 == 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 338: 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 360: 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 367: 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-uridar 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 424: 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 437: 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 450: 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 474: 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''​.
test_grila_ian2015.txt · Last modified: 2015/01/21 00:53 by Adriana Draghici