Întrebările la funcția de juniori

Numai atunci când începe să meargă la întrebarea interviu, dar ceea ce doresc de la mine? Ce întrebări voi fi întrebat? Un subiect de mare, și dintr-o dată este puțin probabil să se repete, dacă nu știi ce să se repete. La urma urmei, este .Net, și CLR, și C #, și doar Baze de date. Propun o listă de întrebări, pe care a trebuit să facă față.

Programarea orientată pe obiecte

Paradigma de programare, conceptele de bază, care sunt obiectele și clase.

Concepte de bază ale OOP?

Încapsularea. Polimorfism. Moștenirea. Abstracție. Este important să se numească conceptul în această ordine. Pentru că așa este postulat OEP. Este important să ne amintim și nu trebuie confundate.

Încapsularea. Ce este și, prin urmare, puse în aplicare?

Încapsularea - un mecanism pentru ascunderea codului. Platforma Net este pusă în aplicare cu utilizarea de modificatori de acces.

  • publice - obiectul este disponibil în orice parte a codului
  • internă - obiectul este disponibil într-un ansamblu
  • protejat - obiect este disponibil claselor de clasă și derivate
  • protejat intern - obiectul este disponibil în clasa în interiorul ansamblului și clasei derivate din orice ansamblu
  • privat - un obiect numai în cadrul clasei disponibile

Polimorfism. Ce este și, prin urmare, puse în aplicare?

Polimorfismul - este abilitatea de a funcționa de a gestiona diferite tipuri de date. Există două tipuri de polimorfism: ad-hoc și polimorfism parametrice. polimorfism ad-hoc implică efectuarea de cod diferit pentru diferite tipuri de date, și polimorfism parametrice implică executarea aceluiași cod pentru toate tipurile permise de date de intrare.

Pentru punerea în aplicare a primului tip de polimorfism în limbajul C # folosește cuvântul cheie virtual și supracontrol, iar pentru al doilea - o nouă. Atunci când răspunde la această întrebare, trebuie să fiți sigur că pentru a vă oferi un exemplu, de fapt, aici este:

bool virtual public Egali (obj) // Determina dacă obiectul specificat este obiectul curent

bool public static Egali (objA obiect. obiecta objB) // Definește dacă considerat egal cu instanțele obiect specificat

void virtuale protejate Definitivarea () // Permite un obiect pentru a încerca să resurse gratuite

publice GetHashCode int virtuale () // servește ca o funcție hash pentru un anumit tip

publice de tip gettype () // Gets clasa Tip de instanța curentă

MemberwiseClone obiect protejat () // Creează o „suprafață“ o copie a obiectului curent

ReferenceEquals publice bool statice (obiectul objA. Obiecta objB) // Stabilește dacă instanțele obiect specificat sunt de aceeași instanță

ToString șir virtual public () // Returnează o reprezentare string a acestui obiect

Cum de a lucra cu siruri de caractere?

System.String este de tip imuabil. Dacă schimbați șirul, se creează un nou obiect. Prin urmare, în cazul în care programul este necesar să se facă modificări de linie pentru a utiliza Sustem.StringBuilder.

Ce este un atribut?

Atributele - un mecanism care vă permite să asociați metadate cu elemente specifice ale programului. Aceste metadate sunt create în timpul compilării și sunt integrate în ansamblul.

Puteți crea atribute definite de utilizator, este necesar să moștenească o clasă de atributul personalizat System.Attribute.

Ce este reflecție?

Reflecția - un termen generic care descrie posibilitatea de a studia și de a manipula elementele programelor în timpul rulării. De exemplu, reflecție vă permite să:

  • Enumerați termeni cum ar fi
  • a crea noi instanțe ale obiectului
  • extrage informații despre tipul de
  • extrage informații despre ansamblul
  • explora atributele personalizate aplicate la tipul de
  • a crea și compila noi ansambluri

Care este diferența și Finalize aruncați?

Nu puteți apela în mod explicit Definitivarea, o puteți înlocui doar ca destructor

destructor CRJ este numit în mod automat înainte de a obiectului. Aruncați () pot fi invocate manual, pentru a elibera resurse. Dar, după un apel de a dispune () GC poate apela destructor, care urmează să se efectueze o muncă dublă pentru a evita Microsoft recomandă utilizarea modelului ResourceWrapper.
Ideea principală este că, dacă apelați se elimina () metoda din cauza nu au nevoie pentru a finaliza. Dacă uitați să apelați Eliminați () încă mai funcționează finalize.

La suprafață, copiați copii valorile unei clase de domenii, inclusiv efectul oricăror indicii sau referințe folosind metoda Object.MemberwiseClone. În acest caz, valorile copiate ale acestor indicii și referințe indică aceleași obiecte ca obiect original, care de multe ori duce la erori. De aici și numele metodei de copiere: copiem numai referințele, mai degrabă decât a face copii ale acestor obiecte interne și se referă la ele. Cu copie profundă creează o nouă copie a obiectului. copie clasa IClonable adâncime trebuie să pună în aplicare interfața (recomandarea Micrsoft).

ArrayList (orice tip de obiect), Queue (FIFO: primul-in, first-out), stiva (LIFO: ultimul în primul-out), StringCollection (cum ar fi ArrayList, dar elementele - linii), BitArray (colecție de valori booleene) , Hashtable,

Care este diferența de matrice din listă?

Diferența constă în modul în care datele sunt stocate în memorie. În cazul unei matrice - datele sunt într-o zonă de cod continuu. Avantajele spațiului de stocare, care oferă acces rapid la orice element. Dezavantajul este că, în cazul creșterii matrice, este necesar să se aloce memorie pentru o nouă matrice, mai mare, și apoi copiați matricea originală și se adaugă noi elemente.

Lista stochează, de asemenea, datele reale, precum și link-uri la datele din jur. Acest lucru crește ușor timpul de acces, dar reduce foarte mult timp pentru a adăuga un nou element în listă.

Care este diferența hashtable și dicționar?

În primul rând, dicționar - Generic, și Hashtable - nr. În al doilea rând, un magazine de dicționar cheie-valoare perechi, iar magazinele Hashtable o listă de articole comandate prin valoarea sa hash.

Baze de date

Ce este o bază de date?

Baza de date - un set de date organizate în conformitate cu o structură conceptuală care descrie caracteristicile datelor și relațiile dintre ele, cu o colecție de date care acceptă una sau mai multe aplicații.

Ce este un index?

Indici - obiect bază de date care este creat pentru a îmbunătăți performanța de căutare a datelor. Există două tipuri de indici: grupate și non-cluster. Dacă există un tabel de indice de grup rânduri sunt ordonate după valoarea cheii de index. Dacă tabelul nu are un index cluster, tabelul se numește o grămadă. Indexul creat pentru un tabel care conține doar indicii la intrările din tabelul de non-cluster. indicele grupată poate fi doar una pentru fiecare masă, dar fiecare tabel poate avea mai multe indicii diferite non-cluster, fiecare dintre care definește propria ordine a înregistrărilor.

Care sunt factorii declansatori?

Trigger - este un tip special de procedură stocată executate în mod automat atunci când are loc un eveniment pe serverul de baze de date. Evenimentele sunt proceduri INSERT, UPDATE sau DELETE, aplicat pe tabelă sau vizualizare.

Care este ideea?

Reprezentarea - tabel virtuală al cărei conținut (rânduri și coloane) este definit de interogare. Mai mult decât atât, prezentarea poate fi folosit ca un tabel obișnuit.

Ce este o procedură stocată?

Procedura stocată - această funcție este stocată pe server într-o formă compilată.

Alăturați-vă - operatorul pentru executarea de interogări peste 2 tabele. Există mai multe soiuri: outter Alăturați-vă, Rigth Alăturați-vă, Alăturați-vă stânga, Alăturați-vă completa.

O serie de erori și inexactități în răspunsurile - despre diferența dintre clase și structuri naprimer.Struktury moștenesc de la valuetype, ei nu pot moșteni și nu este o etichetare sigilată într-un int și dublu. De la structuri personalizate nu pot moșteni prea.
Next - structurile care sunt în domeniile de tipul de referință sunt plasate într-un teanc cu el:

public class A
câmp int privat;

// ---- Crearea unui obiect în orice metodă ----------
Un exemplu = nou A (5); // unde sa plaseze câmpuri atunci când creați o referință instanță
// Tip A? În grămada desigur

Mai mult, o punere în aplicare interfață clară (implementaton Explicit) nu permite determinarea modificatorii de acces

Exemplu de clasă. A, B
/ * Privat - Modificatorul de acces cauzează o eroare de compilare. * / A.Method nule () <>
/ * Privat - Modificatorul de acces cauzează o eroare de compilare. * / Void B.Method () <>
>

Despre clasă abstractă farmec prea ușor. Destul de o mulțime de greșeli în răspunsurile. Este mai bine să nu se concentreze asupra lor.