Sunteți pe pagina 1din 13

1) Ce este cadrul .Net?

O platformă pentru construirea de aplicații pe Windows, care foloseste clase, bibliotece


și API-uri pentru a construi, implementa și rula servicii web și diferite aplicații.
Acest cadru acceptă modelul de programare orientat pe obiecte.

2) Care sunt componentele importante ale .Net?


Biblioteca de clase și Runtime-ul Common Language.

3) Ce este CLR?
CLR = Runtime de limbaj comun . Este una dintre cele mai importante componente ale
cadrului .Net. Oferă blocuri pentru multe aplicații.

4) Ce se înțelege prin cod gestionat și necontrolat?


Cod gestionat = codul gestionat de CLR, care rulează în interiorul CLR.
Cod neadministrat este orice cod care nu depinde de CLR pentru execuție. Înseamnă că
este dezvoltat de orice alt limbaj independent de cadrul .Net. Folosește propriul mediu
de rulare pentru compilare și execuție.

5) Ce se înțelege prin globalizare și localizare?


Internaționalizarea este procesul de proiectare a aplicațiilor care acceptă mai multe
limbi. Aceasta este împă rțită în Localizare și globalizare .
Globalizarea = dezvoltarea de aplicații pentru a sprijini diferite limbi si culturi.
Localizarea este utilizată pentru localizarea conținutului aplicației. Unele dintre
celelalte cuvinte cheie utilizate pentru localizare sunt IHtmlLocalizer, IStringLocalizer,
IviewLocalizer

6) Ce este un colector de gunoi?


Colectarea gunoiului este o caracteristică .Net pentru a elibera obiectele de cod
neutilizate din memorie.

7) Concepte teoretice POO


POO = o paradigma de programare care foloseste clase si obiecte pentru a crea modele
bazate pe elemente din lumea reala. Aceste obiecte sunt capabile sa trimita mesaje
(date), sa primeasca mesaje (date) si sa proceseze date.
 Scopul programarii orientate pe obiecte este de a incerca sa creasca flexibilitatea
si mentenabilitatea programelor, pentru ca ne permite sa ne cream clase si obiecte
care modeleaza elementele din lumea reala. 

Din ce este compusa POO?


 Obiecte
 Clase
 Mostenirea (claselor)
 Polimorfism
 Abstractizarea (claselor)
 Incapsularea (claselor)

1) Obiecte si Clase
O clasa = colectie de obiecte care au proprietati, operatii si comportamente comune.
= o combinatie de stari (date) si de comportamente (metode).
= o clasa este un tip de date, iar obiectele sunt instante ale acestui tip de
date. 

2) Mostenirea claselor
Avem o clasa parinte X = clasa de baza/super-clasa, care va fi mostenita de o clasa
copil Y, adica clasa copil va imprumuta metodele si clasele existente in clasa parinte.

public class Feline

{ private bool mascul;

public bool Mascul { get { return mascul; } set { this.mascul = value; } }

public Felidae(bool mascul)

{this.mascul = mascul; }}

public class Pisica : Feline

{private int greutate;

public Pisica(bool mascul, int greutate) : base(mascul)

{this.greutate = greutate; }

public int Greutate {get { return greutate; } set { this.greutate = value; }}

base din constructorul clasei Pisica indică faptul că clasa de bază trebuie utilizată și
permite accesul la metodele, constructorii și variabilele sale. Folosind base(), putem
apela constructorul clasei de bază . Folosind base.Metoda(...) putem apela o metodă a
clasei de bază , îi putem oferi parametri și putem utiliza rezultatele acesteia. Folosind
base.câ mp putem obține valoarea unei variabile membru din clasa de bază sau îi putem
atribui o valoare diferită .

3) Polimorfismul
Polimorfism-ul = „a avea mai multe forme” si ofera posibilitatea de a folosi metodele
mostenite sub mai multe forme, in functie de rezultatul pe care il dorim (astfel codul
nostru devenind mai flexibil). Acest lucru ne ofera avantajul de a face un lucru in mai
multe moduri. In concluzie, mostenirea ne ofera posibilitatea de a folosi campurile si
metodele clasei parinte, in timp ce polimorfismul ne ofera posibilitatea de a folosi
metodele mostenite sub mai multe forme pentru a obtine rezultate diferite. Acest lucru
se face prin overloading (supraincarcare) si overriding (suprascriere).
în .NET, metodele moștenite din clasa de bază și declarate ca virtuale pot fi suprascrise.
Aceasta înseamnă ca, codul sursă original din clasa de bază este ignorat și codul nou îi ia
locul.
20. Ce inseamna overriden/overloading?

Overloading

Supraîncarcarea se referă la posibilitatea de a avea într-o clasă mai multe metode cu


același nume, dar cu parametri diferiti ca nume si numar si implementari diferite.

O clasă poate supraîncă rca metodele moștenite. Constructorii pot fi supraîncă rcați.

1. public class Methodoveloading    
2.   { public int add(int a, int b)  //two int type Parameters method  
3.     {  return a + b;    }    
4.     public int add(int a, int b,int c)  //three int type Parameters with same method same as a
bove  
5.     { return a + b+c;  }    
6.     public float add(float a, float b,float c,float d)  //four float type Parameters with same 
method same as above two method 
7. {   return a + b+c+d;   }  }   

Overriding

Suprascrierea se referă la rescrierea metodelor din clasa pă rinte de că tre clasa copil.
Metodele din clasa parinte nu sunt modificate. Putem suprascrie doar metodele vizibile
(public, protected). O metodă din clasa copil suprascrie metoda din clasa pă rinte dacă
are același tip de return și aceeași semnatură (nume și parametri).

1. public class Account
2.   { public virtual int balance()  
3.     {  return 10;   }  
4.   }  
5. public class Amount:Account
6. {  public override int balance()  
7.     {  return 500; }  
8. } 

Câ teva reguli pentru suprascriere sunt:

 metodele de tip static și final nu pot fi suprascrise


 constructorii nu pot fi suprascriși

4) Abstractizarea
= ascunderea anumitor elemente care compun clasele (care de obicei reprezinta aspecte
de detaliu) si punerea in evidenta a acelor informatii esentiale pentru un utilizator.
Abstractizarea poate fi facuta fie prin clase abstracte, fie prin interfete.
5) Incapsularea
= ascunde informatii sensibile(variabile, metode sau clase care pot avea
atributul private) de catre utilizatori.

Beneficiile POO
1. Modularitatea: codul sursa pentru o clasa poate fi scris si mentinut independent de
codul sursa pentru alte clase.
2. Securitate ridicata la nivel de cod: Interactionand doar cu metodele obiectului,
detaliile implementarii interne raman ascunse de lumea exterioara.
3. Reutilizarea codului: daca o clasa exista deja, putem utiliza obiecte din acea clasa.
4. Debugging mai usor: Daca un anumit obiect se dovedeste a fi o problema, il puteti
elimina din program si puteti adauga/conecta, ca inlocuitor, un obiect diferit. Acest lucru
este similar cu rezolvarea problemelor mecanice in lumea reala. Daca un surub se rupe,
il inlocuiti pe el, nu intreaga masina.

8) Ce inseamna internal, protected, public, private?


Modificatori de access:
• public: accesibil din interiorul şi din exteriorul clasei
• protected: accesibil numai din interiorul clasei şi a claselor derivate
• internal: accesibil din interiorul din exteriorul clasei dar numai în cadrul
assembly-ului (proiectului in VS)
• protected internal: accesibil numai din interiorul clasei şi a claselor derivate în
cadrul assembly-ului (proiectului in VS)
• private: accesibil numai din interiorul clasei

9) Ce este o clasa, interfata. Diferenta dintre clasa statica/abstracta si interfata.


O clasă este o colecție de câ mpuri și metode care operează pe câ mpuri.

O interfață are metode complet abstracte, adică metode cu nimeni.

Diferența între clasă și interfață, este ca o clasă poate fi instantanată , dar o interfață
nu poate fi niciodată instanțiată (nu contine niciodata constructori). O interfata
defineste doar ce trebuie sa faca o clasa, poate fi implementata de mai multe clase, iar
clasele care o implementeaza trebuie sa defineasca toate metodele din interiorul
interfetei.

De asemenea, o interfata poate mosteni o alta interfata folosinf cuv. Extinde, iar
metodele din interiorul unei interfete trebuie sa fie intotdeauna publice.

Diferențe cheie între clasă și interfață

 O clasă poate fi inițiată creâ ndu-și obiectele. O interfață nu este


niciodată inițiată , deoarece metodele declarate în interiorul
unei interfețe sunt abstracte și nu efectuează nicio acțiune,
deci nu se folosește instantaneu nicio interfață .
 O clasă este declarată folosind cuv cheie class. În același mod,
o interfață este creată folosind cuv cheie interface.
 Membrii unei clase pot avea specificații de acces precum
public, privat, protejat. Însă membrii unei interfețe sunt
întotdeauna publice, deoarece trebuie să fie accesați de că tre
clasele care le implementează .
 O clasă poate implementa orice numă r de interfețe, dar poate
extinde doar o super-clasă . O interfață poate extinde orice
numă r de interfețe, dar nu poate implementa nicio interfață .
 O clasă are constructori definiți în interiorul acesteia pentru a
obține inițializarea variabilei. Dar, o interfață nu are
constructori, deoarece nu există câ mpuri pentru a fi
inițializate. Câ mpurile unei interfețe sunt inițializate doar la
momentul declarației lor.

O clasă este folosită atunci câ nd trebuie să definim modul în care s-ar


face sarcina. O interfață este folosită atunci câ nd trebuie să știm ce
sarcină trebuie fă cută .

Clase statice
 Nu pot fi create obiecte ale clasei statice
 Membrii trebuie declarați static
 Clasele statice sunt necesare cînd se crează o extension
method(LINQ)
 Clasele statice se folosesc pentru a conține o colecție de
metode statice.
 O clasă statica poate avea doar un constructor static.

9) Care este diferenta dintre class si struct?


Clasa e tip referință (e un pointer și se alocă pe heap), structura e tip valoare(și se alocă
pe stivă ). Diferența este importantă din punct de vedere al gestionă rii memoriei, în
principiu se folosesc clase. La clase se pot folosi modificatori de acces (private, public,
etc.), in timp ce la struct modificatorii de acces pot fi doar publici.

10) Ce inseamna transmitere prin referinta si valoare?


Tipurile valoare sunt byte, int, float, char, etc., tipul enumerare (enum) și tipul
structură . Declararea unei variabile implică alocarea de spațiu. Dacă inițial, variabilele
conțin valoarea implicită specifică tipului, la atribuire, se face o copie a datelor în
variabila destinație care nu mai este legată de variabila inițială . Acest proces se numește
transmitere prin valoare.

Tipurile referință se definesc de că tre programator si includ tipurile clasă , interfață ,


delegat și array (tablourile). Declararea unei variabile nu implică automat alocarea de
spațiu, inițial ele sunt NULL și trebuie alocată memorie pentru obiectele propriu-
zise.

11) Ce inseamna cuvantul cheie virtual?


O metoda din clasa parinte care este declarata ca virtuala, poate fi suprascrisa in clasa
copil.

12) Care este diferenta dintre clasa abstracta si interfata?


Clasa abstractă este o clasă care nu poate fi inițializată , dar poate fi extinsă . Este
declarata folosind cuv cheie abstract. Clasele abstracte acționează ca clase părinte
din care sunt derivate clasele copil.

Interfața este un tip care trebuie implementat de alte clase. Este declarata folosind cuv
cheie interface.

13) Ce inseamna sealed?


Sealed = sigilat este folosit pentru a declara o clasa ca sealed. Clasele sealed nu pot fi
moștenite.

14) Ce inseamna using?


Instrucțiunea using definește un domeniu la sfâ rșitul că ruia va fi eliminat un obiect.

Directiva using creează un alias pentru un spațiu de nume sau importă tipuri definite în
alte spații de nume.

15) Ce inseamna dispose?

Dispose este o metodă invocată pentru cură țarea memoriei și eliberarea resurselor
negestionate.

16) Ce inseamna apel prin valoare si apel prin referinta?

Principala diferență = metoda apel cu valoare trece valoarea unei variabile. Dacă
există vreo modificare a valorii unei variabile în interiorul acelei funcții, aceasta nu
afectează valoarea inițială a acelei variabile.

Apelul prin referință trece adresa acelei variabile. În metoda apelului prin referință ,
trecem variabila în sine într-un argument, iar schimbarea valorii unei variabile afectează
și valoarea inițială a acelei variabile.

17) Cum pot elibera memorie?

Folosind delete, dispose.

18) Ce caracterizeaza o exceptie? Unde se arunca o exceptie?

Exceptia = un obiect care încapsulează informaţii despre o situaţie anormală , o eroare de


executie. Cuv cheie folosite pt tratarea exceptiilor sunt  try, catch, finally, throw.
Aruncarea exceptiilor se face cu throw

try
{
//in this block exception may get thrown
Throw new Exception();
}

Catch(Exception)
{
//handle exception
}

finally
{
//cleanup code, optionally
}

18) Ce reprezinta supraincarcarea operatorilor?

Prin supraincarea operatorilor se redefineste semnificatia unui operator in contextul dat


de o anumita clasa creata. Prin supraincarea unui operator, se extinde aria de utilizare a
acestuia la clasa creata. Efectele operatorului pot diferi de la o clasa la alta.

Supraincarcarea operatorilor este strans legata de supraincarcarea metodelor. Desi


ajuta la sporirea expresivitatii codului, supraincarcarea operatorilor poate duce si la
crearea confuziilor.

19) Ce inseamna delegat?


Un delegate este un obiect care se poate referi la o metodă . Un delegate poate apela
metoda la care se referă .

20) Ce inseamna asincron?

O metodă asincronă rulează sincron pâ nă câ nd atinge prima expresie de așteptare,


moment în care metoda este suspendată pâ nă câ nd sarcina așteptată este completă .
Dacă metoda modificată de cuvâ ntul cheie asincronizat nu conține o expresie sau o
instrucțiune await, metoda se execută sincron.

21) Static
Clase statice
 Nu pot fi create obiecte ale clasei statice
 Membrii trebuie declarați static
 Clasele statice sunt necesare cînd se crează o extension method(LINQ)
 Clasele statice se folosesc pentru a conține o colecție de metode statice.
 O clasă statica poate avea doar un constructor static.

22) Ce reprezinta un atribut?


Atributele oferă o cale de a asocia informații cu cod într-un mod declarativ. atributele
sunt clase care moștenesc de la clasa bază Attribute. Oricare clasă care moștenește de la
Attribute poate fi folosită ca un fel de „etichetă ” pe alte bucă ți de cod. De exemplu, există
un atribut numit ObsoleteAttribute. Acesta este folosit să semnaleze că codul este
învechit și trebuie să nu mai fie folosit.
[Obsolete]
public class MyClass
{}

23) Ce reprezinta Timer?

Clasa Timer din C # reprezintă un control Timer care execută în mod repetat un bloc de
cod la un interval de timp specificat

23) Ce reprezinta un serializarea/deserializarea?

Serializarea reprezinta transformarea unui obiect intr-o secventa de octeti pentru a


putea fi stocat si, eventual, refacut ulterior(=deserializare).

24) Ce reprezinta Enumerable?

Enumerable este un obiect ca o matrice, o listă sau orice alt fel de colecție care
implementează interfața IEnumerable. Enumerabilele standardizează bucla peste
colecții și permit utilizarea sintaxei de interogare LINQ, precum și alte metode de
extensie utile, cum ar fi List.

25) StringBuilder vs String

String este immutable, Immutable înseamnă că dacă se creeaza un obiect șir, atunci nu
se poate modifica și creează întotdeauna un obiect nou de tip șir în memorie.
 Example
 string strMyValue = "Hello Visitor";
 // create a new string instance instead of changing the old one
 strMyValue += "How Are";
 strMyValue += "You ??";

StringBuilder este mutable, înseamnă că dacă creați un obiect de generare de șiruri,


atunci puteți efectua orice operațiune precum inserarea, înlocuirea sau adă ugarea fă ră a
crea o instanță nouă de fiecare dată . Actualizarea șirului într-un singur loc din memorie
nu creează spațiu nou în memorie.
 
 Example
 
 StringBuilder sbMyValue = new StringBuilder("");
 sbMyValue.Append("Hello Visitor");
 sbMyValue.Append("How Are You ??");
 string strMyValue = sbMyValue.ToString();

26) Ce inseamna un array?

„o secvență de elemente de același tip“

27) Exista pointeri(int *i) in C#?

Da, dar nu sunt siguri si nu sunt folositi, iar daca se folosesc se pune cuv cheie unsafe in
fata.

28) Ce este un XML Schema?

XML Schema descrie structura unui document xml.

29) Ce este DOM?

DOM ( Document Object Model ) este un API care expune elementele documentelor
HTML și XML ca obiecte ale limbajului de programare.

30) Ce este recursivitatea? Exemplu.

Funcțiile recursive sunt funcții care fac apel la ele însele din interiorul corpului lor,
pentru a rezolva o problemă . (Fibonaci, Factorial)

31) Care este diferenta intre Dispose() si Finalize()?

Metoda dispose () este definită în interiorul interfeței IDisposable, în timp ce metoda


finalize () este definită în interiorul obiectului clasă . Principala diferență dintre dispose
() și finalize () este că metoda dispose () trebuie să fie invocată în mod explicit de că tre
utilizator, în timp ce metoda finalize () este invocată de colectorul de gunoi, chiar înainte
ca obiectul să fie distrus.
32) Ce reprezinta cuvantul cheie this?
This este un pointer accesibil numai în cadrul metodelor nestatice ale unei
clase sau structuri. Acesta indică obiectul pentru care este apelată metoda.
Membrii statici ai unei clase sau structuri nu au un indicator this.

33) Ce reprezinta this in constructor ?

Este un pointer ce contine adresa obiectului ce urmeaza sa fie construit

34) Ce reprezinta this intr-o functie statica ?

O functie statica nu este asociata cu niciun obiect, deci nu primeste


pointerul this.

35) Ce este o functie statica ?

Este o functie membra, independenta de obiectele clasei.O functie statica


poate fi apelata chiar daca nu exista nicio instanta a clasei.Ele sunt
apelate folosind numele clasei si operatorul de rezolutie.

36) Ce este un atribut static ?

Un atribut static este un atribut ce nu face parte din obiect, in schimb


el este impartit de toate obiectele clasei.Nu poate fi initializat in
interiorul unei clase

37) Ce este un atribut constant ?

Un atribut constant este un atribut ce nu poate fi modificat in timpul


executiei o data ce a fost initializat.

38) Cand se poate initializa un atribut constant ?

Un atribut constant se poate initializa doar la crearea obietului, in lista de


initializare a constructorului.

39) Ce reprezinta supraincarcarea Overloading?

Supraîncarcarea se referă la posibilitatea de a avea într-o clasă mai multe


metode cu același nume, dar implementari diferite sau parametri diferiti.

40) Care este utilitatea supraincarcarii ?

Putem avea mai multe functii cu acelasi nume, care fac acelasi lucru sau
lucruri diferite, dar pentru tipuri de date diferite si chiar si tipuri de
date create de noi. O clasă poate supraîncă rca metodele moștenite.
Constructorii pot fi supraîncă rcați.
41) Ce reprezinta supradefinirea ?

Supradefinirea este abilitatea de a avea 2 functii, una in clasa de baza si


una in clasa derivata, cu acelasi nume si aceeasi lista de parametrii dar
care sunt diferite prin implementare.

42) Care este utilitatea supradefinirii ?

Ne permite sa avem 2 functii cu acelasi nume si aceeasi parametrii, una in


clasa de baza si una in clasa derivata, care sunt diferite prin implementare.

43) Ce este o functie virtuala ?

O functie virtuala este o functie membra ce astepti sa fie redefinita


intr-o clasa derivata.Cand te referi la un obiect al clasei derivate
printr-un pointer la clasa de baza apelezi varianta din clasa derivata a
functiei ce a fost declarata virtuala in baza.

44) In ce context este util modificatorul de acces private ?

Modificatorul private este util la incapsularea datelor.Acesta nu permite


accesul altor clase, nici macar a celor derivate, la atributele clasei.

45) Care sunt tipurile de constructori in cadrul unei clase si ce rol are
fiecare?
Exista 3 tipuri de constructor:default,cu parametrii si de copiere.
Constructorul default construieste un obiect initializand atributele cu
valori constante, ce nu sunt primite ca parametrii.

Constructorul cu parameterii construiecte un obiect cu parametrii primiti


de la apelator.

Constructorul de copiere creaza copii a unor obiecte care sunt


transmise sau returnate prin valoare sau creaza un obiect nou,
initializand atributele cu valorile altui obiect.

46) Care este diferenta intre rolul operatorului = si cel al constructorului de


copiere?
Operatorul = se apeleaza pentru 2 obiecte existente deja.
Constructorul de copiere creaza obiectul si atribuie atributelor valorile altui
obiect deja existent.

47) Ce este memoria HEAP?


Heap este o portiunea de memorie unde putem aloca si dezaloca spatiu
in timpul executiei.
48) Cum se aloca spatiu de memorie in
HEAP?
Spatiu in Heap se aloca folosing
opertorul new.

49) Cum se elibereaza memoria in HEAP ?

Memoria alocata in Heap se elibereaza folosind operatorul delete.

50) In ce context este util modificatorul de acces protected ?

Protected este folosit pentru a oferi acces direct unei clase derivate la
membri clasei de baza, pastrand atributele clasei de baza privvate
pentru restul programului.

51) Care este diferenta dintre specificatorii class si struct ?

Class are ca speficaficator default de acces private iar struct are public

52) Ce reprezinta o clasa ?

Este o structura de date definita de utilizator care contine date si functii


iar accesul la aceste date se face prin specificatori de acces.

53) Ce reprezinta un obiect ?

Un obiect este o instanta a unei clase si contine toate campurile din clasa
din care a fost instantiat.

54) Ce este un framework de clase ?


O ierarhie de clase

55) Pot fi definite metode


constante ?
NU

56) Ce restrictii impune o clasa abstracta ?

O clasa abstracta nu poate fi instantiata.(Nu se pot crea obiecte de acel tip)

57) In ce moment are loc efectiv


supradefinirea?
In timpul executiei
58) In ce moment are loc efectiv
supraincarcarea?
La compilare

59) Care e vizibilitatea implicita in cadrul unei


structuri?
Public

60) La ce pot fi folosite clasele


abstracte ?
La derivare

61) Care este utilitatea atributelor constante ?

Putem defini atribute ce nu vor fi modificate dupa initializare

62) Cum se defineste o metoda care sa nu primeasca pointerul


this ?
Statica

S-ar putea să vă placă și