1) Используете ли вы конструкции, позволяющие написать код в одну строку?
2) Рассматриваете ли вы ситуацию с переполнением. Например, реализация intArray.Where (i=> i% 2==0) .Sum () может быть легко написана в одну строку, но тогда высока вероятность переполнения Способы решения задачи выше не исключает такой проблемы, но вероятность её возникновения не высока. Будет хорошо, если вы уточните ожидаемый размер массива.
Ответ:
На выходе будет:
Обе переменные неинициализированы, но String со ссылочным типом, а DateTime — с типом значения. В качестве типа значения для DateTime устанавливается значение по умолчанию в полночь 1/1/1, а не null.
Ответ:
Можно подумать, что компилятор будет жаловаться, когда переменная DateTime сравнивается с нулем. Однако компилятор действительно допускает это, что может потенциально привести к ошибкам headfake и pull-out-your-hair.
В частности, оператор==будет передавать свои операнды в разные допустимые типы, чтобы получить общий тип, который он может затем сравнить.
Однако это может привести к неожиданному поведению, как это происходит при сравнении DateTime и null. В этом случае, как DateTime, так и null могут перейти к Nullable <DateTime>. Поэтому можно сравнивать два значения, но результат всегда будет ложным.
Один из верных ответов:
Поскольку у нас нет доступа radius поля объекта, объект сам должен посчитать окружность, с помощью inline.
Менее красивое решение (извлекаем из объекта значение радиуса и затем выполняем вычисление с результатом):
В любом случае, основная цель задания, посмотреть, как вы работаете с calculate.
Что изменится, если поменять await Task.Delay(5); и Thread.Sleep(5)?
Ответ на первый вопрос: программа просто выведет пустую строку (а не «Hello world!»). Это связано с тем, что result будет неинициализирован при вызове Console.WriteLine.
Большинство программистов ожидают, что функция будет выполняться от начала до конца или до return. Это не относится к функциям async. Они выполняются только до первого await , а затем возвращаются к вызывающему объекту. Функция, вызванная await (в данном случае Task.Delay), выполняется асинхронно, а строка после оператора ожидания не сигнализируется для выполнения, пока Task.Delay не завершится (через 5 миллисекунд).
Вызов await Task.Delay (5) позволяет текущему потоку продолжать работу, и если всё в порядке, возвращать его в пул. Это основное преимущество механизма async / await. Это позволяет CLR обслуживать больше запросов с меньшим количеством потоков в пуле.
В C # есть конструкции, которые значительно облегчают задачу программирования асинхронных методов, а программист, который знает о них, будет создавать более совершенные программы.
Что касается второго вопроса, если await Task.Delay (5); был заменен Thread.Sleep (5), программа выдаст Hello world !. async без хотя бы одного await в нем работает точно так же, как синхронный метод; то есть он будет выполняться от начала до конца или до return. Вызов Thread.Sleep () просто блокирует поток, добавляя 5 миллисекунд к времени выполнения метода SaySomething ().
Ответ:
Эта программа выведет число «10» десять раз.
И вот почему: delegate добавляется циклически, однако параметр i передаётся по ссылке. Поэтому, по окончании цикла i равно 10, и при каждом запуске delegate будет выводиться работать с этим значением
Ответ:
Классы и структуры в C# имеют несколько общих черт, а именно:
- Являются составными типами данных
- Могут содержать методы и события
- Могут поддерживать интерфейсы
Но есть ряд различий. Вот сравнение:
- Наследование поддержки
- Ссылочные типы
- Ссылка может быть нулевой
- Могут занимать больше памяти
- Не поддерживают наследование
- Типы значений
- Передаются по значению (например, целые числа)
- Не могут иметь нулевую ссылку (если не используется Nullable)
- Нет места в памяти для instance
Решение:
Это лишь 8 заданий, которые, как нам кажется было бы полезно уметь решать. Но чтобы пройти собеседование этого недостаточно. Чтобы приблизиться к цели, посмотрите эти материалы: