Что должен знать правильный .NET-разработчик
Автор: Scott HanselmanОригинал: What Great .NET Developers Ought To Know (More .NET Interview Questions)
Что должен знать правильный .NET-разработчик
Каждый кто пишет код
- Объясните разницу между нитью (Thread) и процессом (Process)
- Что такое сервис (Windows Service) и как его жизненный цикл отличается от «стандартного» EXE?
- Какой максимальный объем памяти может адресовать один процесс? Отличается ли он от максимального объема виртуальной памяти, доступной системе? Как это влияет на структуру системы?
- В чем различие между EXE и DLL?
- Что такое строгая типизация (strong-typing) в сравнении со слабой типизацией (weak-typing)? Какая предпочтительнее? Почему?
- Некий продукт называют «контейнером компонентов» ("Component Container"). Назовите по крайней мере 3 контейнера компонентов, поставляемых с семейством продуктов Windows Server Family.
- Что такое PID? Чем он полезен при выявлении неисправностей системы?
- Сколько процессов могут слушать один и тот же порт TCP/IP?
- Что такое GAC? Какую проблему он разрешает?
.NET-разработчик среднего уровня
- Объясните разницу между интерфейсно ориентированным (Interface-oriented), объектно ориентированным и аспектно ориентированным (Aspect-oriented) программированием
- Объясните что такое «интерфейс» и чем он отличается от класса
- Что такое Reflection?
- В чем различие между XML Web Services с использованием ASMX и .NET Remoting с использованием SOAP?
- Являются ли системы типов, представленные в XmlSchema и в CLS — изоморфными?
- Концептуально, в чем различие между ранним и поздним связыванием (early-binding и late-binding)?
- Использование Assembly.Load — это статическая или динамическая ссылка?
- Когда уместно использование Assembly.LoadFrom, а когда Assembly.LoadFile?
- Что такое «Asssembly Qualified Name»? Это имя файла? В чем различие между ними?
- Правильно ли так писать?
Assembly.Load("foo.dll"); - Чем отличается «strongly-named» сборка от «НЕ strongly-named» сборки?
- Может ли DateTime равняться null?
- Что такое JIT? Что такое NGEN? Каковы преимущества и ограничения каждого из них?
- Как основанный на поколениях сборщик мусора в .NET CLR управляет жизненным циклом объекта? Что такое «non-deterministic finalization»?
- В чем различие между Finalize() и Dispose()?
- Чем полезен using()? Что такое IDisposable? Как он поддерживает deterministic finalization?
- Что делает эта полезная команда? tasklist /m "mscor*"
- В чем разница между «in-proc» и «out-of-proc»?
- Какая технология позволяет выполнять out-of-proc взаимодействие в .NET?
- Когда вы запускаете компонент из под ASP.NET, в каком процессе он работает под Windows XP? Windows 2000? Windows 2003?
Ведущий разработчик
- Что не так вот в следующей строке?
DateTime.Parse(myString); - Что такое PDB? Где они должны находится, чтобы можно было выполнять отладку?
- Что такое «цикломатическая сложность» (cyclomatic complexity) и почему она важна?
- Напишите стандартный lock() плюс «двойную проверку» для создания критической секции вокруг доступа к переменной.
- Что такое «FullTrust»? Имеют ли FullTrust сборки, помещенные в GAC?
- Какие преимущества получает ваш код, если вы декорируете его атрибутами, относящимися к особым Security permissions?
- Что делает эта команда?
gacutil /l | find /i "Corillian" - Что делает эта команда?
sn -t foo.dll - Какие порты брандмауэра должны быть открыты для DCOM? Каково назначение порта 135?
- Сопоставьте OOP и SOA. Каковы принципы каждого из них?
- Как работает XmlSerializer? Каких ACL permissions требует использующий его процесс?
- Почему catch(Exception) почти всегда — плохая мысль?
- В чем разница между Debug.Write и Trace.Write? Когда должен быть использован каждый из них?
- В чем различие между компиляцией в Debug и в Release? Есть ли значительная разница в скорости? Почему или почему нет?
- Как работает JIT — по сборке целиком или по методу? Как это влияет на working set?
- Сравните использование абстрактного базового класса и использование интерфейса?
- В чем различие между a.Equals(b) и a == b?
- В контексте сравнения, что такое идентичность объектов по сравнению с эквивалентностью объектов?
- Как можно выполнить глубокое копирование (deep copy) в .NET?
- Изложите ваше понимание IClonable.
- Что такое «упаковка» (boxing)?
- string — это тип значений (value type) или ссылочный тип?
- В чем значимость паттерна "PropertySpecified", используемого в XmlSerializer? Какую проблему он пытается разрешить?
- Почему в .NET выходные параметры (out parameters) не стоит применять? Действительно ли это так?
- Может ли атрибут быть установлен на один из параметров метода? Чем это полезно?
Разработчик компонентов на C#
- Сопоставьте использование override и new. Что такое «shadowing»?
- Объясните использование virtual, sealed, override и abstract.
- Объясните использование и значение каждого компонента строки:
Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d - Объясните различия между public, protected, private и internal.
- Какое преимущество вы получаете от использования первичной сборки взаимодействия (Primary Interop Assembly, PIA)?
- Благодаря какому механизму NUnit узнает, какой метод протестировать?
- В чем различие между:
catch(Exception e){throw e;} и
catch(Exception e){throw;} - В чем разница между typeof(foo) и myFoo.GetType()?
- Объясните что происходит в первом конструкторе:
public class c{ public c(string a) : this() {;}; public c() {;} }
Чем полезна такая конструкция? - Что такое «this»? Может ли this использоваться в статическом методе?
Разработчик на ASP.NET (UI)
- Объясните, как POST-запрос формы из браузера становится на серверной стороне событием — таким как Button1_OnClick.
- Что такое «PostBack»?
- Что такое «ViewState»? Как он кодируется? Является ли он шифрованным? Кто использует ViewState?
- Что такое
element и для чего используются эти две технологии ASP.NET? (В оригинале: What is the element and what two ASP.NET technologies is it used for?) - Какие три Session State providers доступны в ASP.NET 1.1? Какие преимущества и недостатки у каждого из них?
- Что такое «Web Gardening»? Как его использование влияет на проект?
- В заданном ASP.NET-приложении, сколько объектов-приложений имеется, если это одно-процессорная машина? двухпроцессорная? двухпроцессорная с включенным Web Gardening? Как это отражается на проекте?
- Используются ли нити (threads) ASP.NET приложения повторно для различных запросов (requests)? Получает ли каждый HttpRequest свою собственную нить? Должны ли вы в ASP.NET использовать Thread Local storage?
- Полезен ли атрибут [ThreadStatic] в ASP.NET? Есть ли побочный эффект? Это хорошо или плохо?
- Дайте пример того, как использование HttpHandler может упростить существующий проект, который обслуживает Check Images на .aspx-странице.
- На события какого вида может подписываться HttpModule? Какое влияние они могут оказать на реализацию? Что может быть сделано без перекомпиляции ASP.NET-приложения?
- Опишите способы представления «arbitrary endpoint (URL)» и направьте запросы к этой endpoint в ASP.NET.
- Объясните как работают cookies. Дайте пример злоупотребления Cookie.
- Объясните важность HttpRequest.ValidateInput()?
- Какого рода данные передаются в заголовках HTTP (HTTP Headers)?
- Сравните HTTP-запросы вида GET и POST. Что такое «HEAD»?
- Назовите и опишите по крайней мере 6 статус-кодов HTTP (HTTP Status Codes) и объясните о чем они говорят клиенту, давшему запрос.
- Как работает «if-not-modified-since»? Как это может быть программно реализовано на ASP.NET?
- Объясните <@OutputCache%> и использование «VaryByParam», «VaryByHeader».
- Как работает «VaryByCustom»?
- Как можно реализовать кэширование готового HTML в ASP.NET, кэшируя отправляемые версии страниц, полученные по всем значениям q= кроме q=5 (например, http://localhost/page.aspx?q=5)?
Разработчик, использующий XML
- В чем назначение XML Namespaces?
- Когда уместно использование DOM? Когда неуместно? Есть ли ограничения по размеру?
- Что такое «WS-I Basic Profile» и почему он важен?
- Напишите простой XML-документ, использующий пространство имен (namespace) по умолчанию, а также qualified (prefixed) namespace. Добавьте элементы из обоих пространств имен.
- В чем основное фундаментальное различие между элементами (Elements) и атрибутами (Attributes)?
- В чем различие между «Well-Formed XML» и «Valid XML»?
- Как бы вы валидировали XML используя .NET?
- Почему такое использование — почти всегда неудачно. В каких случаях такое уместно?
myXmlDocument.SelectNodes("//mynode"); - Объясните различие между «pull-style parsers» (XmlReader) и «eventing-readers» (Sax)
- В чем различие между XPathDocument и XmlDocument? Опишите ситуацию когда один из них может быть использован над другим.
- В чем различие между XML "Fragment" и XML "Document"
- Что означает — «каноническая» форма XML?
- Почему спецификация XML InfoSet отличается от Xml DOM? Что пытается решить InfoSet?
- Сравните DTD и XSD. В чем они схожи, в чем различны? Что предпочтительнее и почему?
- Поддерживаются ли DTD в System.Xml? Как именно?
- Всякая ли XML Schema может быть представлена в виде графа объектов? А наоборот?
Перевод: Никита Зимин,
ведущий разработчик компании «Деловые программы»
ведущий разработчик компании «Деловые программы»
Комментариев нет:
Отправить комментарий