C#: вопросы с собеседования. Часть 2

вторник, 15 декабря 2009, Роман Калита

What is difference between overloading and overriding?

overloading — механизм вызова одноимённых методов с различными типами параметрами, при котором конкретный метод выбирается на этапе компиляции.
overriding — переопределение виртуальных функций

Class inherits from two interfaces containing methods with the same signature. Is it possible to provide different implementations for these methods?

Да, придется явно(explicit) имплементировать интерфес для этих методов

What can be a root reference?

Cтатическое поле класса и параметр или переменная в кадре стека

What is special about the declaration of relational operators?

Что такое relational operators можно посмотреть здесь(http://www.blackwasp.co.uk/CSharpRelationalOperators.aspx). Так вот, они дожны быть парными

How 'public internal' access modifier affects visibility?

internal ничего не меняет для public

Can a local variable get garbage collected before it becomes out-of-scope?

Нет, только если локальная переменная ссылается на объект который собирает сборщик. Локальная переменная не может быть удалена коллектором, потому что мы еще не вышли из scope при выполнении программы. Но локальной переменной могли передать ссылку на объект. Тогда казалось бы объект может быть подчищен. Но. На объект есть ссылки значит чистить его тоже нельзя

What implementations of serialization are built in FCL? Where are they used?

XML сериализация и бинарная сериализация

Does the size of an array need to be defined at compile time?

нет

Can a destructor have access modifiers?

Сам деструктор в шарпе нет. Но тут есть свои подводные камни. И вопрос в том как трактовать. В шарпе есть деструкторы и файналайзеры. Берем дальше есть CLR - а это не только шарп это и VB.NET и куча других функциональных и скриптовых языков. Есть там деструкторы? В своем роде - да, хотя это и не их синтаксис. Файналайзер и деструктор по сути одно и то же. Вот например поэтому то что можно написать вот так:

   ~MyClass()

   {

      // do work here

   }

идентично следующему

   MyClass.Finalize()

   {

      // do work here

      base.Finalize();

   }

а файналайзер у System.Object обявлен как protected.

What is smallest integer type to represent number not greater than 40 000?

Некорректный вопрос с одной стороны, не указана нижняя граница -2^61 тоже 'not greater than 40 000' при такой постановке вопроса такого типа не существует (вернее, это будет BigInt).

перевожу

Назовите наименьший целый тип которым можно представить число меньшее(не больше) 40000.

Так давайте разберемся.

sbyte (-128 до 127) т.е. 127 < 40000

byte (0 до 255) т.е. 255 < 40000

short (-32,768 до 32,767) т.е. 32 767 < 40 000

ushort (0 до 65,535) т.е. 0 < 40000

int (-2,147,483,648 до 2,147,483,647) т.е. -2,147,483,648 < 40000

uint (0 до 4,294,967,295) т.е. 0 < 40000

long (-9,223,372,036,854,775,808 до 9,223,372,036,854,775,807) < 40000

ulong (0 до 18,446,744,073,709,551,615) т.е. 0 < 40000.

Т.е. любой из типов подходит под вопрос. И что значит наименьшый? По размеру типа или по значениям которые он представляет. С другой стороны типы логично сравнивать по размеру в битах или байтах. А наименьшими типом по размеру способным вместить 40000 являются short и ushort. Т.е. даже с такой точки зрения вопрос поставлен не корректно

What is array rank?

число измерений массива

What does keyword 'stackalloc'?

stackalloc — оператор создания объекта на стеке, возвращает укзатель на созданный объект

What encoding uses 'System.String' class?

на практике UCS-2, везеде пишут просто unicode

What is boxing and unboxing?

boxing — создание объекта в куче для объекта на стеке (приведение переменной значимого типа к переменной ссылочного), unboxing — обратный процесс

Can a destructor have access modifiers?

Нет.

- Destructors cannot be defined in structs. They are only used with classes.

- A class can only have one destructor.

- Destructors cannot be inherited or overloaded.

- Destructors cannot be called. They are invoked automatically.

- A destructor does not take modifiers or have parameters.

msdn.microsoft.com/.../66x5fx1b.aspx


Этот блог зеркалируется. Оригинал взят с regfordev.blogspot.com

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии