Я подобрал для вас несколько интересных, но не очень известных вопросов из мира .NET и C#. Плюс какие-то вопросы я написал сам, основываясь на книгах, статьях и видео которые мне понравились.
1. Что будет отображено на экране? (если что-то вообще будет отображено)
string nullString = (string)null; Console.WriteLine (nullString is string);
Credits: https://www.dotnetcurry.com/csharp/1417/csharp-common-mistakes
2. Что будет выведено на экран консольным .NET приложением?
Console.WriteLine (Math.Round(1.5)); Console.WriteLine (Math.Round(2.5));
3. Что будет результатом выполнения следующего кода:
f = Sum (0.1f, 0.2f); float g = Sum (0.1f, 0.2f); Console.WriteLine (f==g);
a) True
b) False
c) Будет выброшено исключение
d) Нельзя сказать однозначно (может быть как true, так и false)
JIT может сохранять результат суммы гораздо более точно чем это может сделать float. То есть результат зависит от настроек компилятора. Попробуйте запустить код на разных версиях фреймворка в разных режимах Debug/Release
Credits:
Binary floating point and .NET
4. Что будет результатом выполнения следующего кода:
float price = 4.99F; int quantity = 17; float total = price * quantity; Console.WriteLine("The total price is ${0}.", total);
a) The total price is $85
b) The total price is $84.83
c) The total price is $84
d) The total price is $84.82999
5. Каким образом лучше всего хранить пароли в базе данных? Выберите один или несколько ответов:
a) В виде незашифрованного текста
b) Зашифрованными с помощью DES
c) Зашифрованными с помощью AES
d) Захешированными с помощью MD5
e) Захешированными с помощью SHA512
В наше время MD5 больше не следует использовать.
Кстати, можно использовать и keyed hash алгоритмы: HMACSHA1 или MACTripleDES
6. В среде .NET существует множество различных таймеров. Какого из таймеров не существует?
a) Timer из System.Windows.Forms
b) DispatchTimer из System.Windows.Threading
c) DispatchTimer из Windows.UI.XAML
d) Timer из System.Timers
e) Timer из System.Windows.Threading.Timers
f) Timer из System.Threading
Credits: CLR via C# Jeffrey Richter
7. Какого .NET REPL не существует в сети?
a) dotnetfiddle.net
b) repl.it/languages/csharp
c) csharpcompiler.net
d) dotnet.microsoft.com/platform/try-dotnet
e) csharppad.com
8. Если вы захотите указать что число является типом long, то вы можете указать в конце числа литеру l или L. Например, так:
var l = 138l;
С помощью какой литеры можно указать тип decimal?
a) C или c
b) D или d
c) M или m
d) E или e
9. Что будет отображено на экране консолького приложения содержащего следующий код:
class Program { static Program() { Console.WriteLine("Static constructor"); } public Program() { Console.WriteLine("Constructor"); } static void Main(string[] args) { Console.WriteLine("Main"); Console.ReadLine(); } }
Знаете вы это или нет, но статический конструктов вызывается перед тем как экземпляр класс создается. И только после этого уже вызывается публичный конструктор. Но в данном случае код выполняется в консольном приложении и публичный конструктор не вызывается.
10. Что будет выведено на экран в качестве результата?
[Flags] public enum Status { Funny = 0x01, Hilarious = 0x02, Boring = 0x04, Cool = 0x08, Interesting = 0x10, Informative = 0x20, Error = 0x40 } public static void Main (string[] args) { var code = 24; Console.WriteLine (String.Format("This Quiz is: {0}", (Status)code)); }
24 в двоичной системе будет 0011000
Записываем цифры в столбик
Funny = 0
Hilarious = 0
Boring = 0
Cool = 1
Interesting = 1
Informative = 0
Error = 0
Credits:
C# Often Surprises Me, part: 000001
Enumeration types (C# reference)
11. В чем разница между String и string?
По следующей ссылке найдете статью с более подробным описанием Difference between string and String in C#
12. Что означает (или как минимум изначально означал) символ Visual Studio?
Credits: That Visual Studio logo—it’s not what you think it is
13. Пожалуйста, сопоставьте:
Async/await
Try/catch
ValidateAntiForgeryToken
со следующими аббревиатурами:
TAP, SEH, STP
Try/catch -> SEH (Structured Exception Handling)
ValidateAntiForgeryToken -> STP (Synchronizer Token Pattern)
14. Что из следующего не является .NET CMS?
a) mojoPortal
b) N2 CMS
c) Atomic CMS
d) Composite C1
e) Concrete5
f) Piranha CMS
15. Что будет отображено на экране? (если что-то будет отображено)
class Program { private static int y = x; private static int x = 5; static void Main(string[] args) { Console.WriteLine(y); Console.ReadLine(); } }
Порядок объявления переменных иногда играет роль
16. Какого класса Concurrent Collection не существует в .Net
a) ConcurrentQueue
b) ConcurrentStack
c) ConcurrentList
d) ConcurrentDictionary
e) ConcurrentBag
17. Какой способ вызова async кода синхронным способом предпочтителен (разумеется, что делается это в редких ситуациях когда await ну никак не получается использовать):
a) Wait()
b) Result()
c) GetAwaiter().GetResult()
Wait и Result выбрасывают aggregate exception вместо обычного
Credits: Correcting Common Async/Await Mistakes in .NET — Brandon Minnick
ссылка на оригинал статьи https://habr.com/ru/post/498820/
Добавить комментарий