[NEW] Looking for a job in tech? Companies will find you — just fill in your profile
Close
Rozmowa rekrutacyjna z .NET. 150+ pytań dla Junior, Middle, Senior

Rozmowa rekrutacyjna z .NET. 150+ pytań dla Junior, Middle, Senior

Na stronie DOU umieszczono kilkadziesiąt ofert pracy dla developerów .NET, co świadczy o popularności tej technologii. Zespół redakcyjny DOU zebrał listę pytań najczęściej zadawanych przez developerów .NET swoim kolegom podczas technicznych rozmów kwalifikacyjnych. Powodzenia w przygotowaniach do rozmowy kwalifikacyjnej :)

Pytania rekrutacyjne na Juniora

Ogólne

  1. Wymień podstawowe założenia programowania obiektowego.
  2. Czym jest dziedziczenie, hermetyzacja, abstrakcja, polimorfizm: podaj przykłady (najlepiej z własnego doświadczenia). Z jakiej klasy niejawnie dziedziczą wszystkie klasy w .NET? Czy język C# obsługuje wielokrotne dziedziczenie?
  3. Czym jest rekursja?
  4. Czym jest wyrażenie lambda?
  5. Czym są obliczenia równoległe (wielowątkowość) i do czego służą? Jakie klasy są stosowane?
  6. Czym jest JSON?
  7. Czym jest REST?
  8. Opowiedz o SPA concept.
  9. Z jakich wzorców projektowych GoF korzystałeś?
  10. Na czym polega różnica między metodami GET i POST HTTP?
  11. Jaki problem rozwiązuje Docker? Jakie ma zalety i wady?
  12. Na czym polega zasadnicza różnica między testami jednostkowe (unit test) a testami integracyjnymi?

Obsługa wyjątków

  1. Czym jest Exception?
  2. Do czego służy try, catch, finaly? W jakim przypadku blok finally nie wykonuje się?
  3. Czym jest call stack? Jakie znasz słowa kluczowe?

Platforma .NET

  1. Czym jest ASP.NET?
  2. Jakie są typy Action filters?
  3. Czym jest Web Service?
  4. Czym jest CLR?
  5. Czym jest Garbage Collection na poziomie podstawowym?
  6. Czym jest delegat?
  7. Czym się różni Delegate od Action?
  8. Czym jest LINQ i do czego służy? Podaj kilka przykładów zastosowania LINQ.
  9. Czym jest przestrzeń nazw (namespace) i do czego służy?

Typy danych, kolekcje i struktury danych 

  1. Jakie znasz typy danych?
  2. Jakie znasz proste typy danych?
  3. Czym jest typ Nullable?
  4. Czym są typy referencyjne i typy wartości? Który jest class, a który struct? W jakim obszarze pamięci są przechowywane?
  5. Czym się różni value od reference type? String to reference czy value?
  6. Na czym polega różnica między string builder i string?
  7. Czym są generyki (generics)? Jakie problemy rozwiązują?
  8. Czym jest boxing/unboxing?
  9. Czym jest Array, List, HashSet, Dictionary? Podaj przykłady zastosowania wymienionych struktur danych. Na czym polega trudność operacji (wyszukiwanie, wstawianie i usuwanie)?
  10. Jakie znasz kolekcje?
  11. Do czego służy operator yield?

Klasy, struktury i interfejsy 

  1. Czym jest klasa?
  2. Czym różni się klasa od klasy abstrakcyjnej?
  3. Czym różni się klasa abstrakcyjna od interfejsu? Do czego służą interfejsy i jakie zadania wykonują?
  4. Jakie znasz modyfikatory dostępu?
  5. Na czym polega różnica między klasą zwykłą i statyczną?
  6. Na czym polega różnica między nadpisywaniem metod a słowami kluczowymi new i override?
  7. Na czym polega różnica między const a read only?
  8. Jaka jest różnica między strukturą a klasą. Podaj przykłady struktur.
  9. Czy może egzemplarz struktury przechowywać się w stercie (heap)? Jak to zrobić?

Asynchroniczność 

  1. Czym jest asynchroniczność i czym się różni od wielowątkowości?
  2. Jakie słowa kluczowe służą do programowania asynchronicznego?
  3. Co oznaczają słowa kluczowe async/await? 

Bazy danych

  1. Jaka jest różnica pomiędzy bazą relacyjną a nierelacyjną? Jakie są zalety i wady obu wariantów.
  2. Czym są indeksy w RDBMS?
  3. Jakie typy JOIN występują w SQL?

Testy

  1. Do czego służą testy jednostkowe (unit test)? 
  2. Zalety i wady testowania jednostkowego?
  3. Z jakich trzech bloków logicznych składa się test jednostkowy?

Pytania rekrutacyjne na Middle

Ogólne 

  1. Wpisujesz "google.com" w przeglądarce. Opowiedz dokładnie, co się dzieje w tym momencie na poziomie HTTP?
  2. Jak działa HTTPS?
  3. Czym jest SOLID?
  4. Jakie znasz protokół serializacji i gdzie są stosowane?
  5. Twoim zdaniem czym jest “czysta funkcja”? jakie ma zalety?
  6. Czym jest dependency injection i do czego służy?
  7. Czym jest cohesion i coupling (spójność i powiązanie)?
  8. Czym jest IaaS, PaaS, SaaS i czym się różnią?
  9. Jakie sposoby na debugowanie programu stosujesz?
  10. Jakie znasz wzorce? Wyjaśnij, czym jest każdy z wymienionych wzorców.
  11. Czym wzorzec projektowy Singleton? Dlaczego niektórzy programiści uznają go za antywzorzec?
  12. Do czego służy wzorzec Strategy?
  13. Na czym polega zasadnicza różnica między monolitem a systemem rozproszonym?
  14. Jakie znasz wzorce projektowe systemów rozproszonych?
  15. Jakie są zasady działania Message bus? Dlaczego mogą powstawać zduplikowane komunikaty w kolejkach?
  16. Jakie znasz zasady tworzenia serwisów idempotentnych?
  17. Jak działają metody asynchroniczne? Czy się różni asynchroniczność od równoległości?

Platforma .NET

  1. Blok catch nie zawsze łapie wszystkie wyjątki – o jakie wyjątki chodzi?
  2. Na czym polega różnica między .NET Standard Class Library a .NET Core Class Library?
  3. Na czym polega różnica między odroczonym i natychmiastowym wykonaniem w LINQ. Podaj przykłady.
  4. Do czego służy metoda ConfigureServices w Startup.cs?
  5. Na czym polega różnica między services.AddTransient a services.AddScope w ASP.NET Core?
  6. Czym jest Kestrel?
  7. Opisz ASP.NET MVC request pipeline.
  8. Jak w ASP.NET WebAPI dostosować buforowanie danych (caching) odpowiedzi na żądania HTTP?

Zarządzanie pamięcią

  1. Czym jest stos i sterta? Wymień różnice i zasady działania.
  2. Jak działa Garbage Collection?
  3. Do czego służy słowo zastrzeżone using у C#, skoro .NET ma automatyczne zarządzanie pamięcią? Co ma do tego disposable pattern i po co jest tak skomplikowany pattern do zasobów niezarządzanych i zarządzanych?
  4. Co wyróżnia zasady działania Large Object Heap?

Typy danych, kolekcje i struktury danych

  1. Kiedy jest generowana klasa generyczny konkretnego typu — podczas wykonania programu czy na etapie kompilacji?
  2. Czym jest refleksja
  3. Opowiedz o kolekcji LinkedList<T>. Czym się różni od innych kolekcji?
  4. Czym jest indeksator?
  5. Co to jest immutable object? jakie korzyści wiążą się ze stosowaniem immutable object? Zaproponuj sposób jego implementacji w.NET.
  6. Kiedy używamy StringBuilder, a kiedy string? Jak działa StringBuilder?
  7. Czy jest zrównoważenie drzewa?
  8. Czym są bazy Key-value?
  9. Co to jest funkcja skrótu (hash function) i do czego służą tablice mieszające (hash table)?
  10. Idealna funkcja skrótu – jakie powinna mieć właściwości?
  11. Czym są kolizje i jak sobie z nimi radzić?
  12. Na czym polega trudność operacji CRUD w Dictionary<K,V> w .NET?
  13. Gdzie są przechowywane tablice? Tablice zawierające prymitywne typy danych?
  14. Na czym polega różnica między tablicą (T []) a listą (List<T>)?
  15. Na czym polega różnica między IList<T> a IEnumerable<T>?
  16. Do czego służą Enumerable, Observable, AsyncEnumerable oraz jakie modele zbierania danych implementują?
  17. Na czym polega różnica między IEnumerable a IQueryable?
  18. Czym jest enum flags?

Bazy danych

  1. Opowiedz o postaciach normalnych w systemie zarządzania relacyjną bazą danych (RDBMS).
  2. Czym jest indeks w bazie danych?
  3. Kiedy warto rozważyć wykorzystanie indeksów? Zalety i wady wykorzystywania.
  4. Jakie są rodzaje indeksów? Czym się różnią?
  5. Czym jest ACID?
  6. Jakie wyróżniają poziomy izolacji transakcji?
  7. Czym jest execution plan w MS SQL?
  8. Problem: wykonywania zapytania zabiera bardzo dużo czasu. Jakie są metody zdiagnozowania problemów i rozwiązywania?
  9. W jaki sposób ORM (Entity Framework czy Entity Framework Core) przekodowują C# w język zapytań, przy pomocy którego komunikujemy się z bazą danych? Co do tego służy?

Równoległość 

  1. Do czego służy .ConfigureAwait?
  2. Na przykład, jest serwer WWW, który na podstawie żądania HTTP dokonuje analizy bazy danych. Łącznie na serwerze jest 16 wątków (threads). Każdy HTTP-request wysyła żądanie (request) do bazy danych i czeka na odpowiedź, wtedy wątek zostaje zablokowany. Czy możemy zoptymalizować działanie za pomocą zasobów.NET?
  3. Do czego służy ThreadPool? Opisz mechanikę działania.

Pytania rekrutacyjne na Senior

Ogólne 

  1. Jakie jeszcze podejścia, oprócz programowania obiektowego, stosowałeś (AOP, FP ect.)?
  2. Wymień trzy najtrudniejsze problemy, które musiałeś rozwiązać. Jak to zrobiłeś? Jak doszedłeś do tej decyzji?
  3. Co to jest luźno powiązany kod? W czym jest lepszy od silnie powiązanego? Jak osiągnąć luźniejsze powiązanie kodu?
  4. Jak zastosowanie klas statycznych wpływa na powiązania kodu?
  5. Jak zmierzyć wydajność kodu? Czy mierzenie wydajności wpływa na wydajność?
  6. Do czego służą i jak działają Multi-Stage Builds w Docker?
  7. Jak zrozumieć, że któryś fragment kodu wykorzystuje dużo pamięci lub wykonanie zajmuje zbyt dużo czasu? Zidentyfikuj „wąskie gardła” (bottleneck) w różnych przypadkach? Jakie są sposoby na zmniejszenie zużycia pamięci?
  8. Jakbyś zaimplementował cross-cutting concern (na przykład: logowanie, walidacja, transakcje)?
  9. Opowiedz o Rest Maturity Model.
  10. Czym jest CPU i IO-bound?
  11. Czym jest marshalling?
  12. Jak działa async/await (szczegółowo)? Dlaczego nie należy używać async void?

Platforma .NET

  1. Jak działa lock? Czy wykorzystywać struktury wewnątrz słowa kluczowego “lock”?
  2. Czym jest Expression Tree?
  3. Jak działa Garbage Collection (szczegółowo)? Dlaczego w GC zostały zdefiniowane 3 pokolenia, a nie powiedzmy pięć, dziesięć lub dwa?
  4. Jakbyś zorganizował trasowanie (routing) interfejsów Web API?
  5. Jak w .NET Core można dostosować przechowywanie secrets na komputerach developerów i w środowiskach produkcyjnych?
  6. Jakbyś zorganizował proces CI/CD .NET Core umożliwiający wdrażanie w środowisku chmurowym?
  7. Jak włączyć mechanizm CORS w AspNetCore?

Typy danych, kolekcje i struktury danych

  1. W jaki sposób zostały zaimplementowane generyki?
  2. Jak stworzyć własny typ immutable?
  3. Jak działa IEnumerable<T> (szczegółowo)?
  4. Jaki algorytm jest stosowany w kolekcji STACK?
  5. Jakie struktury danych sam zaimplementowałeś dla platformy .NET? Opowiedz, czym różniły się one od standardowych implementacji.
  6. Czym różni się interfejs od klasy abstrakcyjnej? W jakich przypadkach byłyby używane obydwie opcje?
  7. Dlaczego struktury nie mogą domyślnie zawierać konstruktorów?

Bazy danych

  1. W jaki sposób są przechowywane dane w bazach danych??
  2. Jakie znasz rodzaje baz danych?
  3. Jakie bazy danych warto wykorzystywać i kiedy?
  4. Co to jest denormalizacja?
  5. Kiedy i jakie poziomy izolacji transakcji można wykorzystywać?
  6. W jakie sposób w popularnych systemach zarządzania relacyjną bazą danych (RDBMS) są implementowane ACID (SQL Server, PostgreSQL ect.)? 
  7. Czy musiałeś optymalizować zapytanie w bazie danych? Jeśli tak, to w jaki sposób?
  8. Opisz, co wiesz o potencjalnych problemach, wynikających z równoległych zapytań (parallel query) do bazy danych.
  9. Jaką bazę danych wybrać do implementacji mechanizmu distributed lock? Opowiedz o szczegółach implementacji.

Mikroserwisy

  1. Jakie problemy rozwiązują mikroserwisy?
  2. Jakie są sposoby komunikacji między nimi?
  3. Opowiedz, jakie są sposoby na implementację transakcji rozproszonych w mikroserwisach.
  4. Czym jest circuit breaker?
  5. W jaki sposób będziesz debugować system, składający się z wielu mikroserwisów, jeżeli będziesz musiał prześledzić całą ścieżkę przetwarzania zapytań?
  6. Czym jest broker komunikatów? Czym jest semantyka at-least-once, at-most-once? Czy są jakieś brokery realizujące semantykę exactly-once?
  7. Jaki jest powinien działać kod klienta brokera w zależności od wybranej semantyki?
  8. Jakie znasz narzędzia do obsługi kolejek (zarówno w .NET, jak i osobne produkty), jakie narzędzie / produkt wybrałbyś i dlaczego?

MS Azure

  1. Jakie rodzaje serwisów występują w Service Fabric?
  2. Jakie występują ograniczenia i cechy charakterystyczne Azure Table Storage?
  3. Jak poradzić sobie z problemem zimnego startu Azure Functions?
  4. Na czym polega różnica między kolejkami a tematami w Azure Service Bus?

Zadania praktyczne

Junior only

  1. Opisz, jakbyś stworzył kalkulator. Jeżeli trzeba będzie dodać rzymski system liczenia, co będziesz robił?
  2. Napisz program, który według założenia powinien stwierdzać, czy liczba jest liczbą pierwszą.
  3. Wyszukaj element najmniejszy tablicy.
  4. Uporządkuj struktury folderów w systemie plików.
  5. Napisz program, symulujący fizz-buzz.
  6. Opowiedz, co robi poniższy kod i zaproponuj sposoby na poprawę jego jakości.

a)

public bool IsArrayEmpty(string[] array)
{
  if (array.Length > 0)
    return false;
  else
    return true;
}


b)

protected string GetClass(object url)
{
  string result = string.Empty;
 
  if (SiteMap.CurrentNode != null && SiteMap.CurrentNode.Url == url.ToString())
    result = "class=\"active\"";
 
  return result;
}

Middle

  1. Napisz program, który służy do replikacji ciągu Fibonacciego dla z góry określonej liczby.
  2. Zaprojektuj bazę danych lekarzy i pacjentów w SQL. Stwórz stored procedure albo zapytanie w SQL, które zwróci lekarzy, którzy mają więcej niż N pacjentów.
  3. Sprawdź kolekcję pod kątem występowania duplikatów.
  4. Zaprojektuj thread-safe klasę Singleton w C#.
  5. Trzeba zapisać jakąś encję (entity) w bazie danych і wysłać komunikat do brokera komunikatów. Jak to zrobić i jednocześnie zminimalizować ryzyko utraty danych?
  6. Są trzy serwisy. Wysyłane jest żądanie HTTP do pierwszego serwisu. Pierwszy powinien zapisywać dane do drugiego serwisu, a drugi do trzeciego. W jaki sposób możemy zagwarantować, że w przypadku tak złożonej komunikacji dane nie zostaną utracone? W jakie sposób można zapobiec duplikacji?
  7. Czy poniższy kod będzie działał i dlaczego?

a)

SomeClass myClass = null;
myClass.SomeMethod();


b)

var table = GetTable();
table.Draw();
…
private SomeClass GetTable()
{
  using(var table = new SomeClass())
  {
    table.ID = "www";
    table.Width = "95%";
    table.Controls.Add(tr);
 
    return table;
  }
}

Senior

  1. Jakbyś zaprojektował serwer FTP? Web serwer? Hosting obrazków z podziałem praw dostępu? System, składający się z front-office i back-office? Utwórz klon dowolnej popularnej sieci społecznościowej (Instagram, Facebook ect.)
  2. Załóżmy, że mamy encję (entity) umowy (Bid). Umowa zawiera listę partnerów, z którymi ta umowa jest zawierana. Umowy są przechowywane w serwisie umów (bidding service), a partnerzy – w swoim serwisie (partners service). I kiedy jest wyświetlana lista umów, ekran startowy powinien pokazywać liczbę partnerów. Jakbyś zaprojektował zapisywanie i przedstawianie tego licznika?
  3. Zadanie z LINQ: z wyjściowej kolekcji danych trzeba otrzymać nową kolekcją spełniającą określone wymagania (na przykład, posortowaną, niezawierającą duplikatów).
  4. Napisz program, który ma sprawdzić czy diagram sudoku (9x9) jest poprawnie wypełniony.
  5. Zaimplementuj swój Select, Where, SelectMany ze wszystkimi charakterystykami LINQ (odroczone wykonanie, natychmiastowa (eager) weryfikacja danych wyjściowych).
  6. Za pomocą LINQ napisz metodę, która zwróci elementy kolekcji podzielne bez reszty przez N, posortowane od największej wartości do najmniejszej. Sygnatura metody: List<int> Filter(IEnumerable<int> collection, int n);.
  7. Napisz funkcję, która zwróci sumę wszystkich parzystych elementów tablicy przekazanej do funkcji (JavaScript). 
Avatar

This site uses cookies to offer you a better browsing experience.

Find out more on how we use cookies and how to change cookie preferences in our Cookies Policy.

Customize
Save Accept all cookies