Se poate folosi async/await în interiorul unui lock? De ce?
C#
De ce async void este o practică proastă?
Ce va fi afișat în consolă? ```csharp public class Program { static void Main() { var myClassObj = new MyClass(); var myStructObj = new MyStruct(); MethodA(myClassObj.Num); // MethodB(myStructObj); MethodC(myClassObj); MethodD(myClassObj); Console.WriteLine(myClassObj.Num); // ? Console.WriteLine(myStructObj.Num); // ? } private static void MethodA(int num) { num = num + 1; } private static void MethodB(MyStruct myStruct) { myStruct.Num += 1; } private static void MethodC(MyClass myClass) { myClass.Num += 1; } private static void MethodD(MyClass myClass) { myClass = new MyClass(); } } ```
Cum înțelege mediul de execuție că o operație asincronă s-a încheiat și trebuie să continue lucrul?
Ce este o structură? Este un tip de valoare sau de referință? Unde este alocată memoria? Care sunt limitele utilizării eficiente a structurilor?
Ce sunt indicii într-o bază de date? Tipuri de indici (B-tree, Hash, Full-text). Index clustert vs non-clustert. Indici acoperitori.
Ce heap-uri cunoști în afară de cel principal (SOH)? Vorbește-mi despre Heap-ul de Obiecte Mari și Heap-ul de Obiecte Pinned.
Ce este hashing-ul consistent? Shard-uri/buckets virtuale?
Sarcină cu async/await: cum funcționează async/await? În ce se dezvoltă? Care este diferența între Task și ValueTask?
Ce sunt rădăcinile GC? Care sunt?
Sarcină cu metode virtuale: ce va fi afișat? Pentru ce metod există mai multe tick-uri și de ce?
Ce este ConfigureAwait(false)? La ce se folosește? Ce este contextul de sincronizare?
Care este esența conceptului de generații GC (0, 1, 2)? Ce optimizăm?
Vorbește despre modurile de funcționare ale GC: server și desktop. Când să folosești care?
Vorbește despre modificatorii de parametri ref, in, out și diferențele dintre ei. Ce este readonly ref și ref readonly?
SELECT * FROM t_sensor_data;
Ți s-a atribuit o sarcină de revizuire a codului de la un coleg Ce probleme vezi în cod? ```csharp namespace SomeProject.Data { public class UserRepository { public Task SaveUser(User user, Dictionary<int,string> shards) { var shardIdx = user.Id % 3; var shardAddress = shards[shardIdx]; using(var shardService = new ShardService(shardAddress)) { return shardService.SaveUserAsync(user); } } } } ```
Întrebare cu șiruri: ce va fi afișat? Cum este suprascris operatorul == pentru șiruri? Ce este pool-ul de internare a șirurilor?
Explică cum se alocă memoria pe stivă și în heap. Tipurile de valori sunt întotdeauna plasate pe stivă?
Cum să implementezi propriul tău Where fără yield? Ce este yield și cum funcționează în spate?