.NET →  Питання до співбесіди на посаду ASP.Net Developer/C# (Intertviews question ASP.Net/C#)

Деякий час тому, мені довелося шукати нову роботу, і проходити тернистий шлях співбесід. За 2 тижні, я пройшов близько 8-10 співбесід. За час походу я встиг зібрати велику купу найпопулярніших питань, які хотів би вам презентувати. Сподіваюся, що даний списочок допоможе кому то при пошуку роботи, а кого то можливо підштовхне до освіження своїх даних. А хто то просто, що те нове дізнається:)

Питання
  1. Що таке поліморфізм, інкапсуляція, спадкування (inherit). ООП
  2. Які види типів є в. Net (reference, by value)
  3. box/unbox
  4. Managed code, Managed Envirovment, Security
  5. ref, out
  6. Модіфікатори доступу: new, public, override, internal, private, protected, extern, readonly, static
  7. Виклик статичних конструкторів
  8. AppDomain
  9. Threads, Crytical section, Monitor, Semaphore, lock(monitor)
  10. Життєвий цикл сторінки, контроль, мастер пейдж (page_load)
  11. struct спадкування від абстракної стурктури
  12. web servise class
  13. створення веб сервісу в блокноті
  14. webmethod
  15. Події в асп.нете и кастом евенты
  16. events, delegate
  17. Http handler and lify cycle
  18. CTR, CTS, CLR
  19. Sql index cluster/non-cluster
  20. Interface
  21. catch
  22. GAC
  23. Global.asax events
  24. HttpModule
Відповіді на питання:
  1. Що таке поліморфізм, інкапсуляція, спадкування (inherit). ООП
    • поліморфізм: Мова програмування підтримує поліморфізм, якщо класи з однаковою специфікацією можуть мати різну реалізацію.
    • спадкування: Механізм дозволяє створити новий клас, який успадковує батьківський клас при цьому властивості і методи батьківського класу заімствуються новим класом
    • інкапсуляція: властивість мови програмування, що дозволяє об'єднати і захистити дані та код в об'єкт і приховати реалізацію об'єкта від користувача (прикладного програміста). При цьому користувачеві надається тільки специфікація (інтерфейс) объекта.
  2. Які види типів є в. Net (reference, by value). Існують наступні типи Value type, reference type. Value type зберігає значення в стеку (більш швидкий доступ до даних) reference type зберігає значення в купі (Більший обсяг пам'яті для зберігання даних). String є посиланнями типом.
  3. boxing / unboxing боксування, процес перетворення об'єкта з value type в reference type. Анбоксінг зворотний процес. http://msdn.microsoft.com/ru-ru/library/4d43ts61.aspx
  4. Managed code, Managed Envirovment, Security. Такий код, який управляеться середовищем. Net framework, в даному випадку за безпекою виконання коду стежить середовище, яке може обмежити доступ програми, якщо немає відповідних на те прав. Це означає, що CLR піклується про управління пам'яттю, про сумісність між платформами, про безпеки код
  5. ref, out :
    • ref - дозволяє передавати типи даних за посиланням, тобто всередині методу при передачі value type, ми будемо мати посилання на значення, і зможемо змінити значення, при цьому після завершення методу значення буде оновлена, тобто буде вести себе як контрольний тип. У разі reference type й передачі ref, ми можемо знищити посилання, і тоді об'єкт буде втрачено.
    • out - говорить про те, що викликає метод з параметром out повинен обов'язково присвоїти значення, в іншому випадку возникнов помилка компіляції.
  6. модифікатори
    • new дозволяє в успадкованих класі приховувати методи і властивості від батьківського класу. При цьому при приведенні спадкоємця до батьків і виклику методу, який оголошений спадкоємця як new, такий метод не буде викликаний, замість нього викличе метод базового класу.
    • private - Доступ до закритих членам можна отримати тільки всередині тіла класу або структури, в якій вони оголошені. Також якщо тіло класу має внутрішній клас, то йому теж буде надано доступ
    • public - член класу або типу буде видно без обмежень
    • protected - Доступ обмежений містить класом або типами, які є похідними від містить класу.
    • internal - Доступ обмежений поточної складанням.
    • override - дозволяє перевантажувати методи в успадкованого класі, які в батьківському оголошення, як virtual
    • virtual - використовується для зміни оголошень методів, властивостей, індексатор і подій та дозволу їх перевизначення у похідному класі. Наприклад, цей метод може бути перевизначений будь-яким похідних класів
    • extern - використовується для оголошення методу з зовнішньою реалізацією. Коли служби взаємодії використовуються для виклику некерованого коду, модифікатор extern зазвичай використовується з атрибутом DllImport . У цьому випадку також необхідно оголосити метод як static у відповідності з наступним прикладом:
      [DllImport ("avifil32.dll")]
      private static extern void AVIFileInit ();

    • static - використовується для оголошення статичного члена, що належить власне типу, а не конкретного об'єкта. Модифікатор static можна використовувати з класами, полями, методами, властивостями, операторами, подіями та конструкторами, але не можна - з індексатор, деструктор або типами, відмінними від класів. На статичний член не можна посилатися через екземпляр. а можна тільки через ім'я типу.
    • readonly - це модифікатор, який можна використовувати для полів. Якщо оголошення поля містить модифікатор readonly , привласнення значень таким полях може відбуватися тільки як частина вашої реклами чи у конструкторі в тому ж класі. Поле з модифікатором const може бути ініціалізувати тільки при оголошенні поля. Поле з модифікатором readonly може бути ініціалізувати при оголошенні або в конструкторі.
    • sealed - забороняє інших класів наслідувати від цього класу.
  7. Статичні конструктори викликаються на певному етапі між запуском програми і створенням екземпляра класу.
    • Статичні конструктори володіють наступними властивостями.
      • Статичний конструктор не приймає модифікатори доступу і не має параметрів.
      • Статичний конструктор викликається автоматично для ініціалізації класу перед створенням першого примірника чи посиланням на які-небудь статичні члени.
      • Статичний конструктор не можна викликати безпосередньо.
      • Користувач не керує тим, коли статичний конструктор виконується в програмі.
      • Типовим використанням статичних конструкторів є випадок, коли клас використовує файл журналу і конструктор застосовується для додавання записів в цей файл.
      • Статичні конструктори також корисні при створенні класів-оболонок для некерованого коду, коли конструктор може викликати метод LoadLibrary .
      • Якщо статичний конструктор ініціює виключення, середа виконання не викликає його вдруге, і тип залишається неініціалізованою на час існування домену програми, в якому виконується програма.
  8. AppDomain - представляє домен програми, що є ізольованою середовищем, в якому виконуються програми. Даний клас не може успадковуватися.
    Домени додатків, представлені об'єктами AppDomain , допомагають забезпечити ізоляцію, вивантаження і межі безпеки для виконання керованого коду. http://msdn.microsoft.com/ru-ru/library/system.appdomain.aspx
    • Використовуйте домени програм для ізоляції завдань, які можуть порушити роботу процесу. Якщо стан AppDomain , що виконує завдання, стає нестабільним, AppDomain можна вивантажити, і це не відіб'ється на процесі. Це важливо для процесів, які повинні виконуватися тривалий час без перезапуску. Також програмні домени можна використовувати для ізоляції завдань, які не повинні спільно використовувати дані.
    • , якщо транспортні завантажується у використовуваний за замовчуванням домен програми, її не можна вивантажити з пам'яті, поки виконується процес. Проте, якщо відкрити другий домен програми для завантаження і виконання збирання, ця збірка буде розвантажуватися, коли вивантажується домен програми. Використовуйте цей прийом для мінімізації робочого набору довго виконуються процесів, час від часу використовують великі бібліотеки DLL.
  9. Threads, Crytical section, Monitor, Semaphore, lock (monitor) Проблеми виникають при роботі з потоками:
    • Доступ до загальних ресурсів
    • взаємоблокування (один потік не може завершиться до тих пір, поки інший не завершить якийсь процес, при цьому другий потік не може закінчити, поки перший не закінчив)
    • синхронізація потоків
    Для вирішення проблем виникають при роботі з потоками використовуються Crytical section, Monitor, Semaphore, lock (monitor)
  10. Життєвий цикл сторінки, контроль, майстер пейдж (page_load) PreInit, Init, InitComplete (Load viewstate, post data), PreLoad, Load (recursive for all children control calling load), Виклик всіх подій, LoadComplete, PreRender, SaveStateComplete (viewstate), render, unload див. посилання. Спочатку вантажиться контент пейдж лоада, а потім мастерпейдж. посилання
  11. Структури абстрактної структурі не існує. Структури можуть реалізовувати інтерфейс, але вони не можуть наслідувати від іншої структури. З цієї причини члени структури не можна оголосити як protected .
  12. web servise class. Визначає необов'язковий базовий клас для веб-служб XML, що забезпечує прямий доступ до загальних об'єктів ASP.NET, таким як стан програми або сеансу. Якщо доступ до загальних об'єктів ASP.NET не потрібно, можна створювати веб-служби, які не є похідними від WebService . Доступ до додаткових об'єктів ASP.NET можливий через Context.
  13. <%@ WebService Language="C#" Class="Util" %>
    
    usingn System;
    using System.Web.Services;
    
    public class Util: WebService {
    
        [WebMethod(Description="Returns the time as stored on the Server", EnableSession=false)]
        public string Time() {
            return Context.Timestamp.TimeOfDay.ToString()
        }
    }
    
  14. webmethod . Додавання цього атрибута до методу у веб-службі XML, створеної за допомогою ASP.NET, робить можливим виклик цього методу для віддалених веб-клієнтів. Цей клас не може бути успадкований.
  15. події в асп.нете і кастом евенти. Для реалізації своїх собітій необхідно успадкувати від WebRequestEvent. Приклади приклад 1 приклад 2
  16. events, delegate. delegate це клас, а event це член класу з типом delegate. Події це особливий тип багатоадресних делегатів, які можна викликати тільки з класу або структури, в якій вони оголошені (клас видавця). Якщо на подію підписані інші класи або структури, їхні методи обробників подій будуть викликані коли клас видавця ініціює подія. Ключове слово delegate використовується для оголошення посилального типу, який може бути використаний для інкапсуляції іменованого або анонімного методу.
  17. HttpHandler дозволяє отримувати дані від сервера, при цьому не обробляти всі події стандартної веб сторінки. Застосовується для одержання зображення з БД, отримання RSS стрічки та інше. (. Ashx)
  18. CLS, CTS. Common Type System (CTS) describes how types are declared, used and managed. CTS facilitates cross-language integration, type safety, and high performance code execution. The CLS is a specification that defines the rules to support language integration. This is done in such a way, that programs written in any language (. NET compliant) can interoperate with one another. This also can take full advantage of inheritance, polymorphism, exceptions, and other features. CLR - Common Language Runtime - середа яка виконує код і пропонує служби, що полегшують процес розробки. CTS - Опис і визначення способів оголошення, використання та управління типами в середовищі виконання для підтримки інтеграції мов програмування.
  19. Sql index cluster / non-cluster . Існує два типи індексів: кластерні і некластерние. При наявності кластерного індексу рядки таблиці фізично зберігаються в заданому порядку і безпосередньо пов'язані з елементами індексу, завдяки чому значно прискорюється доступ до даних при використанні запитів, що використовують даний індекс. Якщо в таблиці немає кластерного індексу, таблиця є невпорядкованою. Некластерний індекс, створений для такої таблиці, містить тільки покажчики на записи таблиці, у зв'язку з чим при вибірці необхідно принаймні ще одне звернення до диску для отримання власне запису.
  20. Інтерфейс містить тільки підпису методів , властивостей , подій або індексатор . Реалізація членів виконується у класі чи в структурі, що реалізує інтерфейс
  21. Catch. Інструкція try-catch складається з блоку try , за яким слідує одне або декілька пропозицій catch , в яких визначаються обробники для різних ісключеній.Можно використовувати декілька пропозицій catch . У цьому випадку буде мати значення порядок проходження пропозицій catch , оскільки пропозиції catch будуть перевірятися саме в цьому порядку. При використанні в якості першого перехоплювача Exception, з'явиться повідомлення про помилку: A previous catch clause already catches all exceptions of this or a super type ('System.Exception')
  22. GAC - The global assembly cache stores assemblies specifically designated to be shared by several applications on the computer. Вирішує завдання версіонірованія збірок.
Вживаються питання, побажання, пропозиції. По мірі надходження питань буду відповідати на всі питання, що цікавлять.

коментарі:

+1tercius 29.04.2010 18:42
ой! тута стільки правити... o.O

краще вже вкажіть своє мило в профілі - інакше коментарів з правками вийде більше, ніж самого топіка. чи розшарте його в гугль-докс - нехай вам бажаючі допоможуть з правкою.

додати коментар: