8 заданий по C#, которые могут попасться на собеседовании

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 заданий, которые, как нам кажется было бы полезно уметь решать. Но чтобы пройти собеседование этого недостаточно. Чтобы приблизиться к цели, посмотрите эти материалы: