С#, ASP.NET, JS Вопросы на собеседование

Жизненный цикл запроса:

Подробное описание на стековерфлоу

Очень подробная схема в пдф (от майкрософта)

Вопросы по ООП

Полиморфизм – это возможность объектов с одинаковой спецификацией иметь различную реализацию. Это когда вы создаете абстрактный класс Dog с виртуальным либо абстрактным методом Bark что позволяет задать, заменить либо добавить код метода в пронаследованном класе. При этом пронаследованный клас останется экземпляром Dog и будет иметь тот же интерфейс (метод Bark с такой-же сигнатурой что и в базвом класе).

На практике полиморфизм почти всегда связан с наследованием: не пронаследовав класс – не получишь полиморфизма.

Полиморфизм (на понятном языке, опуская нюансы) это параметризация, в языках программирования – это параметризация методов. То есть, вы можете заменять (параметризировать) код в методах и свойствах, не изменяя интерфейса (сигнатуры) функции.

В свою очередь наследование это параметризация класов.
В C# и CLR разделяют два типа параметризации класов
1) С фиксированым базовым класом (обычное наследование классов)
2) С нефиксированным базовым класом (реализация интерфейсов) по средствам этого типа параметризации происходит множественное наследование в CLR

Общие советы и ссылки

1. К собеседованию нужно готовиться всегда. Для этого нужно использовать два подхода:
– долгосрочный – читать книги, учебные проекты
– краткосрочный – подготовка непосредственно перед собеседованием по основным вопросам2. В 70% компаний на собеседовании спрашивают: “Что вы знаете о нашей компании?”. Есть смысл погуглить, чем занимается компания.

Общие советы для любого собеседования

Общие советы для веб-разработчика (на английском)

Много хороших вопросов по дотнету и смежным технологиям

Тесты по ASP.NET MVC

Особенности строк в .NET
Размер строки примерно = 20 + length*2
var s = “something”; s[5] = ‘x’; // exception
Строки являются настоящими ссылочными типами, то есть они всегда располагаются в куче.
Интернирование строк — это механизм, при котором одинаковые литералы представляют собой один объект в памяти.
Строки — неизменяемы (а значит и потокобезопасны)
Строки переопределяют Object.Equals

Вопросы по JavaScript и C#, которые неожиданно вызывают затруднения на собеседованиях
JS: объяснение нюансов falsy/truthy: +!!{} == 1
JS: приведение типов: 2 + 3 + “4” = 54
C#: Чтобы интернирование строк было возможно, строка должна быть неизменной (immutable). Преимущества неизменности строк: потокобезопасность, возможность использования строк в качестве ключей в словарях и хэш-таблицах.

Хорошие привычки C# = плохие привычки JavaScript
1) “0” == true, 0 == false
2) Вместо проверки if (!string.IsNullOrEmpty(someString)) пишется if (someString) – выполнится проверка на значения undefined, null, и “”
3) someString = someString || “Default value” – если первое значение falsy, то присвоится второе
4) === делает проверку на тип
5) Используйте оператор new только когда Вы создаете объект и Вы хотите, чтобы он использовал свой конструктор.
6) Используйте for…in с проверкой hasOwnProperty() для объектов, чтобы исключить из результата неожиданные объекты наследованные от прототипа.
7) Область видимости определяется не фигурными скобками, а функцией. Объявления переменных поднимаются в начало функции (variable hoisting)

Автор: viduus

Являюсь администратором этого сайта.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *