Може ли да се използва async/await вътре в lock? Защо?
C#
Защо async void е лоша практика?
Как средата за изпълнение разбира, че асинхронната операция е приключила и трябва да продължи работата?
Какво ще бъде изведено в конзолата? ```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(); } } ```
Какво е структура? Това е тип стойност или тип препратка? Къде се заделя паметта? Какви са границите на ефективното използване на структурите?
Какво са индексите в база данни? Видове индекси (B-Tree, Hash, Full-text). Клъстерен срещу неклъстерен индекс. Покриващи индекси.
Кои купчини знаеш освен основната (SOH)? Разкажи ми за Large Object Heap и Pinned Object Heap.
Задача с async/await: как работи async/await? В какво се развива? Каква е разликата между Task и ValueTask?
Какво е консистентно хеширане? Виртуални шарда/кофи?
Задача с виртуални методи: какво ще бъде изведено? За кой метод има повече тикчета и защо?
Какви са GC корените? Кои има?
Какво е ConfigureAwait(false)? За какво се използва? Какъв е контекстът на синхронизация?
Разкажи ми за режимите на работа на GC: сървър и десктоп. Кога кой да използвам?
Какво е същността на концепцията за поколенията GC (0, 1, 2)? Какво оптимизираме?
Разкажи ми за модификаторите на параметри ref, in, out и техните разлики. Какво е readonly ref и ref readonly?
SELECT * FROM t_sensor_data;
Получихте задача за преглед на код от колега Какви проблеми виждате в кода? ```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); } } } } ```
Въпрос със низове: какво ще бъде изведено? Как е препълнен операторът == за низове? Какво е пулът за интернироване на низове?
Обяснете как се разпределя паметта на стека и в купчината. Винаги ли се разполагат стойностните типове на стека?
Какво е StringBuilder? Какво има вътре? Как работи управлението на паметта?