투잡뛰는 개발 노동자

[Dla osób bez informatycznego wykształcenia, jak przetrwać jako programista] 14. Podsumowanie często zadawanych pytań na rozmowach kwalifikacyjnych dla początkujących programistów

  • Język oryginalny: Koreański
  • Kraj: Wszystkie krajecountry-flag
  • TO

Utworzono: 2024-04-03

Utworzono: 2024-04-03 20:38

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.

[Struktury danych]

  • 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 i NoSQL]

  • 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.

[Procesy i wątki]

  • 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.

[OSI 7Layer]

  • 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 i UDP]

  • 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