{"id":39850,"date":"2022-05-13T11:08:43","date_gmt":"2022-05-13T10:08:43","guid":{"rendered":"https:\/\/codecool.com\/?p=39850"},"modified":"2022-09-19T17:52:34","modified_gmt":"2022-09-19T16:52:34","slug":"intrebari-interviu-c","status":"publish","type":"post","link":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/","title":{"rendered":"Preg\u0103tirea pentru interviul C#: 50 de \u00eentreb\u0103ri \u0219i r\u0103spunsuri fundamentale \u00een recrutarea IT"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Dac\u0103 \u0219tii un <\/span><b>limbaj de programare C<\/b><span style=\"font-weight: 400;\">, cu siguran\u021b\u0103 nu vei duce lips\u0103 de oportunit\u0103\u021bi de angajare. Exist\u0103 numeroase companii care recruteaza activ programatori care cunosc limbajele C# sau C++, iar aceste posturi sunt v\u00e2nate de mul\u021bi al\u021bi candida\u021bi, asemenea \u021bie. Nu e motiv de panic\u0103, ci de ac\u021biune!\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ca s\u0103 ie\u0219i c\u00e2\u0219tig\u0103tor din procesul de recrutare, <\/span><b>este esen\u021bial s\u0103 te faci remarcat,<\/b><span style=\"font-weight: 400;\"> iar interviul tehnic este unul dintre momentele cheie. \u021ai-am preg\u0103tit <\/span><b>50 de \u00eentreb\u0103ri de interviu C#<\/b><span style=\"font-weight: 400;\"> care acoper\u0103 aproape toate subiectele importante \u00een termeni simpli, pentru a te ajuta s\u0103 te preg\u0103te\u0219ti c\u00e2t mai bine pentru interviul cu angajatorul.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Dac\u0103 \u0219tii \u0219i alte limbaje de programare, cu at\u00e2t mai bine!<\/strong> \u021ai-am preg\u0103tit <\/span><a href=\"https:\/\/codecool.com\/ro\/blog\/intrebari-interviu-java\/\"><span style=\"font-weight: 400;\">50 de \u00eentreb\u0103ri de interviu Java<\/span><\/a><span style=\"font-weight: 400;\"> cu care s\u0103-\u021bi testezi cuno\u0219tin\u021bele.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Evit\u0103 s\u0103 memorezi o serie de r\u0103spunsuri standard \u0219i folose\u0219te ocazia pentru a sus\u021bine cuno\u0219tin\u021bele listate \u00een CV, completeaz\u0103 no\u021biunile teoretice cu exemple din proiectele la care ai lucrat \u0219i pune \u00een ac\u021biune abilit\u0103\u021bile de comunicare, astfel \u00eenc\u0103 interviul s\u0103 decurg\u0103 natural.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Acestea sunt sfaturile pe care mentorii Codecool le ofer\u0103 \u0219i absolven\u021bilor \u0219colii, atunci c\u00e2nd ajung \u00een etapa de recrutare, pentru a ob\u021bine jobul pe noi \u00eel garant\u0103m. Cifrele vorbesc de la sine, <\/span><b>98% dintre absolven\u021bii Codecool au fost angaja\u021bi la terminarea cursului.<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Iat\u0103 <\/span><b>50 de \u00eentreb\u0103ri frecvente \u00eentr-un interviu de programator C#<\/b><span style=\"font-weight: 400;\"> \u0219i r\u0103spunsurile care pot s\u0103 te aduc\u0103 un pas mai aproape de job-ul dorit.\u00a0<\/span><\/p>\n<p><b>E\u0219ti preg\u0103tit s\u0103 \u00eencepem? <\/b><\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-39865 size-large aligncenter\" src=\"http:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/intrebari-interviu-c-1024x512.jpeg\" alt=\"interviu programare c\" width=\"800\" height=\"400\" srcset=\"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/intrebari-interviu-c-1024x512.jpeg 1024w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/intrebari-interviu-c-300x150.jpeg 300w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/intrebari-interviu-c-768x384.jpeg 768w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/intrebari-interviu-c-1536x768.jpeg 1536w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/intrebari-interviu-c-2048x1024.jpeg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">1. Ce este limbajul de programare C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">C# este un limbaj de programare modern, cu scop general, este orientat pe obiecte \u0219i dezvoltat de c\u0103tre Microsoft. Se ruleaz\u0103 pe .NET Framework. C# este foarte aproape, ca sintaxa, de limbajele de programare C\/C++ \u0219i Java (cu men\u021biunea c\u0103 este asemenea JAVA, un limbaj a c\u0103rui memorie este gestionat\u0103 intern de c\u0103tre mecanismul de Garbage Collector, lucru care-l diferen\u021biaz\u0103 de C++), \u0219i este folosit pentru crearea componentelor software.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">2. Cum este C# diferit de limbajul de programare C?<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Limbajul C accept\u0103 programarea procedural\u0103, \u00een timp ce limbajul C# accept\u0103 programarea orientat\u0103 pe obiecte.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Limbajul C accept\u0103 indicatori (pointers) iar \u00een C# pointerii sunt utiliza\u021bi numai \u00een modul unsafe.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Limbajul C poate fi executat pe mai multe platforme, iar \u00een cazul .NET Framework este necesar s\u0103 execute limbajul C#.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Folosind limbajul C po\u021bi atinge un nivel sc\u0103zut de abstractizare, \u00een timp ce folosind C# se poate ob\u021bine un grad ridicat de abstractizare.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Limbajul C este orientat mai mult pe func\u021bii, iar C# mai mult pe design.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Exist\u0103 un total de 32 de cuvinte cheie utilizate \u00een limbajul C, \u00een timp ce limbajul C# folose\u0219te un total de 86 de cuvinte cheie.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Limbajul C este utilizat, \u00een principal, \u00een industriile comerciale \u0219i \u00een inginerie iar C# este folosit pentru dezvoltarea de software \u0219i alte obiective legate de re\u021bea.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">\u00a03. Ce este Common Language Runtime (CLR)?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">CLR este componenta de baz\u0103 \u0219i de Virtual Machine a .NET Framework. Este mediul din .NET Framework care ruleaz\u0103 codurile \u0219i ajut\u0103 la u\u0219urarea procesului de dezvoltare prin accesul la diverse servicii, de exemplu &#8211; <\/span><i><span style=\"font-weight: 400;\">remoting, thread management, type-safety, memory management. <\/span><\/i><span style=\"font-weight: 400;\">Practic, este responsabil cu gestionarea execu\u021biei programelor .NET indiferent de limbajul de programare .NET.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">4. Ce sunt indexatorii \u00een C# .NET?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Indexatorii sunt cunoscu\u021bi ca matrice inteligente \u00een C# \u0219i permit ca instan\u021bele unei clase s\u0103 fie indexate \u00een acela\u0219i mod ca o matrice.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">5. Ce este \u0219i ce rol are compilatorul JIT?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Compilatorul Just-In-Time (JIT) este o parte a Common Language Runtime (CLR) \u00een .NET, care este responsabil pentru gestionarea execu\u021biei programelor .NET, indiferent de limbajul de programare .NET. Un compilator specific limbajului converte\u0219te codul surs\u0103 \u00een limbajul intermediar. Acest limbaj intermediar este apoi convertit \u00een codul ma\u0219inii de c\u0103tre compilatorul Just-In-Time (JIT). Acest cod este specific mediului de computer pe care ruleaz\u0103 compilatorul JIT.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">6. Ce este Garbage Collection \u00een programarea C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Gestionarea automat\u0103 a memoriei este posibil\u0103 prin Garbage Collection \u00een .NET Framework. C\u00e2nd un obiect de clas\u0103 este creat \u00een timpul rul\u0103rii, un anumit spa\u021biu de memorie \u00eei este alocat \u00een memoria heap. Dup\u0103 ce toate ac\u021biunile legate de obiect sunt finalizate \u00een program, spa\u021biul de memorie alocat acestuia este o risip\u0103, deoarece nu poate fi utilizat. \u00cen acest caz, colectarea gunoiului este foarte util\u0103, deoarece elibereaz\u0103 automat spa\u021biul de memorie.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">7. Cum func\u021bioneaz\u0103 Garbage Collection \u00een programarea C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Colectarea gunoiului va func\u021biona \u00eentotdeauna pe Managed Heap \u0219i, intern, are un motor cunoscut sub numele de Motor de optimizare. Colectarea gunoiului are loc dac\u0103 cel pu\u021bin una dintre mai multe condi\u021bii este \u00eendeplinit\u0103:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Dac\u0103 sistemul are memorie fizic\u0103 sc\u0103zut\u0103, atunci este necesar\u0103 colectarea gunoiului.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Dac\u0103 memoria alocat\u0103 diferitelor obiecte din memoria heap dep\u0103\u0219e\u0219te un prag prestabilit, atunci are loc colectarea gunoiului.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Dac\u0103 este apelat\u0103 metoda GC.Collect, atunci are loc colectarea gunoiului. Cu toate acestea, aceast\u0103 metod\u0103 este apelat\u0103 doar \u00een situa\u021bii neobi\u0219nuite, deoarece, \u00een mod normal, colectorul de gunoi ruleaz\u0103 automat.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">8. Care sunt tipurile de clase \u00een limbajul C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Tipurile de clase \u00een C# sunt:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Abstract class<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Partial class<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Sealed class<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Static class\u00a0<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">9. Care sunt diferen\u021bele dintre clasa abstract\u0103 C# \u0219i o interfa\u021b\u0103?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Diferen\u021bele variaz\u0103 \u00een func\u021bie de versiunea de C# utilizat\u0103, iar acestea sunt:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Clasa abstract\u0103 con\u021bine at\u00e2t p\u0103r\u021bi de declara\u021bie, c\u00e2t \u0219i de defini\u021bie, \u00een timp ce interfa\u021ba con\u021bine doar partea de declara\u021bie.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Mo\u0219tenirea multipl\u0103 nu este realizat\u0103 de o clas\u0103 abstract\u0103 \u00eens\u0103 este realizat\u0103 de interfa\u021b\u0103.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Clasa abstract\u0103 con\u021bine un constructor, \u00een timp ce interfa\u021ba nu con\u021bine un constructor.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Clasa abstract\u0103 poate con\u021bine membri statici, dar interfa\u021ba nu.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Diferite tipuri de modificatori de acces, cum ar fi public, privat, protejat etc. sunt posibili \u00een clasa abstract\u0103, \u00een timp ce interfa\u021ba con\u021bine doar modificatorul de acces public, deoarece totul \u00een interfa\u021b\u0103 este public.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Performan\u021ba unei clase abstracte este rapid\u0103 iar performan\u021ba interfe\u021bei este lent\u0103, deoarece necesit\u0103 timp pentru a c\u0103uta metoda \u00een clasa corespunz\u0103toare.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">O clas\u0103 abstract\u0103 poate con\u021bine metode, c\u00e2mpuri, constante etc., \u00een timp de interfa\u021ba poate con\u021bine doar metode.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Dac\u0103 multe implement\u0103ri sunt de acela\u0219i fel \u0219i folosesc un comportament comun, atunci este recomandat\u0103 folosirea unei clase abstracte. Dac\u0103 multe implement\u0103ri \u00eemp\u0103rt\u0103\u0219esc doar metode, atunci este superior s\u0103 folose\u0219ti interfa\u021ba.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">10. Ce sunt metodele de extindere \u00een C#?\u00a0\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00cen limbajul C#, conceptul metodei de extindere permite ad\u0103ugarea de noi metode \u00een clasa existent\u0103 sau \u00een structur\u0103, f\u0103r\u0103 a modifica codul surs\u0103. Nu este nevoie de niciun fel de permisiune special\u0103 de la tipul original \u0219i nu este nevoie de recompilare.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">11. Ce este Inheritance? C# accept\u0103 multiple inheritance?<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Inheritance, sau mo\u0219tenirea, este un pilon important al OOP (Object Oriented Programming). Este mecanismul \u00een C# prin care unei clase i se permite s\u0103 mo\u0219teneasc\u0103 caracteristicile (c\u00e2mpurile \u0219i metodele) unei alte clase.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Super clas\u0103: clasa ale c\u0103rei caracteristici sunt mo\u0219tenite este cunoscut\u0103 ca superclas\u0103 (sau o clas\u0103 de baz\u0103 sau o clas\u0103 p\u0103rinte).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Subclas\u0103: Clasa care mo\u0219tene\u0219te cealalt\u0103 clas\u0103 este cunoscut\u0103 ca subclas\u0103 (sau clas\u0103 derivat\u0103, clas\u0103 extins\u0103 sau clas\u0103 copil). Subclasa \u00ee\u0219i poate ad\u0103uga propriile c\u00e2mpuri \u0219i metode \u00een plus fa\u021b\u0103 de c\u00e2mpurile \u0219i metodele superclasei.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Reutilizabilitate: Mo\u0219tenirea accept\u0103 conceptul de \u201ereutilizare\u201d, adic\u0103 atunci c\u00e2nd vrei s\u0103 creezi o clas\u0103 nou\u0103, \u0219i exist\u0103 deja o clas\u0103 care include o parte din codul dorit, po\u021bi deriva noua clas\u0103 din clasa existent\u0103. F\u0103c\u00e2nd acest lucru, reutilizezi c\u00e2mpurile \u0219i metodele clasei existente.<\/span><\/li>\n<\/ul>\n<p><b>Multiple inheritance nu este posibil\u0103 \u00een limbajul de programare C#.<\/b><\/p>\n<h2><span style=\"font-weight: 400;\">12. Ce reprezint\u0103 un cod Managed \u0219i Unmanaged?<\/span><\/h2>\n<p><b>Managed code:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Un cod care este scris \u00een scopul de a ob\u021bine serviciile de execu\u021bie ale mediului gestionat, cum ar fi CLR (Common Language Runtime) \u00een .NET Framework, este cunoscut sub numele de cod gestionat, Managed Code. Este \u00eentotdeauna implementat de mediul de execu\u021bie gestionat, \u00een loc s\u0103 fie executat direct de sistemul de operare.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Aplica\u021bia este scris\u0103 \u00een limbaje precum Java, C#, VB.Net etc. \u0219i este \u00eentotdeauna destinat\u0103 serviciilor de mediu de rulare pentru a gestiona execu\u021bia, iar codul scris \u00een aceste tipuri de limbaje este cunoscut sub numele de cod administrat.<\/span><\/li>\n<\/ul>\n<p><b>Unmanaged Code<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Un cod care este executat direct de sistemul de operare este cunoscut sub numele de cod negestionat, Unmanaged Code. Este \u00eentotdeauna \u00eendreptat c\u0103tre arhitectura procesorului \u0219i depinde de arhitectura computerului.\u00a0<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">C\u00e2nd acest cod este compilat, tinde \u00eentotdeauna s\u0103 ob\u021bin\u0103 o arhitectur\u0103 specific\u0103 \u0219i ruleaz\u0103 pe platforma respectiv\u0103, cu alte cuvinte, ori de c\u00e2te ori vrei s\u0103 executa\u021bi acela\u0219i cod pentru arhitectura diferit\u0103, este nevoie de recompilare. Compileaz\u0103 \u00eentotdeauna \u00een codul nativ specific arhitecturii respective.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">13. Care este diferen\u021ba dintre o structur\u0103 \u0219i o clas\u0103 \u00een C#?<\/span><\/h2>\n<p><b>O clas\u0103<\/b><span style=\"font-weight: 400;\"> este un model definit de utilizator sau un prototip din care sunt create obiecte. Practic, o clas\u0103 combin\u0103 c\u00e2mpurile \u0219i metodele (func\u021bia membru care define\u0219te ac\u021biunile) \u00eentr-o singur\u0103 unitate.<\/span><\/p>\n<p><b>O structur\u0103<\/b><span style=\"font-weight: 400;\"> este o colec\u021bie de variabile de diferite tipuri de date, sub o singur\u0103 unitate. Este aproape similar cu o clas\u0103, deoarece ambele sunt tipuri de date definite de utilizator \u0219i ambele de\u021bin o mul\u021bime de tipuri de date diferite.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Diferen\u021ba major\u0103 \u00eentre cele doua tipuri este modul \u00een care sunt salvate \u00een memorie, clasele fiind \u201creference types\u201d, adic\u0103 accesate prin referinta sunt salvate \u00een memoria heap, iar structurile sunt \u201cvalue types\u201d \u0219i sunt salvate pe stiv\u0103 (stack), fiind accesate prin valoare.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">14. Ce este enumerarea \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Enumerarea reprezint\u0103 un tip de date de valoare \u00een C#. Este folosit, \u00een principal, pentru a atribui nume sau valori \u0219irurilor constantelor integrale, ceea ce face un program u\u0219or de citit \u0219i de \u00eentre\u021binut.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">De exemplu, cele 4 op\u021biuni dintr-un pachet de c\u0103r\u021bi de joc pot fi 4 enumeratori numi\u021bi Trefl\u0103, Romb, Cupa \u0219i Pic\u0103, apar\u021bin\u00e2nd unui tip enumerat numit Suit\u0103. Alte exemple includ tipuri naturale enumerate &#8211; cum ar fi planetele, zilele s\u0103pt\u0103m\u00e2nii, culorile, direc\u021biile etc.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">15. Care este diferen\u021ba dintre cuvintele cheie ref \u0219i out?<\/span><\/h2>\n<p><b>Ref<\/b><span style=\"font-weight: 400;\"> este un cuv\u00e2nt cheie care este folosit \u00een C# pentru transmiterea argumentelor printr-o referin\u021b\u0103. Sau putem spune c\u0103 dac\u0103 orice modific\u0103ri aduse acestui argument \u00een metod\u0103 se vor reflecta \u00een acea variabil\u0103, atunci c\u00e2nd controlul revine la metoda de apelare. Parametrul ref nu trece proprietatea.<\/span><\/p>\n<p><b>Out <\/b><span style=\"font-weight: 400;\">este un cuv\u00e2nt cheie \u00een C# care este folosit pentru a transmite argumentele metodelor ca tip de referin\u021b\u0103. Este folosit\u0103, \u00een general, atunci c\u00e2nd o metod\u0103 returneaz\u0103 mai multe valori. Parametrul out nu trece proprietatea.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">16. Ce este Boxing \u0219i Unboxing \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Boxul \u0219i unboxing-ul sunt concepte important \u00een C#. Sistemul de tip C# con\u021bine trei tipuri de date: tipuri de valori (int, char, etc), tipuri de referin\u021b\u0103 (obiect) \u0219i tipuri de indicator. Practic, converte\u0219te un tip de valoare \u00eentr-un tip de referin\u021b\u0103 \u0219i invers. Boxing \u0219i Unboxing permit o vizualizare unificat\u0103 a sistemului de tipuri \u00een care o valoare de orice tip poate fi tratat\u0103 ca un obiect.<\/span><\/p>\n<p><b>Boxing \u00een C#<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Procesul de conversie a unui tip de valoare (char, int etc.) \u00eentr-un tip de referin\u021b\u0103 (obiect) se nume\u0219te Boxing.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Boxul este un proces implicit de conversie \u00een care este folosit tipul de obiect (supertip).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tipul de valoare este \u00eentotdeauna stocat \u00een Stack. Tipul de referin\u021b\u0103 este stocat \u00een Heap.<\/span><\/li>\n<\/ul>\n<p><b>Unboxing \u00een C#<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Procesul de conversie a tipului de referin\u021b\u0103 \u00een tipul de valoare este cunoscut sub numele de Unboxing.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Este un proces de conversie explicit.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">17. Ce sunt propriet\u0103\u021bile \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Propriet\u0103\u021bile sunt tipuri speciale de membri ai clasei care ofer\u0103 un mecanism flexibil pentru a citi, scrie sau calcula valoarea unui c\u00e2mp privat. Propriet\u0103\u021bile pot fi folosite ca \u0219i cum ar fi membri de date publice, dar sunt de fapt metode speciale numite <\/span><i><span style=\"font-weight: 400;\">accessors<\/span><\/i><span style=\"font-weight: 400;\">. Acest lucru permite accesarea cu u\u0219urin\u021b\u0103 a datelor \u0219i ajut\u0103 la promovarea flexibilit\u0103\u021bii \u0219i siguran\u021bei metodelor. \u00cencapsularea \u0219i ascunderea informa\u021biilor pot fi, de asemenea, realizate folosind propriet\u0103\u021bi. Folose\u0219te metode predefinite, care sunt metodele \u201eget\u201d \u0219i \u201eset\u201d, care ajut\u0103 la accesarea \u0219i modificarea propriet\u0103\u021bilor.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">18. Ce sunt clasele par\u021biale \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">O astfel de clas\u0103 ofer\u0103 o capacitate special\u0103 de a implementa func\u021bionalitatea unei singure clase \u00een mai multe fi\u0219iere \u0219i toate aceste fi\u0219iere sunt combinate \u00eentr-un singur fi\u0219ier de clas\u0103 atunci c\u00e2nd aplica\u021bia este compilat\u0103.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O clas\u0103 par\u021bial\u0103 este creat\u0103 folosind un cuv\u00e2nt cheie par\u021bial. Acest cuv\u00e2nt cheie este, de asemenea, util pentru a \u00eemp\u0103r\u021bi func\u021bionalitatea metodelor, interfe\u021belor sau structurii \u00een mai multe fi\u0219iere.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">public partial Class_name\u00a0\u00a0<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">{<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Code\u00a0<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">}<\/span><\/i><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">19. Care este diferen\u021ba dintre late \u0219i early binding \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">C\u00e2nd un obiect este atribuit unei variabile obiect de tipul specific, atunci compilatorul C# realizeaz\u0103 legarea cu ajutorul .NET Framework. C# realizeaz\u0103 dou\u0103 tipuri diferite de leg\u0103turi care sunt:<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>Early Binding<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Early Binding recunoa\u0219te \u0219i verific\u0103 metodele sau propriet\u0103\u021bile \u00een timpul compil\u0103rii. \u00cen aceast\u0103 legare, compilatorul \u0219tie deja ce fel de obiect este \u0219i care sunt metodele sau propriet\u0103\u021bile pe care le de\u021bine, aici obiectele sunt statice. Performan\u021ba early binding este rapid\u0103 \u0219i este u\u0219or de codificat. Reduce num\u0103rul de erori de rulare.<\/span><b><\/b><\/p>\n<ul>\n<li aria-level=\"1\"><b>Late Binding sau Dynamic Binding<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u00cen Late Binding, compilatorul nu \u0219tie ce fel de obiect este \u0219i care sunt metodele sau propriet\u0103\u021bile pe care le de\u021bine, aici obiectele sunt dinamice. Tipul obiectului este decis pe baza datelor pe care le de\u021bine \u00een partea dreapt\u0103 \u00een timpul rul\u0103rii. Practic, legarea tardiv\u0103 se realizeaz\u0103 prin utilizarea metodelor virtuale. Performan\u021ba este mai lent\u0103 dec\u00e2t a leg\u0103rii timpurii, deoarece necesit\u0103 c\u0103ut\u0103ri \u00een timpul execu\u021biei.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">20. Care sunt diferitele moduri \u00een care o metod\u0103 poate fi Overloaded \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Method Overloading este modalitatea comun\u0103 de implementare a polimorfismului. Este capacitatea de a redefini o func\u021bie \u00een mai multe forme. Un utilizator poate implementa supra\u00eenc\u0103rcarea func\u021biilor prin definirea a dou\u0103 sau mai multe func\u021bii \u00eentr-o clas\u0103 care are acela\u0219i nume.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">C# poate distinge metodele cu semn\u0103turi diferite de metode, adic\u0103 metodele pot avea acela\u0219i nume, dar cu o list\u0103 de parametri diferi\u021bi (adic\u0103 num\u0103rul parametrilor, ordinea parametrilor \u0219i tipurile de date ale parametrilor) \u00een cadrul aceleia\u0219i clase.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Metodele supra\u00eenc\u0103rcate sunt diferen\u021biate \u00een func\u021bie de num\u0103rul \u0219i tipul parametrilor trecu\u021bi ca argumente metodelor.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nu po\u021bi defini mai mult de o metod\u0103 cu acela\u0219i nume, ordine \u0219i tip de argumente. Ar fi o eroare de compilator.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Compilatorul nu ia \u00een considerare tipul returnat \u00een timp ce diferen\u021biaz\u0103 metoda supra\u00eenc\u0103rcat\u0103. Dar nu po\u021bi declara dou\u0103 metode cu aceea\u0219i semn\u0103tur\u0103 \u0219i tipuri diferite de returnare, va arunca o eroare de compilare. Dac\u0103 ambele metode au acelea\u0219i tipuri de parametri, dar tipuri diferite de returnare, atunci nu este posibil.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">21. Ce este Reflection \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Reflection este procesul de descriere a metadatelor tipurilor, metodelor \u0219i c\u00e2mpurilor dintr-un cod. Spa\u021biul dSystem. Reflection permite ob\u021binerea de date despre ansamblurile \u00eenc\u0103rcate, elementele din ele, cum ar fi clase, metode \u0219i tipuri de valori.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">22. Care este diferen\u021ba dintre constant \u0219i read-only \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00cen limbajul C#, un cuv\u00e2nt cheie constant este folosit pentru a declara c\u00e2mpuri \u0219i locale constante. Valoarea c\u00e2mpului constant este aceea\u0219i pe tot parcursul programului sau, cu alte cuvinte, odat\u0103 ce c\u00e2mpul constant este atribuit, valoarea acestui c\u00e2mp nu se modific\u0103.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00cen C#, c\u00e2mpurile constante \u0219i localurile nu sunt variabile, o constant\u0103 este un num\u0103r, \u0219ir, referin\u021b\u0103 nul\u0103, valori booleene. Cuv\u00e2ntul cheie read-only este folosit pentru a declara o astfel de variabil\u0103. Acest cuv\u00e2nt cheie arat\u0103 c\u0103 se poate atribui variabila numai atunci c\u00e2nd declari o variabil\u0103, sau \u00eentr-un constructor din aceea\u0219i clas\u0103 \u00een care este declarat\u0103.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">\u00a023. Ce sunt Jagged Arrays?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Jagged Arrays reprezint\u0103 o matrice de matrice ale c\u0103rei elemente sunt matrice de dimensiuni diferite. Cu alte cuvinte, lungimea fiec\u0103rui index de matrice poate diferi. Elementele din Jagged Array sunt tipuri de referin\u021b\u0103 \u0219i ini\u021bializate implicit la nul. Jagged Array poate fi, de asemenea, amestecat cu matrice multidimensionale. Aici, num\u0103rul de r\u00e2nduri va fi fixat la momentul declara\u021biei, dar po\u021bi varia num\u0103rul de coloane.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">24. Cum func\u021bioneaz\u0103 clasele System.Strig \u0219i System.Text.StringBuilder?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00cen C#, StringBuilder este similar cu Java StringBuilder. Un obiect String este imuabil, adic\u0103 nu poate fi schimbat odat\u0103 creat. De fiecare dat\u0103 c\u00e2nd utilizezi oricare dintre metodele clasei System.String, un nou obiect string este creat \u00een memorie.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">De exemplu, un \u0219ir \u201eCodecool Romania\u201d ocup\u0103 memorie \u00een heap, acum, schimbarea \u0219irului ini\u021bial \u00een \u201eCR\u201d va crea un nou obiect \u0219ir \u00een heap-ul de memorie, \u00een loc s\u0103 modifice \u0219irul ini\u021bial \u00een aceea\u0219i loca\u021bie de memorie. \u00cen situa\u021biile \u00een care trebuie s\u0103 efectuezi modific\u0103ri repetate la un \u0219ir, ai nevoie de clasa StringBuilder. Pentru a evita \u00eenlocuirea, ad\u0103ugarea, eliminarea sau inserarea \u0219irurilor de caractere noi \u00een \u0219irul ini\u021bial C# este introdus conceptul StringBuilder. StringBuilder este un obiect dinamic. Nu creeaz\u0103 un obiect nou \u00een memorie, ci extinde \u00een mod dinamic memoria necesar\u0103 pentru a g\u0103zdui \u0219irul modificat sau nou.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">25. Care este diferen\u021ba dintre System.Array.CopyTo() \u0219i System.Array.Clone()?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Tehnica System.Array.CopyTo() face o replic\u0103 a componentelor \u00eentr-o alt\u0103 matrice existent\u0103. Face copii ale componentelor unui cluster \u00eentr-o alt\u0103 matrice existent\u0103.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tehnica Clone() returneaz\u0103 un nou obiect matrice care con\u021bine fiecare dintre componentele din prima matrice. Clone() face o duplicare a unui matrice, care este de tip similar cu prima matrice.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">26. Care este diferen\u021ba dintre metodele dispose() \u0219i finalize() \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Diferen\u021ba principal\u0103 dintre aceste metode este c\u0103 dispose() trebuie invocat\u0103 \u00een mod explicit de c\u0103tre utilizator, iar finalize() este apelat\u0103 de colectorul de gunoi atunci c\u00e2nd obiectul este distrus.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">27. Ce sunt delega\u021bii \u00een C#?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Un delegat este o variabil\u0103 care poate con\u021bine o referin\u021b\u0103 la metode. Delega\u021bii \u00een C# sunt similari cu indicatorul de func\u021bie din C\/C++. Ofer\u0103 o modalitate care spune ce metod\u0103 trebuie apelat\u0103 atunci c\u00e2nd este declan\u0219at un eveniment. De exemplu, atunci c\u00e2nd dai click pe un buton dintr-un formular, programul va apela o anumit\u0103 metod\u0103. Un delegat reprezint\u0103 referin\u021be la metode, cu o anumit\u0103 list\u0103 de parametri \u0219i un tip de returnare, \u0219i apoi apeleaz\u0103 metoda \u00eentr-un program pentru execu\u021bie, atunci c\u00e2nd este necesar.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">28. Ce sunt clasele sigilate \u00een C#?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Clasele sigilate sunt folosite pentru a restric\u021biona utilizatorii s\u0103 mo\u0219teneasc\u0103 clasa. O clas\u0103 poate fi sigilat\u0103 utiliz\u00e2nd cuv\u00e2ntul cheie <\/span><i><span style=\"font-weight: 400;\">sealed<\/span><\/i><span style=\"font-weight: 400;\">. Cuv\u00e2ntul cheie \u00eei spune compilatorului c\u0103 respectiva clasa este sigilat\u0103 \u0219i, prin urmare, nu poate fi extins\u0103. Nicio clas\u0103 nu poate fi derivat\u0103 dintr-o clas\u0103 sigilat\u0103.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Urm\u0103toarea este sintaxa unei clase sigilate:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">sealed class class_name<\/span><\/p>\n<p><span style=\"font-weight: 400;\">{<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\/\/ data members<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\/\/ methods<\/span><\/p>\n<p><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">}<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">29. Ce este Constructor Chaining \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Po\u021bi apela un constructor supra\u00eenc\u0103rcat de la un alt constructor folosind acest cuv\u00e2nt cheie, dar constructorul trebuie s\u0103 apar\u021bin\u0103 aceleia\u0219i clase, deoarece acest cuv\u00e2nt cheie indic\u0103 c\u0103tre membrii aceleia\u0219i clase \u00een care este utilizat. Acest tip de apelare a constructorului supra\u00eenc\u0103rcat este denumit \u0219i Constructor Chaining.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">30. Ce este un delegat multicasting \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Multicasting-ul delegatului este o extensie a delegatului obi\u0219nuit, uneori numit \u0219i delegat de distribu\u021bie unic\u0103. Ajut\u0103 utilizatorul s\u0103 indice mai mult de o metod\u0103 \u00eentr-un singur apel.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">31. Ce sunt genericele \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Generic este o clas\u0103 care permite utilizatorului s\u0103 defineasc\u0103 clase \u0219i metode cu substituent. Genericele au fost ad\u0103ugate la versiunea 2.0 a limbajului C#. Ideea de baz\u0103 din spatele utiliz\u0103rii generice este de a permite tipului (\u00eentreg, \u0219ir, etc. \u0219i tipuri definite de utilizator) s\u0103 fie un parametru pentru metode, clase \u0219i interfe\u021be.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O limitare principal\u0103 a colec\u021biilor este absen\u021ba unei verific\u0103ri eficiente de tip. Aceasta \u00eenseamn\u0103 c\u0103 po\u021bi pune orice obiect \u00eentr-o colec\u021bie, deoarece toate clasele din limbajul de programare C# se extind din clasa de baz\u0103 a obiectului. Acest lucru compromite siguran\u021ba tipului \u0219i contrazice defini\u021bia de baz\u0103 a C# ca limbaj de tip sigur.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">32. Care sunt modificatorii de accesibilitate \u00een C#?\u00a0\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Exist\u0103 4 modificatori de acces (public, protejat, intern, privat) care definesc cele 6 niveluri de accesibilitate, dup\u0103 cum urmeaz\u0103:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Public<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Private<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Private protected<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Protected<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Internal<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Protected internal<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">33. Ce este Virtual Method \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00a0\u00cen C#, Virtual Method este o strategie care poate fi reclasificat\u0103 \u00een clase derivate. Po\u021bi implementa metoda virtual\u0103 \u00een clasa de baz\u0103 \u0219i clasa derivat\u0103. Este utilizat atunci c\u00e2nd activitatea fundamental\u0103 a unei metode este similar\u0103, dar \u00een unele cazuri clasa derivat\u0103 a avut nevoie de func\u021bionalit\u0103\u021bi suplimentare. O metod\u0103 virtual\u0103 este declarat\u0103 \u00een clasa p\u0103rinte care poate fi suprascris\u0103 \u00een clasa copil.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Facem o metod\u0103 virtual\u0103 \u00een clasa de baz\u0103 folosind cuv\u00e2ntul cheie Virtual \u0219i acea metod\u0103 este suprascris\u0103 \u00een clasa derivat\u0103 folosind cuv\u00e2ntul cheie Override. Nu este necesar ca fiecare clas\u0103 derivat\u0103 s\u0103 mo\u0219teneasc\u0103 o metod\u0103 virtual\u0103, dar o metod\u0103 virtual\u0103 trebuie creat\u0103 \u00een clasa de baz\u0103. Prin urmare, metoda virtual\u0103 este cunoscut\u0103 \u0219i ca polimorfism.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">34. Ce este Multithreading cu .NET?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Multi-threading este un proces care con\u021bine mai multe fire de execu\u021bie (threaduri) \u00eentr-un singur proces. Aici fiecare thread desf\u0103\u0219oar\u0103 activit\u0103\u021bi diferite. De exemplu, avem o clas\u0103 \u0219i acest apel con\u021bine dou\u0103 metode diferite, acum folosind multithreading fiecare metod\u0103 este executat\u0103 de un thread separat.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Deci, avantajul major al multithreading-ului este c\u0103 func\u021bioneaz\u0103 simultan, ceea ce \u00eenseamn\u0103 c\u0103 se execut\u0103 mai multe sarcini \u00een acela\u0219i timp. \u0218i, de asemenea, maximizarea utiliz\u0103rii procesorului, deoarece multithreading func\u021bioneaz\u0103 pe conceptul de partajare a timpului, \u00eensemn\u00e2nd c\u0103 fiecare fir \u00ee\u0219i ia propriul timp pentru execu\u021bie \u0219i nu afecteaz\u0103 execu\u021bia unui alt thread, acest interval de timp este dat de sistemul de operare.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">35. Ce este o clas\u0103 de tabel Hash \u00een C#?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Clasa Hashtable reprezint\u0103 o colec\u021bie de perechi cheie\/valoari care sunt organizate pe baza codului hash al cheii. Aceast\u0103 clas\u0103 face parte din System. Collections \u0219i ofer\u0103 diferite tipuri de metode care sunt utilizate pentru a efectua diferite tipuri de opera\u021bii pe hashtables. \u00cen Hashtable, cheile sunt folosite pentru a accesa elementele prezente \u00een colec\u021bie. Pentru obiectele Hashtable foarte mari, se poate cre\u0219te capacitatea maxim\u0103 la 2 miliarde de elemente pe un sistem pe 64 de bi\u021bi.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">36. De ce o metod\u0103 virtual\u0103 privat\u0103 nu poate fi suprascris\u0103 \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00a0Deoarece metodele virtuale private nu sunt accesibile \u00een afara clasei. Cuv\u00e2ntul cheie virtual este utilizat tocmai \u00een ideea de a eviden\u021bia faptul c\u0103 respectiva metod\u0103 poate fi suprascris\u0103 \u00een clasa copil, at\u00e2ta timp c\u00e2t metoda este privat\u0103 ea nu este vizibil\u0103 \u00een afara clasei \u0219i, prin urmare, nu poate fi accesat\u0103 de clasa copil.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">37. Ce este gestionarea fi\u0219ierelor \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00a0\u00cen general, fi\u0219ierul este folosit pentru a stoca datele. Termenul de manipulare a fi\u0219ierelor se refer\u0103 la diferite opera\u021biuni cum ar fi crearea fi\u0219ierului, citirea, scrierea, ad\u0103ugarea, etc. Exist\u0103 dou\u0103 opera\u021biuni de baz\u0103 care sunt utilizate cel mai mult \u00een manipularea fi\u0219ierului iar acestea sunt citirea \u0219i scrierea. Din fi\u0219ier se pot forma dou\u0103 fluxuri, unul este fluxul de intrare care este utilizat pentru a citi fi\u0219ierul \u0219i altul este fluxul de ie\u0219ire este folosit pentru a scrie \u00een fi\u0219ier. \u00cen C#, spa\u021biul de nume System.IO con\u021bine clase care se ocup\u0103 de fluxurile de intrare \u0219i de ie\u0219ire \u0219i ofer\u0103 informa\u021bii despre structura fi\u0219ierelor \u0219i directoarelor.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">38. Care sunt tipurile de excep\u021bii utilizate \u00een mod obi\u0219nuit?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">O excep\u021bie este o eroare care apare \u00een timpul execu\u021biei. Folosind subsistemul de gestionare a excep\u021biilor C#, putem, \u00eentr-o manier\u0103 structurat\u0103 \u0219i controlat\u0103, s\u0103 gestion\u0103m erorile de rulare. Avantajul principal al gestion\u0103rii excep\u021biilor este c\u0103 automatizeaz\u0103 o mare parte din codul de gestionare a erorilor. O gestionare a excep\u021biilor este, \u00een plus, important\u0103 deoarece C# define\u0219te excep\u021bii standard pentru erorile comune ale programului, cum ar fi \u00eemp\u0103r\u021birea la zero sau indexarea \u00een afara intervalului.<\/span><\/p>\n<p><b>\u00a0<\/b><b>Excep\u021biile C# cu semnifica\u021bia lor:<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>ArrayTypeMismatchException<\/b><span style=\"font-weight: 400;\">: Aceast\u0103 excep\u021bie apare atunci c\u00e2nd Tipul de valoare stocat este incompatibil cu tipul matricei.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>DivideByZeroException:<\/b><span style=\"font-weight: 400;\"> apare atunci c\u00e2nd utilizatorul \u00eencearc\u0103 s\u0103 \u00eempart\u0103 o valoare \u00eentreag\u0103 la zero.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>IndexOutOfRangeException<\/b><span style=\"font-weight: 400;\">: C\u00e2nd un index de matrice este \u00een afara limitelor, a ap\u0103rut o excep\u021bie.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>InvalidCastException:<\/b><span style=\"font-weight: 400;\"> o distribu\u021bie \u00een timp de execu\u021bie este nevalid\u0103.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>OutOfMemoryException: <\/b><span style=\"font-weight: 400;\">Nu exist\u0103 suficient\u0103 memorie liber\u0103 pentru a continua execu\u021bia programului.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>OverflowException:<\/b><span style=\"font-weight: 400;\"> a avut loc o dep\u0103\u0219ire aritmetic\u0103.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>NullReferenceException:<\/b><span style=\"font-weight: 400;\"> a fost f\u0103cut\u0103 o \u00eencercare de a opera pe o referin\u021b\u0103 nul\u0103, adic\u0103 o referin\u021b\u0103 care nu se refer\u0103 la un obiect.\u00a0<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">39. Care este diferen\u021ba dintre operatorii \u201eis\u201d \u0219i \u201eas\u201d \u00een C#?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">C# include trei cuvinte cheie care accept\u0103 identificarea tipului de rulare: <\/span><b>is, as<\/b><span style=\"font-weight: 400;\">, \u0219i <\/span><b>typeof<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Operator is: <\/b><span style=\"font-weight: 400;\">se poate determina dac\u0103 un obiect este de un anumit tip utiliz\u00e2nd operatorul is. Forma sa general\u0103 este:<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">expr is type<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Aici, expr este o expresie care descrie un obiect al c\u0103rui tip este testat \u00eempotriva type. Dac\u0103 tipul de expr este acela\u0219i sau compatibil cu type, atunci rezultatul acestei opera\u021bii este adev\u0103rat. Altfel, este fals. Astfel, dac\u0103 rezultatul este adev\u0103rat, expr este o form\u0103 de tip. Deoarece se aplic\u0103 la is, un tip este compatibil cu altul dac\u0103 ambele sunt echivalente cu tipul sau dac\u0103 exist\u0103 o conversie de referin\u021b\u0103, boxing sau unboxing.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><b>Operator as:<\/b><span style=\"font-weight: 400;\"> Uneori, dac\u0103 vrem s\u0103 \u00eencerc\u0103m o conversie \u00een timpul execu\u021biei, dar nu s\u0103 arunc\u0103m o excep\u021bie dac\u0103 conversia e\u0219ueaz\u0103 (ceea ce este cazul c\u00e2nd se folose\u0219te un cast). Pentru a face acest lucru, se utilizeaz\u0103 operatorul as, care are aceast\u0103 form\u0103 general\u0103:<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">expr as type<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Aici, expr este expresia care este convertit\u0103 \u00een tip. Dac\u0103 conversia reu\u0219e\u0219te, atunci este returnat\u0103 o referin\u021b\u0103 la tip. \u00cen caz contrar, este returnat\u0103 o referin\u021b\u0103 nul\u0103. Operatorul as poate fi folosit pentru a efectua doar conversii de referin\u021b\u0103, boxing, unboxing sau identitate.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">40. Ce este modelul de design Singleton \u00een C#?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Modelul de design singleton \u00een C# este unul comun. \u00cen acest model, o clas\u0103 are doar o singur\u0103 instan\u021b\u0103 \u00een program care ofer\u0103 acces global la aceasta. Sau, se poate spune c\u0103 Singleton este o clas\u0103 care permite realizarea unei singure instan\u021be, \u0219i de obicei ofer\u0103 acces simplu la acea instan\u021b\u0103.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Exist\u0103 diferite abord\u0103ri pentru a realiza un design Singleton \u00een C#. Iat\u0103 care sunt atributele obi\u0219nuite ale unui design Singleton:<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Privat \u0219i parametrizeaz\u0103 un singur constructor<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Clasa sigilat\u0103.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Variabil\u0103 static\u0103 pentru a p\u0103stra o referin\u021b\u0103 la exemplul unic<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">O metod\u0103 public\u0103 \u0219i static\u0103 de a ob\u021bine referin\u021ba la exemplul realizat.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">\u00a041. Cum se implementeaz\u0103 un model de design Singleton \u00een C#?\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Putem implementa un model de design Singleton \u00een C# folosind:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">No Thread Safe Singleton.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Thread-Safety Singleton.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Thread-Safety Singleton folosind Double-Check Locking.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Thread-safe f\u0103r\u0103 blocare.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Folosind tipul Lazy&lt;T&gt; al .NET 4.\u00a0<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">42. Ce este tuple \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Cuv\u00e2ntul <\/span><i><span style=\"font-weight: 400;\">tuple<\/span><\/i><span style=\"font-weight: 400;\"> \u00eenseamn\u0103 \u201eo structur\u0103 de date care const\u0103 din mai multe p\u0103r\u021bi\u201d. Deci este o structur\u0103 de date care ofer\u0103 cea mai simpl\u0103 modalitate de a reprezenta un set de date care are mai multe valori care pot\/s-ar putea s\u0103 nu fie legate \u00eentre ele. A fost introdus \u00een .NET Framework 4.0. \u00cen tuple, se pot ad\u0103uga elemente de la 1 la 8. Dac\u0103 \u00eencerci s\u0103 ad\u0103uga\u021bi elemente mai mari de opt, atunci compilatorul va arunca o eroare. Tuplurile sunt utilizate, \u00een general, atunci c\u00e2nd se dore\u0219te crearea unei structuri de date care con\u021bine obiecte cu propriet\u0103\u021bile lor \u0219i nu se dore\u0219te crearea un tip separat pentru asta.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">43. Ce reprezint\u0103 events?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00a0Un events, sau eveniment, este o notificare automat\u0103 c\u0103 a avut loc o ac\u021biune. Delega\u021bii \u0219i evenimentele sunt legate deoarece un eveniment este construit pe un delegat. Ambele extind setul de sarcini de programare la care se poate aplica C#.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Evenimentele func\u021bioneaz\u0103 astfel &#8211; un obiect care are un interes \u00eentr-un eveniment \u00eenregistreaz\u0103 un handler de evenimente pentru acel event. C\u00e2nd are loc, sunt apela\u021bi to\u021bi handlerii \u00eenregistra\u021bi. Managerii de evenimente sunt reprezenta\u021bi de delega\u021bi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Events sunt membri ai unei clase \u0219i sunt declarate folosind cuv\u00e2ntul cheie <\/span><i><span style=\"font-weight: 400;\">event<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Forma sa cea mai des folosit\u0103 este aceasta:<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">event event-delegate event-name;<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Aici, event-delegate este numele delegatului folosit pentru a sus\u021bine evenimentul, iar event-name este numele obiectului eveniment specific care este declarat.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">44. Care este diferen\u021ba dintre metodele Dispose() \u0219i Finalize()?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Principala diferen\u021b\u0103 este c\u0103 metoda Dispose() este folosit\u0103 pentru a elibera resursele negestionate ale unui obiect, \u00een timp ce Finalize() este, de asemenea, utilizat \u00een acela\u0219i scop, dar nu garanteaz\u0103 colectarea gunoiului unui obiect. O alt\u0103 diferen\u021b\u0103 major\u0103 este c\u0103 metoda dispose() este invocat\u0103 \u00een mod explicit de c\u0103tre utilizator, iar metoda finalize() este invocat\u0103 de colectorul de gunoi, chiar \u00eenainte ca obiectul s\u0103 fie distrus.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">45. \u200b\u200bCe reprezint\u0103 Array \u0219i ArrayList?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Array este un grup de variabile similare la care se face referire printr-un nume comun. ArrayList reprezint\u0103 o colec\u021bie ordonat\u0103 a unui obiect, care poate fi indexat\u0103 individual. Este incorect s\u0103 definim ArrayList este o colec\u021bie de obiecte. Conform documenta\u021biei Microsoft, este de evitat utilizarea tipului ArrayList (link <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/system.collections.arraylist?view=net-6.0\"><span style=\"font-weight: 400;\">aici<\/span><\/a><span style=\"font-weight: 400;\"> &#8211; sec\u021biunea remarci aka Remarks), de preferat ar fi s\u0103 apel\u0103m la utilizarea tipurilor generice: List&lt;Object&gt;.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">46. Ce reprezint\u0103 SortedList \u0219i SortedDictionary \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">SortedList o colec\u021bie de perechi cheie\/valoari care sunt sortate \u00een func\u021bie de chei. \u00cen mod implicit, aceast\u0103 colec\u021bie sorteaz\u0103 perechile cheie sau vaorile \u00een ordine cresc\u0103toare. Este at\u00e2t de tip generic, c\u00e2t \u0219i de colec\u021bie negeneric.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">SortedDictionary o colec\u021bie generic\u0103 care este folosit\u0103 pentru a stoca perechile cheie\/valoarile \u00een forma sortat\u0103, iar sortarea se face pe cheie.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">47. Ce sunt namespaces \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Acestea ofer\u0103 o modalitate de a p\u0103stra un set de nume (cum ar fi numele claselor) diferit de alte seturi de nume. Cel mai mare avantaj al utiliz\u0103rii namespace este c\u0103 numele de clas\u0103 care sunt declarate \u00eentr-un spa\u021biu de nume nu se vor ciocni cu acelea\u0219i nume de clas\u0103 declarate \u00eentr-un alt spa\u021biu de nume.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">48. Cine pot fi membrii ai namespaces \u00een C#?<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Membrii pot fi spa\u021bii de nume, interfe\u021be, structuri \u0219i delega\u021bi.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">49. Care sunt conceptele fundamentale de OOP?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Cele patru concepte fundamentale ale program\u0103rii orientate pe obiecte sunt:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Encapsulation<\/b><span style=\"font-weight: 400;\">: aici, reprezentarea intern\u0103 a unui obiect este ascuns\u0103 \u00een afara defini\u021biei obiectului. Doar informa\u021biile necesare pot fi accesate, \u00een timp ce restul implement\u0103rii datelor este ascuns\u0103.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Abstraction:<\/b><span style=\"font-weight: 400;\"> este un proces de identificare a comportamentului \u0219i datelor critice ale unui obiect \u0219i de eliminare a detaliilor irelevante.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Inheritance: <\/b><span style=\"font-weight: 400;\">este capacitatea de a crea noi clase dintr-o alt\u0103 clas\u0103. Se realizeaz\u0103 prin accesarea, modificarea \u0219i extinderea comportamentului obiectelor din clasa p\u0103rinte.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Polymorphism:<\/b><span style=\"font-weight: 400;\"> un nume, mai multe forme. Se realizeaz\u0103 prin existen\u021ba mai multor metode cu acela\u0219i nume, dar implement\u0103ri diferite.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">50. Care este Race condition \u00een C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">C\u00e2nd dou\u0103 fire acceseaz\u0103 aceea\u0219i resurs\u0103 \u0219i \u00eencearc\u0103 s\u0103 o schimbe \u00een acela\u0219i timp, apare aceast\u0103 condi\u021bie de curs\u0103. Este aproape imposibil de prezis care fir reu\u0219e\u0219te s\u0103 acceseze mai \u00eent\u00e2i resursa. Iar c\u00e2nd dou\u0103 fire \u00eencearc\u0103 s\u0103 scrie o valoare \u00een aceea\u0219i resurs\u0103, ultima valoare scris\u0103 este cea salvat\u0103.<\/span><\/p>\n<p><img decoding=\"async\" class=\"wp-image-39875 size-large aligncenter\" src=\"http:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-final-1024x512.jpeg\" alt=\"interviu limbaj c\" width=\"800\" height=\"400\" srcset=\"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-final-1024x512.jpeg 1024w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-final-300x150.jpeg 300w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-final-768x384.jpeg 768w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-final-1536x768.jpeg 1536w, https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-final-2048x1024.jpeg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">Te sim\u021bi mai preg\u0103tit pentru un job de programator dup\u0103 ce ai parcurs aceste \u00eentreb\u0103ri de interviu C#?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Am trecut prin <\/span><b>50 de \u00eentreb\u0103ri frecvente \u00eentr-un interviu IT,<\/b><span style=\"font-weight: 400;\"> \u00een care limbajul C# este de baz\u0103, \u0219i am r\u0103spuns la fiecare dintre ele. Dac\u0103 ai \u00een continuare ceva emo\u021bii, este normal, cei mai mul\u021bi candida\u021bi trec prin asta.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sfatul nostru este s\u0103 nu te la\u0219i intimidat de interviul tehnic! Prive\u0219te-l mai degrab\u0103 ca pe ocazia perfect\u0103 s\u0103-\u021bi pui \u00een valoare cuno\u0219tin\u021bele teoretice, dar nu numai.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Iar dac\u0103<\/span><b> realizezi c\u0103 ai ceva goluri \u00een formarea ca programator,<\/b><span style=\"font-weight: 400;\"> este indicat s\u0103 le adresezi. Domeniul IT este unul extrem de competitiv \u0219i vei concura cu o mul\u021bime de al\u021bi candida\u021bi care urm\u0103resc acela\u0219i job, deci nu \u00ee\u021bi permi\u021bi s\u0103 ai lipsuri.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/codecool.com\/wp-content\/uploads\/2022\/09\/Ghid-curs-Full-Stack-2022.pdf\"><img decoding=\"async\" class=\"aligncenter wp-image-22055 size-full\" src=\"https:\/\/codecool.com\/wp-content\/uploads\/2021\/07\/ghid-codecool.jpg\" alt=\"Ghidul studentului Codecool\" width=\"1200\" height=\"628\" srcset=\"https:\/\/codecool.com\/wp-content\/uploads\/2021\/07\/ghid-codecool.jpg 1200w, https:\/\/codecool.com\/wp-content\/uploads\/2021\/07\/ghid-codecool-300x157.jpg 300w, https:\/\/codecool.com\/wp-content\/uploads\/2021\/07\/ghid-codecool-1024x536.jpg 1024w, https:\/\/codecool.com\/wp-content\/uploads\/2021\/07\/ghid-codecool-768x402.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Te a\u0219tept\u0103m la <\/span><b>cursurile Full-stack Codecool, care vin cu garan\u021bia unui job.<\/b><span style=\"font-weight: 400;\"> Este o garan\u021bie real\u0103, nu o mi\u0219care de marketing, te asigur\u0103m.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dac\u0103 ai deja o baz\u0103 de cuno\u0219tin\u021be de programare de la facultate, cursuri sau studiu individual, po\u021bi urma un <\/span><b>traseu accelerat c\u0103tre primul t\u0103u job \u00een IT<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Aplic\u0103 la cursul de\u00a0 <\/span><a href=\"https:\/\/codecool.com\/ro\/course\/full-stack-developer-advanced\/\"><span style=\"font-weight: 400;\">Full-stack developer advanced<\/span><\/a><span style=\"font-weight: 400;\">, rezolv\u0103 testul de competen\u021be tehnice \u0219i continu\u0103 formarea pentru a accesa job-ul garantat de Codecool.\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><strong>Dac\u0103 porne\u0219ti de la zero<\/strong>, te a\u0219tept\u0103m la cursul Full-stack Developer, care este disponibil at\u00e2t offline c\u00e2t \u0219i online:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cursul <\/span><a href=\"https:\/\/codecool.com\/ro\/course\/full-stack-developer\/\"><span style=\"font-weight: 400;\">Full-stack Developer<\/span><\/a><span style=\"font-weight: 400;\"> offline se adreseaz\u0103 persoanelor din Bucure\u0219ti: 10 luni de formare intensiv\u0103, internship pl\u0103tit \u0219i job garantat.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cursul <\/span><a href=\"https:\/\/codecool.com\/ro\/course\/full-stack-developer-online\/\"><span style=\"font-weight: 400;\">Full-stack Developer online<\/span><\/a><span style=\"font-weight: 400;\"> se adreseaz\u0103 persoanelor din afara Bucure\u0219tiului: 10 luni de formare intensiv\u0103 online, internship pl\u0103tit \u0219i job garantat.\u00a0<\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dac\u0103 \u0219tii un limbaj de programare C, cu siguran\u021b\u0103 nu vei duce lips\u0103 de oportunit\u0103\u021bi de angajare. Exist\u0103 numeroase companii care recruteaza activ programatori care cunosc limbajele C# sau C++, iar aceste posturi sunt v\u00e2nate de mul\u021bi al\u021bi candida\u021bi, asemenea \u021bie. Nu e motiv de panic\u0103, ci de ac\u021biune!\u00a0 Ca s\u0103 ie\u0219i c\u00e2\u0219tig\u0103tor din procesul [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":39857,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[182,158],"tags":[],"class_list":["post-39850","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cariera-it","category-tehnologie"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.4 (Yoast SEO v24.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>50 de \u00eentreb\u0103ri interviu C# \u0219i r\u0103spunsuri - Codecool<\/title>\n<meta name=\"description\" content=\"\u021ai-am preg\u0103tit 50 de \u00eentreb\u0103ri de interviu C#, r\u0103spunsurile \u0219i sfaturile care pot s\u0103 te aduc\u0103 un pas mai aproape de jobul de programator.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/\" \/>\n<meta property=\"og:locale\" content=\"ro_RO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Preg\u0103tirea pentru interviul C#: 50 de \u00eentreb\u0103ri \u0219i r\u0103spunsuri fundamentale \u00een recrutarea IT\" \/>\n<meta property=\"og:description\" content=\"\u021ai-am preg\u0103tit 50 de \u00eentreb\u0103ri de interviu C#, r\u0103spunsurile \u0219i sfaturile care pot s\u0103 te aduc\u0103 un pas mai aproape de jobul de programator.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Codecool\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CodecoolOfficial\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-13T10:08:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T16:52:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-feature-scaled.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Vertify\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Codecool_global\" \/>\n<meta name=\"twitter:site\" content=\"@Codecool_global\" \/>\n<meta name=\"twitter:label1\" content=\"Scris de\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vertify\" \/>\n\t<meta name=\"twitter:label2\" content=\"Timp estimat pentru citire\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 de minute\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"50 de \u00eentreb\u0103ri interviu C# \u0219i r\u0103spunsuri - Codecool","description":"\u021ai-am preg\u0103tit 50 de \u00eentreb\u0103ri de interviu C#, r\u0103spunsurile \u0219i sfaturile care pot s\u0103 te aduc\u0103 un pas mai aproape de jobul de programator.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/","og_locale":"ro_RO","og_type":"article","og_title":"Preg\u0103tirea pentru interviul C#: 50 de \u00eentreb\u0103ri \u0219i r\u0103spunsuri fundamentale \u00een recrutarea IT","og_description":"\u021ai-am preg\u0103tit 50 de \u00eentreb\u0103ri de interviu C#, r\u0103spunsurile \u0219i sfaturile care pot s\u0103 te aduc\u0103 un pas mai aproape de jobul de programator.","og_url":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/","og_site_name":"Codecool","article_publisher":"https:\/\/www.facebook.com\/CodecoolOfficial\/","article_published_time":"2022-05-13T10:08:43+00:00","article_modified_time":"2022-09-19T16:52:34+00:00","og_image":[{"width":2560,"height":1280,"url":"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-feature-scaled.jpeg","type":"image\/jpeg"}],"author":"Vertify","twitter_card":"summary_large_image","twitter_creator":"@Codecool_global","twitter_site":"@Codecool_global","twitter_misc":{"Scris de":"Vertify","Timp estimat pentru citire":"24 de minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#article","isPartOf":{"@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/"},"author":{"name":"Vertify","@id":"https:\/\/codecool.com\/ro\/#\/schema\/person\/da06a8928e15f1678a52e1a412a9f645"},"headline":"Preg\u0103tirea pentru interviul C#: 50 de \u00eentreb\u0103ri \u0219i r\u0103spunsuri fundamentale \u00een recrutarea IT","datePublished":"2022-05-13T10:08:43+00:00","dateModified":"2022-09-19T16:52:34+00:00","mainEntityOfPage":{"@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/"},"wordCount":5699,"commentCount":0,"publisher":{"@id":"https:\/\/codecool.com\/ro\/#organization"},"image":{"@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#primaryimage"},"thumbnailUrl":"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-feature-scaled.jpeg","articleSection":["Carier\u0103 IT","Tehnologie"],"inLanguage":"ro-RO","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/","url":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/","name":"50 de \u00eentreb\u0103ri interviu C# \u0219i r\u0103spunsuri - Codecool","isPartOf":{"@id":"https:\/\/codecool.com\/ro\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#primaryimage"},"image":{"@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#primaryimage"},"thumbnailUrl":"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-feature-scaled.jpeg","datePublished":"2022-05-13T10:08:43+00:00","dateModified":"2022-09-19T16:52:34+00:00","description":"\u021ai-am preg\u0103tit 50 de \u00eentreb\u0103ri de interviu C#, r\u0103spunsurile \u0219i sfaturile care pot s\u0103 te aduc\u0103 un pas mai aproape de jobul de programator.","breadcrumb":{"@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#breadcrumb"},"inLanguage":"ro-RO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codecool.com\/ro\/intrebari-interviu-c\/"]}]},{"@type":"ImageObject","inLanguage":"ro-RO","@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#primaryimage","url":"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-feature-scaled.jpeg","contentUrl":"https:\/\/codecool.com\/wp-content\/uploads\/2022\/05\/interviu-c-feature-scaled.jpeg","width":2560,"height":1280,"caption":"intrebari interviu IT"},{"@type":"BreadcrumbList","@id":"https:\/\/codecool.com\/ro\/intrebari-interviu-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codecool.com\/ro\/"},{"@type":"ListItem","position":2,"name":"Preg\u0103tirea pentru interviul C#: 50 de \u00eentreb\u0103ri \u0219i r\u0103spunsuri fundamentale \u00een recrutarea IT"}]},{"@type":"WebSite","@id":"https:\/\/codecool.com\/ro\/#website","url":"https:\/\/codecool.com\/ro\/","name":"Codecool","description":"Next gen coding school &amp; career hub","publisher":{"@id":"https:\/\/codecool.com\/ro\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codecool.com\/ro\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ro-RO"},{"@type":"Organization","@id":"https:\/\/codecool.com\/ro\/#organization","name":"Codecool","alternateName":"Codecool","url":"https:\/\/codecool.com\/ro\/","logo":{"@type":"ImageObject","inLanguage":"ro-RO","@id":"https:\/\/codecool.com\/ro\/#\/schema\/logo\/image\/","url":"https:\/\/codecool.com\/wp-content\/uploads\/2023\/09\/Codecool-logo-app.svg","contentUrl":"https:\/\/codecool.com\/wp-content\/uploads\/2023\/09\/Codecool-logo-app.svg","width":1,"height":1,"caption":"Codecool"},"image":{"@id":"https:\/\/codecool.com\/ro\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/CodecoolOfficial\/","https:\/\/x.com\/Codecool_global","https:\/\/www.instagram.com\/codecool_official\/","https:\/\/www.linkedin.com\/school\/codecool\/"]},{"@type":"Person","@id":"https:\/\/codecool.com\/ro\/#\/schema\/person\/da06a8928e15f1678a52e1a412a9f645","name":"Vertify","image":{"@type":"ImageObject","inLanguage":"ro-RO","@id":"https:\/\/codecool.com\/ro\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a0576fd4d2bc1ec13b04cd83245e97c96f3bd854979be12625c741d57c44878d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a0576fd4d2bc1ec13b04cd83245e97c96f3bd854979be12625c741d57c44878d?s=96&d=mm&r=g","caption":"Vertify"}}]}},"_links":{"self":[{"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/posts\/39850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/comments?post=39850"}],"version-history":[{"count":2,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/posts\/39850\/revisions"}],"predecessor-version":[{"id":49500,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/posts\/39850\/revisions\/49500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/media\/39857"}],"wp:attachment":[{"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/media?parent=39850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/categories?post=39850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codecool.com\/ro\/wp-json\/wp\/v2\/tags?post=39850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}