Henselmanuv seznam IT otázek pro pohovory
Když jsem hledal práci, tak jsem se snažil připravit na všemožné otázky z oblasti programování. Na internetu jsem narazil na velice inspirativní článek What Great developer ought to know. Článek obsahuje velice široký seznam otázek z oblasti programování s Net frameworkem. Během přípravy jsem se dostal do stádia, kdy jsem se dopracoval k většině odpovědí. Netvrdím, že odpovědi jsou stoprocentně pravdivé a dokonalé a právě i proto je chci po malých částech publikovat zde na blogu s očekáváním jisté reakce od širokého publika. Takže od nynějška se budete moci setkávat s malými dávkami otázek od pana Henselmana.
A tady je prvních pět:
1. Popište rozdíl mezi Vláknem a Procesem. ( Describe the difference between a Thread and a Process )
Z toho co jsem našel nejsem moc rozumný, ale odpovědí by mohl být rozdíl v přístupu k paměti. Proces má definován svůj prostor v paměti a tím je jeho oblast působení vymezena. Kdežto Vlákno má svůj prostor v paměti taktéž, ale navíc může přistupovat i do paměťových prostor ostatních Vláken.
Z hlediska pojmů, je Proces kolekce Vláken.
2. Co je to Windows služba a jak se liší od standartní exe aplikace. ( What is a Windows Service and howdoes its lifecycle differ from a "standard" EXE )
Klasický EXE soubor představuje v tomto případě uživatelsky spustitelnou aplikaci, oproti tomu Windows služba představuje aplikaci, která je spouštěná systémově, tedy bez uživatelské interakce.
3. Jaká je maximální velikost paměti přiřazené jednomu procesu, kterou může Windows poskytnout? Jeodlišná od maximální virtuální paměti systému? Jaký to důsledek na návrh systému. ( What is the maximumamount of memory any single process on Windows can address? Is this different than the maximum virtualmemory for the system? How would this affect a system design? )
Platné pro 32 bit operační systémy, respektive Microsoft OS. Zkráceně, standardně je v systému dostupná paměť 4GB. Dělená v poměru 50 ku 50 mezi procesy a systémem. Samozřejmě to závisí na instalované velikosti RAM paměti. Pro serverové OS lze nastavit dělení 75 ku 25.
O tomhle měl pár članků RH.
4. Popište rozdíl mezi EXE a DLL. ( What is the difference between an EXE and a DLL? )
Podle mě jediný rozdíl je v tom, že EXE obsahuje spouštěcí instrukci oproti DLL. Takže jediný rozdíl je že EXE spustíte z uživatelského rozhraní, kdežto DLL musíte spustit z programátorského prostředí nebo pomocí nějaké utility, které aktivuje potřebné metody v DLL.
5. Co je to strong-typing versus weak-typing? Který je preferován a proč? ( What is strong-typing versusweak-typing? Which is preferred? Why? )
První otázkou, která by se měla nejdříve odpovědět je: Kde se vůbec vyskytuje weak a strong typing? Předpokládám, že výskyt strong-typing je vcelku jasný. Jde ve své podstatě o většinu objektů v frameworku, třeba X509Certificate, System.Guid a podobně. Jde spíše o výskyt weak-type objektů. Dle mne by to mohly být například objekty, které vrací select z databáze nebo objekty v kolekcích nebo DataTable.
Strong-typing preferuje určení typu objektu v co nejranějším stádiu, tj například hned při čtení sql adaptéru při selectu z databáze. Oproti tomu weak-typing načte výstup z adaptéru jako objekty a přetypuje je až při plnění hodnoty web controlu v aspx stránce.
Klasický příklad weak-typing je podle mě kolekce v Net 1.1. Při využití ArrayList šlo vlastně o kolekci netypových objektů, tedy week-type kolekce. Proto se vytvářely strong-type ArrayListy děděním a přepsáním hlavních metod (Add, Remove,...) s prováděním typové kontroly. Tento problém vyřešil framework Net 2.0 a jeho generické objekty.
Prosím Vás, hlavně to neberte jako dogmata, to co tu píši. A pokud máte jiný názor, napište smysluplnou reakcido diskuze k článku.