TKC - LoiIver/documents GitHub Wiki

JavaScript Общие вопросы

  1. Что такое замыкание в JS? Порядок инициализации Выполнение скрипта происходит в две фазы: На первой фазе происходит инициализация, подготовка к запуску. Во время инициализации скрипт сканируется на предмет объявления функций вида Function Declaration, а затем – на предмет объявления переменных var. Каждое такое объявление добавляется в window. Функции, объявленные как Function Declaration, создаются сразу работающими, а переменные – равными undefined. На второй фазе – собственно, выполнение. Присваивание (=) значений переменных происходит, когда поток выполнения доходит до соответствующей строчки кода, до этого они undefined.

  2. В чём отличие == и === в JS?

  3. Для чего используется конструкция "use strict"? Через некоторое время мы будем проходить функции. На будущее заметим, что use strict также можно указывать в начале функций, тогда строгий режим будет действовать только внутри функции. Очень долго язык JavaScript развивался без потери совместимости. Новые возможности добавлялись в язык, но старые – никогда не менялись, чтобы не «сломать» уже существующие HTML/JS-страницы с их использованием.

Однако, это привело к тому, что любая ошибка в дизайне языка становилась «вмороженной» в него навсегда.

Так было до появления стандарта ECMAScript 5 (ES5), который одновременно добавил новые возможности и внёс в язык ряд исправлений, которые могут привести к тому, что старый код, который был написан до его появления, перестанет работать.

Чтобы этого не случилось, решили, что по умолчанию эти опасные изменения будут выключены, и код будет работать по-старому. А для того, чтобы перевести код в режим полного соответствия современному стандарту, нужно указать специальную директиву use strict.

В старом стандарте JavaScript разрешалось создавать переменную и без var, просто присвоив ей значение:

num = 5; // переменная num будет создана, если ее не было В режиме "use strict" так делать уже нельзя.

Function Declaration при use strict видны только внутри блока, в котором объявлены. // Function Declaration function sum(a, b) { return a + b; } // Function Expression var sum = function(a, b) { return a + b; }

  1. Какой результат будет при делении строки на число? NaN

  2. Для чего используется функция querySelectorAll? getElementsByTagName document.getElementById document.getElementsByName getElementsByClassName querySelectorAll Вызов elem.querySelectorAll(css) возвращает все элементы внутри elem, удовлетворяющие CSS-селектору css querySelector Псевдо-классы в CSS-селекторе, в частности :hover и :active, также поддерживаются. Например, document.querySelectorAll(':hover') вернёт список, в порядке вложенности, из текущих элементов под курсором мыши.

document.querySelectorAll('ul > li:last-child')

Вызов elem.querySelector(css) возвращает не все, а только первый элемент, соответствующий CSS-селектору css.

Иначе говоря, результат – такой же, как и при elem.querySelectorAll(css)[0], но в последнем вызове сначала ищутся все элементы, а потом берётся первый, а в elem.querySelector(css) ищется только первый, то есть он эффективнее.

.Net

  1. Какое отличие структуры от класса в .NET

  2. При передаче объекта в не управляемый код, какого типа объект будем передавать? (struct)

  3. Можно-ли сдвинуть указатель на переменную внутри структуры? (При ответе на пп.а)

  4. Какое отличие интерфейса от абстрактного класса?

  5. Может-ли абстрактный класс наследоваться от обычного класса? Да, может https://dotnetfiddle.net/yJhoSQ

  6. Наш класс реализует 2 интерфейса. В обоих интерфейсах есть одинаковый метод. Как реализовать его в коде? explicit interface method implementation (EIMI) However, when the compiler generates the metadata for the method, its accessibility is set to private, preventing any code using an instance of the class from simply calling the interface method. The only way to call the interface method is through a variable of the interface’s type. Also note that an EIMI method cannot be marked as virtual and therefore cannot be overridden. This is because the EIMI method is not really part of the type’s object model; it’s a way of attaching an interface (set of behaviors or methods) onto a type without making the behaviors/methods obvious. When an interface method is explicitly implemented, it is no longer visible as a public member of the class

  7. Какое отличие между ключевыми словами constant и readonly? public static readonly int Five = 5;

  8. Можно-ли изменить значение переменной помеченой как constant или readonly в рантайме?

  9. Можно-ли использовать ключевое слово this в static методе? Keyword "this" is not valid in a static property, static method, or statuc ield initializer

  10. Что такое extension методы? Как их использовать?

  11. Можно-ли вызвать extension метод к классу, который ссылается на null?

  12. Чем partial класс отличается от sealed класса?

  13. Во что разворачивается partial класс при компиляции?

  14. Чем отличается delegate от event? In the .NET Framework, callback functions are just as useful and pervasive as in unmanaged Windows programming. However, the .NET Framework provides a type-safe mechanism called delegates. internal delegate void Feedback(Int32 value);

Counter(1, 3, new Feedback(Program.FeedbackToConsole)); Feedback fb1 = new Feedback(FeedbackToConsole); Feedback fbChain = null; fbChain = (Feedback) Delegate.Combine(fbChain, fb1); fbChain = (Feedback) Delegate.Combine(fbChain, fb2); Counter(1, 2, fbChain); fbChain = (Feedback) Delegate.Remove(fbChain, new Feedback(FeedbackToMsgBox));

private static void Counter(Int32 from, Int32 to, Feedback fb) { if (fb != null) fb(val); }

События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. Класс, отправляющий (или порождающий) событие, называется издателем , а классы, принимающие (или обрабатывающие) событие, называются подписчиками.