Henselmanuv seznam IT otázek pro pohovory III.
Po nějaké době se vracím k seriálu o tématům, které by měl znát, alespoň všeobecně, každý Net programátor pro úspešný průběh pohovoru. Tady je dnešní dávka.
11. Popište rozdíl mezi výrazy Class a Interface
Interface definuje seznam dostupných metod a proměnných, které budou dostupné pro všechny zděděné implementace. Mimo tuto definici neobsahuje žádný jiný kód.
Class neboli třída, obsahuje implementaci tříd a proměnných definovaných na základě zděděného Interface nebo vlastní implementace. Třída tedy obsahuje vlastní kód, který provádí vlastní provedení instrukcí.
12. Co je to reflection neboli reflexe
Reflection je proces při kterém dochází během Runtimu k dynamickému vytváření tříd. Objekty lze vytvářet dle předem známých jmen tříd včetně verze a klíče nebo dynamicky pomocí načtení dat přímo z požadované knihovny.
Assembly nebo-li knihovny obsahující vytvářené objekty musí být podepsány pomocí strong-name. Například jako je tato knihovna z Enterprise library:
Příklad použití reflexe: [attachment=170:ReflectionEx.zip]
13. Jaký je rozdíl mezi XML Web Service používající ASMX a Net Remoting používající SOAP?
Základním rozdílem je interoperabilita. Synonymum Interoperability je přenosnost a použitelnost objektu mezi různými systémy. Net remoting lze použít pouze pro komunikaci mezi Net komponentami.
WebService je nezávislé na systému a podporuje komunikaci mezi všemi systémy. Realita však trochu kulhá, jelikož při použití většího množství prvků zabezpečení dochází k nekompatibilitě některých technologií. Ale toto je problém implementace, né definice.
Je zde ještě jeden rozdíl a to, že Net remoting v tomto případě používá SoapFormatter, kdežto WebService používá XmlFormatter.
14. Jsou systémové typy reprezentující XmlSchema a CLS isomorfické?
Předně to chce znát význam slova Isomorfní. Synonymem by mohla být slova: totožné, kompatibilní, přenositelné.
Pojem XmlSchema je snad dostatečně znám, ale přesto krátce : jedná se o skupinu pravidel, jež definují strukturu a typy jednotlivých kořenů a elementů v XML dokumentu.
Pojem CLS představuje zkratku pro jazyk, na kterém beží všechny Dot.Net jazyky (C#, VB.Net, C++.Net).
Odpověď na otázku je Ano, jsou isomorfní. Názvy se liší, ale interpretace je stejná. Pro porovnání je zde ukázka:
- xs:boolean == bool, System.Boolean
- xs:string == string, System.String
- xs:decimal == decimal, System.Decimal
15. Jaký je rozdíl mezi early-binding a late-binding?
Rozdíl je v tom, kdy je známa hodnota proměnné. V případě early binding je hodnota známá již v době kompilace. V případě late binding je hodnota přiřazena až během běhu aplikace.
Late binidng se používá hlavně kvůli tomu, aby se nezatěžoval systém informacemi, které momentálně nepotřebuje. Ušetříme tak čas a paměť.
Ideálním příkladem jsou kolekce, které jsou většinou datově náročné a je nutné je nahrát online a případně i filtrovat dle vstupních kritérií.
//příklad na Early binding
private string _name = "MojeJmeno";//hodnota je nastavena
public string Name
{
get { return _name; }
}
//příklad na Late bindind
private string _title; //hodnota je prázdná a je načtena až po prvnim přístupu k proměnné
public string Title
{
get{
if (System.String.IsNullOrEmpty(_title)){
_title = "Muj titul";
}
return _title;
}
}
}