Differences

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

Link to this comparison view

poo-ca-cd:test:test_2015 [2020/07/28 23:08]
127.0.0.1 external edit
poo-ca-cd:test:test_2015 [2021/01/29 13:49] (current)
adriana.draghici [Clase interne]
Line 1: Line 1:
-=Test grilă, ianuarie 2015=+=====Test grilă, ianuarie 2015=====
  
 Au fost 20 de întrebări,​ 4 variante de răspuns, un singur răspuns corect. 4 numere, aceleași 20 de întrebări în ordine diferită. Au fost 20 de întrebări,​ 4 variante de răspuns, un singur răspuns corect. 4 numere, aceleași 20 de întrebări în ordine diferită.
Line 7: Line 7:
  
 Analizăm aici întrebările pe rând, structurat pe secțiuni. Analizăm aici întrebările pe rând, structurat pe secțiuni.
-== Basics ==+==== Basics ​====
 **1. Ce obținem la rularea următorului cod:** **1. Ce obținem la rularea următorului cod:**
  
Line 40: Line 40:
  
  
-//A) Statement-ul ''​package''​ poate fi pus doar pe prima linie necomentată dintr-un fișier+//A) Statement-ul ''​package''​ poate fi pus doar pe prima linie necomentată dintr-un fișier
 B) Speci ficatorii de acces pentru clase externe sunt doar public și default B) Speci ficatorii de acces pentru clase externe sunt doar public și default
 C) Un fișier poate avea mai multe clase publice C) Un fișier poate avea mai multe clase publice
Line 61: Line 61:
  
  
-== Constructori,​ referințe ==+==== Constructori,​ referințe ​====
  
 **3. Ce afișează următorul cod:** **3. Ce afișează următorul cod:**
Line 121: Line 121:
  
  
-== OOP ==+==== OOP ====
  
-**5. Care variantă reprezintă suprascrierea corectă a metodei: ''​protected int computeX(int a, float b) {...}''?​**+**5. Care variantă reprezintă suprascrierea corectă a metodei: ''​protected int computeX(int a, float b) {...}''?​**
  
   * ''​int computeX(int a, float b) {...}''​   * ''​int computeX(int a, float b) {...}''​
Line 204: Line 204:
  
  
-== Clase abstracte și interfețe ==+==== Clase abstracte și interfețe ​====
  
 **8. Care afirmații sunt corecte? (Ci denotă clase, Ii denotă interfețe)** **8. Care afirmații sunt corecte? (Ci denotă clase, Ii denotă interfețe)**
Line 251: Line 251:
   - metodele din interfețe sunt prin definiție ''​abstract'';​ final + abstract = compiler headbang - greșit.   - metodele din interfețe sunt prin definiție ''​abstract'';​ final + abstract = compiler headbang - greșit.
  
-== Clase interne == +==== Clase interne ​==== 
  
 **10. 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?**
Line 316: Line 316:
  
   * public   * public
-  * Nu este necesar niciun cuvânt cheie în plus pentru a permite compilarea corectă a programului. +  ​* **Nu este necesar niciun cuvânt cheie în plus pentru a permite compilarea corectă a programului.** 
-  ​* **final**+  * final
   * 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''​ ș''​public''​ nu au oricum sens pentru variabile locale, iar diferențierea dintre "nu e nevoie ​de modificator"​ și "final" este motivul precedent.+**Explicație:​** ​Felul în care este folosită variabila o face// effectively ​final// ​si nu este nevoie de vreun cuvânt cheie în fața declarației ei. Dacă era modificată atunci era nevoie de cuvântul cheie ''​final''​. ​Vedețexplicația din laboratorul ​de [[poo-ca-cd:​laboratoare:​clase-interne|clase interne]] despre //​effectively ​final//.
  
- +==== Colecții și genericitate ​====
-== Colecții și genericitate ==+
  
 **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** **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**
Line 365: Line 364:
   * ''​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ă (un astfel de exemplu este și în [[:​poo-ca-cd::​laboratoare:​genericitate#​genericitatea-in-subtipuri|laboratorul de genericitate]]). ​+**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 [[:​poo-ca-cd::​laboratoare:​genericitate#​genericitatea_in_subtipuri|laboratorul de genericitate]]). ​
  
-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 [[:poo-ca-cd:http://​en.wikipedia.org/​wiki/​Covariance_and_contravariance_%28computer_science%29 | covarianță și contravarianță]] și despre [[:poo-ca-cd:http://​docs.oracle.com/​javase/​tutorial/​java/​generics/​erasure.html | 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 [[http://​en.wikipedia.org/​wiki/​Covariance_and_contravariance_%28computer_science%29 | covarianță și contravarianță]] și despre [[http://​docs.oracle.com/​javase/​tutorial/​java/​generics/​erasure.html | type erasure]] ca să înțelegeți motivele pentru care Java se comportă astfel. 
-== Excepții == +==== Excepții ​==== 
  
 **16. Despre excepțiile unchecked:​** **16. Despre excepțiile unchecked:​**
Line 420: Line 419:
  
  
-== Design patterns, JUnit, misc ==+==== Design patterns, JUnit, misc ====
  
 **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?** **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?**
poo-ca-cd/test/test_2015.1595966903.txt.gz · Last modified: 2020/08/19 23:29 (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