OPIS TECHNOLOGII – WIEDZA DLA REKRUTERA: NA TAPECIE .NET i C#
09 Cze

OPIS TECHNOLOGII – WIEDZA DLA REKRUTERA: NA TAPECIE .NET i C#

Czym tak naprawdę jest .NET? Niestety nie ma jednoznacznej odpowiedzi ponieważ .NET opisuje szereg różnych aspektów technologicznych np. serwery obsługujące konkretne rozwiązania. Sam .NET został stworzony przez światowego giganta IT – firmę Microsoft w pełni zarządzaną do 2000 roku przez Bill’a Gates’a.

.NET jest niczym innym jak środowiskiem, które wykorzystywane jest przez programistów do pisania programów w technologii C# (czyt. si szarp, a nie jak niedoświadczeni rekruterzy mówią „ce kratka” ). Sama platforma przez długi czas nie była na otwartej licencji, ale z uwagi na naciski ze strony społeczności open source, Microsoft w 2014 roku zdecydował się otworzyć technologię i udostępnić ją w lwiej części na licencji open source.

Sam C# jest więc językiem programowania, a sam .NET framework’iem, na którym oparty jest C#. Często więc szukając ogłoszenia o pracę możesz zetknąć się z wymaganiami danej organizacji co do znajomości obu tych technologii: samej platformy .NET jak i języka programowania C#. Sama platforma .NET jest powiązana również z innymi technologiami jak C++ czy Delphi (swoją drogą język C# jest bardzo podobny do C++ oraz C ponieważ powstał na ich bazie). C# jest dość łatwy do nauczenia dla początkujących programistów ponieważ jest wyższego poziomu w porównaniu do C. Sam programista .NET nie musi znać C#’a, ale już C# Developer musi znać .NET ponieważ sam C# wymaga środowiska do uruchomienia i działania. Kod napisany w C# jest kompilowany do języka Intermediate Language (IL), czyli kodu pośredniego, wykonywanego w środowisku uruchomieniowym .NET. Samo środowisko uruchomieniowe (CLR – Common Language Runtime) pozwala napisanym programom w .NET zostać uruchomionymi na każdym sprzęcie, który wspierany jest przez .NET. C# jest językiem obiektowym, będącym rozszerzeniem C i C++, pozwalającym budować wiele różnych rodzajów aplikacji o czym szerzej poniżej. Największym konkurentem C# jest Java, mająca za sobą potężną społeczność developerów oraz wiele komponentów, to jednak to C# jest językiem, który świetnie radzi sobie na platformie Microsoftu, a jak wiemy jest to światowy gigant jeżeli chodzi o systemy operacyjne.

Z uwagi na swoją stabilność C# wykorzystywany jest głównie przez duże firmy, w Polsce są to np. SII, Volvo, X-kom, Allegro. Duże firmy mają w tym oczywiście swój cel – bezpieczeństwo oraz stabilność to fundamenty ich wyboru, ale istnieje także szereg innych jak chociażby mnogość komponentów i napisanych fragmentów kodu przez samą społeczność .NET. Dzięki temu programiści nie muszą długi czas głowić się nad rozwiązaniem konkretnego problemu tylko mogą skorzystać z gotowego rozwiązania udostępnionego przez sieć. Sam .NET jako platforma firmy Microsoft, działa (co jest logiczne) bardzo dobrze ze środowiskiem Windows co przekłada się na dużą prostotę w samej konfiguracji. C# oparty o .NET jest językiem dość łatwym do nauczenia przez co odchodzi też wiele trywialnych błędów podczas samej kompilacji. C# ma też kilka ciekawych komponentów, jeden z nich do zarządzania pamięcią i alokacją zasobów jak Garbage Collector, czyli manager pamięci, zwalniający zasoby wynikające z nieużywanych danych.

Krótka charakterystyka technologii oferowanych przez platformę .NET:

  • ASP.NET – technologia pozwalająca tworzyć usługi webowe oraz aplikacje internetowe;
  • .NET Core – technologia wykorzystywana dla aplikacji wymagających multiplatformowości oraz dużego obciążenia. Nie pozwala na programowanie aplikacji desktopowych.;
  • Winforms (Windows Forms) – pozwala tworzyć aplikacje desktopowe, uruchamiane w środowisku Windows takie jak kontrolki czy elementy GDI;
  • .NET Remoting – biblioteka komunikacyjna pozwalająca na wywoływanie zdalnych obiektów .NET;
  • Enterprise Services – biblioteka pozwalająca tworzyć komponenty COM+ uruchamiane na serwerze aplikacyjnym;
  • ADO.NET – biblioteka dostępowa do baz danych, oparty jest o nią Entity Framework.

Możliwe pytania do zadania potencjalnemu kandydatowi:

  1. Jak duże były projekty, które tworzyłeś/aś?
  2. Czym jest środowisko uruchomieniowe .NET?
  3. Jaki poziom doświadczenia w .NET posiadasz, jak się oceniasz – junior/mid/senior?
  4. Czy posiadasz certyfikaty pozwalające ocenić Twoją znajomość środowiska? Jeśli tak, jakie?
  5. Jakie są różnice pomiędzy .NET, a .NET Core?
  6. Jakie są różnice pomiędzy ASP.NET MVC, a winforms? Podaj najważniejszą.
  7. W jakich firmach pracowałeś – czy były to korporacje czy raczej mniejsze firmy, do 30 osób?
  8. Co stanowi największe wyzwanie w samej technologii .NET? Dlaczego nie jest ona idealna pod każdym względem?