Niebędąc absolwentem informatyki, jak przetrwać jako programista
#14. Często zadawane pytania dotyczące umiejętności technicznych na rozmowach kwalifikacyjnych dla początkujących programistów
[Obszary pamięci głównej]
- Obszar kodu: Obszar, w którym przechowywany jest kod źródłowy programu. Procesor pobiera instrukcje (źródła, funkcje, instrukcje sterujące) zapisane w obszarze kodu i je przetwarza. Na przykład, gdy program napisany w języku C jest wykonywany, w obszarze kodu przechowywany jest kod źródłowy tego programu.
- Obszar danych: Obszar, w którym przechowywane są zmienne globalne i statyczne. Jest on alokowany wraz z uruchomieniem programu i istnieje do momentu jego zakończenia. Na przykład, gdy program napisany w języku C jest wykonywany, w obszarze danych przechowywane są zmienne globalne lub statyczne zadeklarowane w tym programie.
- Obszar stosu: Obszar pamięci tymczasowej używany przez program. Przechowywane są w nim zmienne lokalne i parametry funkcji związane z wywołaniem funkcji. Jest on alokowany wraz z wywołaniem funkcji i znika po jej zakończeniu. Na przykład, gdy wywoływana jest funkcja w języku C, zmienne lokalne lub parametry używane w tej funkcji są alokowane w obszarze stosu.
- Obszar sterty: Obszar, w którym użytkownik dynamicznie alokuje i zwalnia przestrzeń pamięci. Na przykład, gdy w języku C używana jest funkcja malloc() do dynamicznego alokowania pamięci, alokowany obszar pamięci jest przechowywany w obszarze sterty.
- Stos: Struktura danych działająca w oparciu o zasadę LIFO (Last In, First Out – ostatni na wejściu, pierwszy na wyjściu). Na przykład, przycisk "Wstecz" w przeglądarce internetowej działa podobnie jak stos. Poprzednio odwiedzone strony są przechowywane na stosie, a po kliknięciu przycisku "Wstecz" wyświetlana jest ostatnio zapisana strona.
- Kolejka: Struktura danych działająca w oparciu o zasadę FIFO (First In, First Out – pierwszy na wejściu, pierwszy na wyjściu). Na przykład, czekanie w kolejce po odbiór numerka w banku działa podobnie jak kolejka. Osoba, która przyszła pierwsza, jest obsługiwana jako pierwsza, a osoba, która przyszła ostatnia, jest obsługiwana jako ostatnia.
- Drzewo: Struktura danych służąca do reprezentowania danych w hierarchicznej strukturze. Na przykład, struktura DOM (Document Object Model) w HTML jest podobna do drzewa. Struktura strony HTML jest reprezentowana za pomocą drzewa, które rozpoczyna się od węzła głównego (tag html) i kolejno rozgałęzia się na podwęzły.
- Kopiec: Jeden z rodzajów drzew binarnych, podzielony na kopiec maksymalny i minimalny. Na przykład, w kolejce priorytetowej, dane o najwyższym priorytecie są umieszczane w korzeniu kopca, a dane o niższym priorytecie w węzłach podrzędnych. Jest to przykład kopca maksymalnego.
- RDBMS (Relacyjny System Zarządzania Bazami Danych): Baza danych, która definiuje i zarządza danymi w sposób strukturalny, wykorzystując ścisły schemat. Dane mogą być przechowywane w sposób rozproszony, a ich modyfikacja jest łatwa. Przykłady RDBMS to MySQL, Oracle, MS-SQL.
- NoSQL: Baza danych, która przechowuje i zarządza danymi za pomocą elastycznego schematu. Jest odpowiednia do przetwarzania i przechowywania dużych ilości danych, a także charakteryzuje się wysoką skalowalnością. Przykłady NoSQL to MongoDB, Cassandra, HBase.
[Programowanie proceduralne i obiektowe]
- Programowanie proceduralne: Technika programowania, w której nacisk kładziony jest na sekwencyjne przetwarzanie. Języki takie jak C i Pascal są językami proceduralnymi.
- Programowanie obiektowe: Metoda przetwarzania danych i procedur w sposób logiczny, wykorzystując koncepcję obiektów (Object). Języki takie jak Java, C++ i Python są językami obiektowymi. Na przykład, w programie symulacji samochodu, samochód może być reprezentowany jako obiekt, a jego atrybuty (kolor, przyspieszenie itp.) jako dane, a funkcje (jazda, zatrzymanie itp.) jako metody.
[Nadpisywanie (Overriding) i przeciążanie (Overloading)]
- Nadpisywanie (Overriding): Ponowne zdefiniowanie metody z klasy nadrzędnej w klasie podrzędnej. Podczas wywoływania metody z klasy nadrzędnej w klasie podrzędnej, wykonywana jest metoda zdefiniowana w klasie podrzędnej, a nie w nadrzędnej. Na przykład, metoda toString() w Javie jest przykładem nadpisywania.
- Przeciążanie (Overloading): Definiowanie wielu metod o tej samej nazwie, ale z różnymi typami i liczbą parametrów. W zależności od parametrów wywoływana jest odpowiednia metoda o tej samej nazwie. Na przykład, metoda print() w Javie jest przykładem przeciążania.
[Algorytmy wymiany stron]
- FIFO (First In, First Out): Wymiana strony, która była załadowana do pamięci fizycznej najdłużej. Działanie "zamknięcia" w pasku zadań w systemie operacyjnym jest podobne do algorytmu FIFO. Program uruchomiony jako pierwszy jest zamykany jako ostatni.
- LRU (Least Recently Used): Wymiana strony, która była używana najmniej ostatnio. Aplikacja zamykająca stare aplikacje, które są rzadko używane, działa podobnie jak algorytm LRU.
- LFU (Least Frequently Used): Wymiana strony, która była odwoływana najmniej razy. Na przykład, funkcja zamykania kart w przeglądarce, która zamyka kartę, która była używana najmniej razy, działa podobnie jak algorytm LFU.
- MFU (Most Frequently Used): Wymiana strony, która była odwoływana najczęściej. Algorytm MFU jest rzadko używany.
- Proces: Jednostka wykonywania pracy przydzielona przez system operacyjny, reprezentująca program. W przypadku jednoczesnego wykonywania wielu procesów, każdy z nich otrzymuje niezależny obszar pamięci i procesor.
- Wątek: Jednostka wykonywania pracy w ramach procesu, współdzieląca zasoby przydzielone procesowi. Na przykład, każda karta w przeglądarce internetowej działa jako osobny wątek, a nie proces.
- Warstwa aplikacji: Warstwa łącząca użytkownika z siecią. Zawiera protokoły takie jak HTTP, FTP, SMTP.
- Warstwa prezentacji: Warstwa definiująca sposób reprezentacji danych. Zawiera protokoły takie jak JPEG, MPEG, SSL.
- Warstwa sesji: Warstwa zarządzająca sesjami między dwoma komunikującymi się systemami.
- Warstwa transportowa: Warstwa odpowiedzialna za przesyłanie danych. Zawiera protokoły takie jak TCP, UDP.
- Warstwa sieciowa: Warstwa odpowiedzialna za ustalanie ścieżki przesyłania danych. Zawiera protokoły takie jak IP, ICMP.
- Warstwa łącza danych: Warstwa przesyłająca dane na podstawie fizycznego adresu (adres MAC). Zawiera protokoły takie jak Ethernet, Token Ring.
- Warstwa fizyczna: Warstwa odpowiedzialna za połączenie fizyczne i medium transmisyjne.
- TCP: Usługa zorientowana na połączenie, zapewniająca niezawodne przesyłanie danych. Ustanawia połączenie za pomocą 3-kierunkowego uściślenia (3-way handshaking) i zrywa je za pomocą 4-kierunkowego uściślenia (4-way handshaking). Na przykład, podczas logowania do witryny lub przesyłania plików używane jest TCP.
- UDP: Usługa niezorientowana na połączenie, która nie wymaga procedury sygnalizacyjnej do przesyłania danych. Charakteryzuje się niższą niezawodnością, ale wyższą prędkością przetwarzania. Na przykład, w przypadku strumieniowania wideo lub gier online, gdzie ważna jest szybka transmisja, używany jest UDP.
Komentarze0