December 21, 2006

Что должен знать правильный .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 может быть представлена в виде графа объектов? А наоборот?

Оригинал перевода:

http://www.c-gator.ru/articles/what-great-dot-net-developers-ought-to-know-interview-questions/

Оригинал поста на английском:

http://www.hanselman.com/blog/WhatGreatNETDevelopersOughtToKnowMoreNETInterviewQuestions.aspx

December 14, 2006

Spy vvsn.exe

http://www.auditmypc.com/process/vvsn.asp
Config: http://spweb.whenu.com/vvsn/DAEM100501/vsn.cfg


vvsn.exe

vvsn.exe - Here is the scoop on vvsn as it pertains to computer network security. The big question: what is vvsn.exe and is it spyware, a trojan and if so, how do I get rid of vvsn?

vvsn.exe (vvsn) - Details

The vvsn.exe process may watch your actions while you are surfing the internet and report it findings to the author of the program. It will also display annoying popup windows.

vvsn.exe is considered to be a security risk, not only because spyware removal programs flag vvsn as spyware, but also because a number of users have complained about its performance.

vvsn is likely spyware and as such, presents a serious vulnerability which should be fixed immediately! Delaying the removal of vvsn.exe may cause serious harm to your system and will likely cause a number of problems, such as slow performance, loss of data or leaking private information.

vvsn.exe is considered to be a security risk, not only because Adware Removal programs flag vvsn as Adware, but also because there can be privacy issues associated with this product.

vvsn is likely adware and as such, presents an unnecessary risk which should be eliminated! Removing vvsn.exe may cause a number of problems, such as slow performance, loss of data or leaking private information.

Removing vvsn may be difficult.

The Spy Bot database currently registers vvsn.exe to When U.

vvsn.exe is related to save.exe, search.exe.

You should visit our free spyware removal page to make sure your system does not have other programs like vvsn.exe.

VVSN.EXE - Disclaimer

Every attempt has been made to provide you with the correct information for vvsn.exe or VVSN. Many spyware/malware programs use filenames of usual, non-malware programs. If we have included information about vvsn.exe that is inaccurate, we would greatly appreciate your help by updating the spy bot database and we'll promptly correct it.

You should verify the accuracy of information we provided about vvsn.exe. vvsn may have had a status change since this page was published.

December 12, 2006

Remote Desktop session

http://blah.winsmarts.com/2006/05/29/remote-desktop-tricks.aspx

Remote Desktopping in XP connects you to the same session, whereas in 2003 it forces you to create a new connection, I find that really irritating since I could leave a job running at work that I might want to monitor from home. You can easily get around that my passing in the “/console” commandline parameter to the executable msrtc.exe. So the entire command would look like “%SystemRoot%\system32\mstsc.exe MyConn.RDP /Console”, this would connect you to an existing session if you are already logged in.