Pytanie |
Odpowiedź |
Która cecha najlepiej opisuje filozofię projektową języka C? rozpocznij naukę
|
|
Duża kontrola nad sprzętem i pamięcią, „C ufa programiście”
|
|
|
W jakich obszarach język C jest szczególnie istotny? rozpocznij naukę
|
|
Systemy operacyjne, sterowniki, embedded oraz HPC
|
|
|
Która wersja języka C była pierwszym oficjalnym standardem ISO/ANSI? rozpocznij naukę
|
|
|
|
|
Dlaczego Dennis Ritchie stworzył język C? rozpocznij naukę
|
|
aby przepisać system UNIX z asemblera na język bardziej przenośny i czytelny
|
|
|
Które stwierdzenie najlepiej wyjaśnia, dlaczego C uznawany jest za język przenośny? rozpocznij naukę
|
|
ponieważ ten sam kod źródłowy można kompilować na wielu platformach dzięki abstrakcyjnej maszynie C
|
|
|
Co najlepiej opisuje język programowania według prezentacji? rozpocznij naukę
|
|
Formalny system zapisu algorytmów i struktur danych zrozumiały dla komputera, Most między myśleniem człowieka a wykonaniem przez maszynę
|
|
|
Które poziomy języków programowania zostały wyróżnione? rozpocznij naukę
|
|
Język maszynowy, Assembler, Język wysokiego poziomu
|
|
|
Co jest cechą języków wysokiego poziomu? rozpocznij naukę
|
|
Abstrakcja od szczegółów sprzętowych, Czytelność kodu, Przenośność między platformami
|
|
|
Które języki są zwykle interpretowane? rozpocznij naukę
|
|
|
|
|
Jakie etapy obejmuje praca kompilatora i linkera? rozpocznij naukę
|
|
Analiza leksykalna, Parsowanie, Optymalizacja, Linkowanie
|
|
|
Co oznacza paradygmat programowania? rozpocznij naukę
|
|
Zbiór zasad i wzorców tworzenia programów, Sposób organizacji i dekompozycji problemów, Model myślenia o danych i przepływie sterowania
|
|
|
Które paradygmaty należą do głównych klasyfikacji? rozpocznij naukę
|
|
Imperatywny, Deklaratywny, Obiektowy, Funkcyjny
|
|
|
Czym charakteryzuje się paradygmat deklaratywny? rozpocznij naukę
|
|
Opisuje co osiągnąć, a nie jak. Ukryta kontrola przepływu
|
|
|
Dlaczego warto znać wiele paradygmatów? rozpocznij naukę
|
|
Lepsze dopasowanie narzędzia do problemu. Szersze spojrzenie na projektowanie rozwiązań. Łatwiejsza współpraca w zespołach
|
|
|
Które języki są przykładami języków wieloparadygmatowych? rozpocznij naukę
|
|
Python. JavaScript. Scala
|
|
|
Które osoby są bezpośrednio związane z powstaniem języka C? rozpocznij naukę
|
|
Dennis Ritchie. Ken Thompson
|
|
|
Jakie były główne cele stworzenia języka C? rozpocznij naukę
|
|
Umożliwienie przenośnego tworzenia systemów operacyjnych. Zastąpienie asemblera językiem bardziej czytelnym
|
|
|
Które stwierdzenia opisują symbiozę C i UNIX-a? rozpocznij naukę
|
|
UNIX wymagał przenośnego języka. C zapewnił abstrakcję i kontrolę nad sprzętem. UNIX został przepisany w C
|
|
|
Które standardy języka C są wymienione w historii standaryzacji? rozpocznij naukę
|
|
ANSI C (C89). C99. C11. C23
|
|
|
Jakie języki powstały lub były silnie inspirowane językiem C? rozpocznij naukę
|
|
|
|
|
W jakich obszarach C jest szczególnie istotny? rozpocznij naukę
|
|
Systemy operacyjne. Mikrokontrolery i IoT. HPC i obliczenia naukowe
|
|
|
Które cechy należą do filozofii języka C? rozpocznij naukę
|
|
Prostota. Pełna kontrola nad pamięcią. Wysoka wydajność
|
|
|
Co oznacza niskopoziomowa kontrola w C? rozpocznij naukę
|
|
Możliwość operowania wskaźnikami. Bezpośredni dostęp do adresów pamięci. Możliwość manipulacji bajtami
|
|
|
Dlaczego C jest uznawany za język deterministyczny? rozpocznij naukę
|
|
Brak garbage collectora. Statyczne typowanie. Przewidywalny czas wykonania
|
|
|
Co zwiększa przenośność kodu w C? rozpocznij naukę
|
|
Abstrakcyjna maszyna C. Biblioteka standardowa. Dostępność kompilatorów na wielu platformach
|
|
|
Które elementy należą do typowej struktury programu C? rozpocznij naukę
|
|
Dyrektywy preprocesora. Deklaracje globalne. Funkcja main()
|
|
|
Które typy należą do podstawowych w C? rozpocznij naukę
|
|
|
|
|
Jakie operatory służą do pracy ze wskaźnikami? rozpocznij naukę
|
|
& (operator adresu). * (operator dereferencji)
|
|
|
Jakie etapy obejmuje proces kompilacji programu w C? rozpocznij naukę
|
|
Preprocesor. Kompilator. Assembler. Linker
|
|
|
Dlaczego język C jest uznawany za fundament współczesnej informatyki? rozpocznij naukę
|
|
Jądra systemów operacyjnych są w nim napisane. Stanowi podstawę wielu innych języków. Zapewnia wysoką wydajność i kontrolę
|
|
|
Co w praktyce oznacza zasada „zero-cost abstractions” w C++? rozpocznij naukę
|
|
że abstrakcje, jeśli są poprawnie użyte, mogą zostać całkowicie zoptymalizowane przez kompilator i nie generować dodatkowego kosztu względem kodu niskopoziomowego
|
|
|
Który zestaw kosztów jest bezpośrednio związany z użyciem funkcji wirtualnych w C++? rozpocznij naukę
|
|
dodatkowy wskaźnik vptr w obiekcie, pośredni skok przy wywołaniu oraz utrudnione optymalizacje (np. inline)
|
|
|
Dlaczego określenie C++ jako języka „wieloparadygmatowego” ma istotne znaczenie praktyczne, a nie wyłącznie teoretyczne? rozpocznij naukę
|
|
Ponieważ programista może świadomie dobierać paradygmat (proceduralny, obiektowy, generyczny, funkcyjny) do charakteru problemu, kontrolując jednocześnie koszty wykonania i model pamięci
|
|
|
Jaki jest kluczowy efekt wprowadzenia semantyki przenoszenia w C++11? rozpocznij naukę
|
|
Redukcja kosztu operacji na obiektach posiadających zasoby z O(n) do O(1) poprzez transfer własności zamiast kopiowania
|
|
|
Dlaczego przypisanie obiektu klasy pochodnej do obiektu klasy bazowej przez wartość jest uznawane za błąd projektowy? rozpocznij naukę
|
|
Ponieważ prowadzi do utraty części obiektu (slicing) i uniemożliwia poprawne działanie polimorfizmu
|
|
|
Jaki jest główny cel reguły zera (Rule of Zero) w nowoczesnym C++? rozpocznij naukę
|
|
Unikanie ręcznego zarządzania zasobami poprzez delegowanie odpowiedzialności do obiektów RAII, co eliminuje potrzebę implementacji destruktorów i konstruktorów kopiujących/przenoszących
|
|
|
Dlaczego referencje w C++ są uznawane za bezpieczniejszą abstrakcję niż wskaźniki, mimo że sprzętowo są realizowane podobnie? rozpocznij naukę
|
|
Ponieważ nie mogą być puste ani ponownie przypisane po inicjalizacji, co eliminuje całą klasę błędów logicznych bez dodatkowego kosztu wykonania
|
|
|
Co odróżnia RAII w C++ od manualnego zarządzania zasobami znanego z języka C w kontekście przewidywalności wykonania? rozpocznij naukę
|
|
powiązanie czasu życia zasobu z czasem życia obiektu gwarantuje deterministyczne zwalnianie zasobów przy opuszczaniu zakresu, także w obecności wyjątków
|
|
|
Które cechy zostały wprowadzone lub rozszerzone w standardzie C99? rozpocznij naukę
|
|
Możliwość deklarowania zmiennych w dowolnym miejscu bloku. Komentarze jednoliniowe //. Nagłówek <stdint. h> z typami o stałej szerokości
|
|
|
Które modele danych są poprawnie sparowane z rozmiarami typów? rozpocznij naukę
|
|
ILP32 → int, long, pointer = 32 bity. LP64 → long i pointer = 64 bity, int = 32 bity... LLP64 → long long i pointer = 64 bity, int i long = 32 bity
|
|
|
Które elementy wchodzą w skład minimalnej struktury programu w C? rozpocznij naukę
|
|
Dyrektywy preprocesora. Funkcja main(). Wartość zwrotna programu (exit code)
|
|
|
Które z poniższych są tokenami według procesu tokenizacji? rozpocznij naukę
|
|
Identyfikatory. Słowa kluczowe. Literały.
|
|
|
Które stwierdzenia o komentarzach w C są prawdziwe? rozpocznij naukę
|
|
Komentarze blokowe nie mogą być zagnieżdżane - Komentarze // wprowadzono w C99 - Komentarze wieloliniowe zaczynają się od /*
|
|
|
Które instrukcje są poprawnymi instrukcjami w C? rozpocznij naukę
|
|
Instrukcja zakończona średnikiem - Blok w {} - Pusty średnik;
|
|
|
Które typy zmiennych zachowują wartość między wywołaniami funkcji? rozpocznij naukę
|
|
Zmienne statyczne - Zmienne globalne
|
|
|
Jakie znaczenie mają kwalifikatory const i volatile? rozpocznij naukę
|
|
const zabrania modyfikacji wartości - volatile informuje o możliwych zmianach spoza programu
|
|
|
Które typy zapewniają dokładną szerokość bitową? rozpocznij naukę
|
|
|
|
|
Które stwierdzenia o Two’s Complement są prawdziwe? rozpocznij naukę
|
|
Najstarszy bit jest bitem znaku - Negacja = inwersja bitów + 1 - Zakres: −2^(N−1) do 2^(N−1)−1
|
|
|
Które dotyczą liczb zmiennoprzecinkowych IEEE-754? rozpocznij naukę
|
|
float ma 32 bity - double ma 52 bity mantysy - Porównywanie przez == jest niebezpieczne
|
|
|
Które stwierdzenia o wyrównaniu danych są prawdziwe? rozpocznij naukę
|
|
Struktury są wyrównywane do największego elementu - Padding jest dodawany automatycznie - Operator sizeof zwraca rozmiar w bajtach
|
|
|
Jak realizowany jest typ logiczny w C99? rozpocznij naukę
|
|
Typ _Bool - Makra true i false z <stdbool. h>
|
|
|
Które operatory są bitowe? rozpocznij naukę
|
|
|
|
|
Które błędy są typowe w instrukcji if? rozpocznij naukę
|
|
Użycie = zamiast ==. Średnik po warunku. Brak klamer
|
|
|
Które stwierdzenia o pętlach są prawdziwe? rozpocznij naukę
|
|
do-while wykona się co najmniej raz - while może wykonać się zero razy - for od C99 pozwala deklarować iterator w nagłówku
|
|
|
Które działania powodują undefined behavior w tablicach? rozpocznij naukę
|
|
Dostęp poza zakresem - Indeks ujemny
|
|
|
Które stwierdzenia o wskaźnikach są prawdziwe? rozpocznij naukę
|
|
Przechowują adres zmiennej - Dereferencja NULL to undefined behavior - Arytmetyka wskaźników jest skalowana przez sizeof
|
|
|
Które cechy dotyczą unii? rozpocznij naukę
|
|
Wszystkie pola współdzielą tę samą pamięć. Rozmiar = największe pole. Odczyt innego pola niż zapisane jest niezdefiniowany
|
|
|
Które stwierdzenia o przekazywaniu argumentów w C są prawdziwe? rozpocznij naukę
|
|
Argumenty przekazywane są przez wartość. Modyfikacja wymaga przekazania wskaźnika. Funkcja otrzymuje kopię argumentu
|
|
|
Które ograniczenie arytmetyki wskaźników jest kluczowe dla zachowania zdefiniowanego działania programu? rozpocznij naukę
|
|
Operacje porównań i odejmowania wskaźników są dozwolone wyłącznie w obrębie tej samej tablicy (oraz jeden element za końcem)
|
|
|
Dlaczego różnice pomiędzy modelami danych ILP32, LP64 i LLP64 mają kluczowe znaczenie dla przenośności kodu w języku C? rozpocznij naukę
|
|
Ponieważ wpływają na rozmiary typów podstawowych i wskaźników, a tym samym na rozmiary struktur, arytmetykę wskaźników oraz zgodność ABI pomiędzy modułami
|
|
|
Dlaczego nadmiernie szeroki zakres zmiennych (np. globalnych) utrudnia optymalizację kodu przez kompilator? rozpocznij naukę
|
|
Ponieważ kompilator musi zakładać dłuższy czas życia i potencjalne aliasowanie, co ogranicza możliwość optymalizacji rejestrów i eliminacji kodu
|
|
|
Które stwierdzenie najtrafniej opisuje różnicę pomiędzy deklaracją a definicją symbolu w języku C? rozpocznij naukę
|
|
Deklaracja informuje kompilator o istnieniu symbolu i jego typie, natomiast definicja rezerwuje pamięć i dostarcza implementację
|
|
|
Dlaczego stosowanie #pragma pack może prowadzić do problemów przenośności i wydajności? rozpocznij naukę
|
|
Ponieważ niewyrównany dostęp do danych może być wolniejszy lub niedozwolony na niektórych architekturach oraz łamać zgodność ABI
|
|
|
Jaki jest główny powód automatycznego dodawania paddingu w strukturach w języku C? rozpocznij naukę
|
|
Spełnienie wymagań wyrównania architektury procesora, co zapewnia poprawny i wydajny dostęp do pamięci
|
|
|
Dlaczego C++ jest często wybierany do systemów niskopoziomowych? rozpocznij naukę
|
|
Oferuje kompromis między wydajnością a możliwością budowania abstrakcji. Pozwala szacować koszty wykonania na poziomie sprzętu
|
|
|
Które paradygmaty są wspierane przez C++? rozpocznij naukę
|
|
Proceduralny. Obiektowy. Generyczny. Funkcyjny
|
|
|
Co oznacza koncepcja zero-cost abstractions? rozpocznij naukę
|
|
Poprawnie użyte abstrakcje nie generują narzutu runtime. Kompilator może całkowicie je zoptymalizować
|
|
|
Które stwierdzenia opisują RAII? rozpocznij naukę
|
|
Zasób jest nabywany w konstruktorze. Zasób jest zwalniany w destruktorze. Sprzątanie następuje deterministycznie przy wyjściu z zakresu
|
|
|
Które elementy kompilator może automatycznie wygenerować dla klasy? rozpocznij naukę
|
|
Konstruktor domyślny. Destruktor. Konstruktor kopiujący. Operator przypisania
|
|
|
Czym różni się inicjalizacja od przypisania? rozpocznij naukę
|
|
Inicjalizacja zachodzi przed wejściem do ciała konstruktora. Przypisanie działa na już istniejącym obiekcie
|
|
|
Które cechy posiadają referencje (T&)? rozpocznij naukę
|
|
Zawsze odnoszą się do istniejącego obiektu. Nie mogą być puste. Nie mogą być ponownie przypisane
|
|
|
Które stwierdzenia o destruktorach są prawdziwe? rozpocznij naukę
|
|
Są wywoływane automatycznie. Umożliwiają deterministyczne zwalnianie zasobów. Działają również podczas obsługi wyjątków
|
|
|
Reguła trzech oznacza, że klasa zarządzająca zasobem powinna zdefiniować rozpocznij naukę
|
|
Destruktor. Konstruktor kopiujący. Operator przypisania
|
|
|
|
rozpocznij naukę
|
|
Używanie gotowych obiektów RAII (np. unique_ptr, vector). Brak własnych destruktorów
|
|
|
Co znajduje się fizycznie w pamięci obiektu? rozpocznij naukę
|
|
Pola danych - Subobiekty klas bazowych - Wskaźnik vptr (dla klas polimorficznych)
|
|
|
|
rozpocznij naukę
|
|
Tablica adresów funkcji wirtualnych - Mechanizm obsługi polimorfizmu w runtime
|
|
|
Które koszty wiążą się z polimorfizmem dynamicznym? rozpocznij naukę
|
|
Dodatkowa pamięć na vptr - Pośredni skok przy wywołaniu funkcji - Dodatkowy odczyt pamięci
|
|
|
Czym jest object slicing? rozpocznij naukę
|
|
Utrata części obiektu przy kopiowaniu do typu bazowego
|
|
|
Które mechanizmy wprowadził C++11? rozpocznij naukę
|
|
Semantykę przenoszenia - Lambdy - auto - Range-based for
|
|
|
Które cechy posiada std: unique_ptr? rozpocznij naukę
|
|
Wyłączna własność zasobu - Brak kopiowania - Automatyczne zwalnianie w destruktorze
|
|
|
Kiedy NIE zaleca się używać std: shared_ptr? rozpocznij naukę
|
|
W systemach czasu rzeczywistego - Jako domyślnego wskaźnika
|
|
|
Co umożliwia semantyka przenoszenia? rozpocznij naukę
|
|
Eliminację kosztownego kopiowania - Transfer własności zasobu - Operacje O(1) zamiast O(n)
|
|
|
Na czym polega const-correctness? rozpocznij naukę
|
|
Oznaczaniu elementów niemodyfikujących stanu jako const - Lepszej czytelności kodu - Umożliwieniu lepszych optymalizacji
|
|
|
Które stwierdzenia o constexpr są prawdziwe? rozpocznij naukę
|
|
Umożliwia obliczenia w czasie kompilacji - Może zastępować makra
|
|
|
Dlaczego masowe stosowanie getterów/setterów dla pól domenowych bywa uznawane za antywzorzec w OOP (szczególnie w C++) rozpocznij naukę
|
|
Ponieważ przenosi logikę i kontrolę niezmienników na zewnątrz klasy, zwiększając liczbę dozwolonych stanów i uzależniając poprawność od kolejności wywołań
|
|
|
Dlaczego destruktor w C++ nie powinien być utożsamiany jedynie z wywołaniem free()? rozpocznij naukę
|
|
Ponieważ kończy odpowiedzialność obiektu i domyka jego kontrakt, zwalniając wszystkie zarządzane zasoby
|
|
|
Co oznacza stwierdzenie, że dziedziczenie wyraża relację „jest”? rozpocznij naukę
|
|
Że obiekt klasy pochodnej musi być logicznie poprawnym obiektem klasy bazowej
|
|
|
Jaka jest kluczowa różnica w zarządzaniu cyklem życia obiektów między C++ a Pythonem? rozpocznij naukę
|
|
C++ zapewnia deterministyczny cykl życia obiektów, a Python polega na niedeterministycznym GC
|
|
|
Jakie są konsekwencje nadużywania polimorfizmu? rozpocznij naukę
|
|
Przebudowane hierarchie, trudna nawigacja i skomplikowane debugowanie
|
|
|
Dlaczego kompozycja sprzyja testowalności? rozpocznij naukę
|
|
Ponieważ komponenty można testować osobno i łatwo je mockować
|
|
|
Dlaczego abstrakcja zwiększa testowalność systemu? rozpocznij naukę
|
|
Ponieważ umożliwia podmianę implementacji i mockowanie zależności
|
|
|
Dlaczego w wykładzie podkreślono, że obiekt powinien być poprawny „zawsze”, a nie dopiero po wywołaniu setterów? rozpocznij naukę
|
|
Ponieważ obiekt nie powinien nigdy istnieć w stanie przejściowo nielegalnym, który łamie niezmienniki
|
|
|
Dlaczego w wykładzie podkreślono, że ponowne użycie kodu nie wymaga dziedziczenia? rozpocznij naukę
|
|
Ponieważ kompozycja często zapewnia mniejsze sprzężenie i większą elastyczność
|
|
|
Czym według wykładu jest programowanie obiektowe? rozpocznij naukę
|
|
Sposobem myślenia o projektowaniu systemów - Narzędziem architektonicznym
|
|
|
Paradygmat a język programowania to rozpocznij naukę
|
|
Dwie różne rzeczy - Paradygmat można stosować w wielu językach
|
|
|
Dlaczego C++ jest dobrym językiem do nauki OOP? rozpocznij naukę
|
|
Nie ukrywa mechanizmów - Pokazuje koszty abstrakcji i polimorfizmu - Ma deterministyczny cykl życia obiektów
|
|
|
Obiekt w sensie paradygmatu to: rozpocznij naukę
|
|
Jednostka odpowiedzialności - Encapsulacja stanu, zachowania i niezmienników
|
|
|
Co musi być spełnione przez cały czas życia obiektu? rozpocznij naukę
|
|
Niezmienniki - Kontrakt obiektu
|
|
|
|
rozpocznij naukę
|
|
Zakończenie odpowiedzialności obiektu - Domknięcie kontraktu - Zwolnienie wszystkich zarządzanych zasobów
|
|
|
Enkapsulacja polega głównie na: rozpocznij naukę
|
|
Ochronie niezmienników - Kontroli zmian stanu
|
|
|
Masowe użycie getterów/setterów: rozpocznij naukę
|
|
Zwiększa liczbę możliwych stanów obiektu - Przenosi odpowiedzialność na użytkownika klasy
|
|
|
Abstrakcja odpowiada na pytanie: rozpocznij naukę
|
|
Co obiekt robi - Jakie zachowanie obiecuje
|
|
|
Dziedziczenie oznacza relację: rozpocznij naukę
|
|
|
|
|
Kiedy dziedziczenie ma sens? rozpocznij naukę
|
|
Gdy istnieje stabilny kontrakt - Gdy potrzebny jest polimorfizm - Gdy hierarchia jest płytka
|
|
|
|
rozpocznij naukę
|
|
Sygnałem złego projektu - Utratą części obiektu przy kopiowaniu
|
|
|
Co zwykle zapewnia lepszy reuse niż dziedziczenie? rozpocznij naukę
|
|
Kompozycja - Wstrzykiwanie zależności
|
|
|
|
rozpocznij naukę
|
|
Jest narzędziem architektonicznym - Umożliwia różne zachowania pod tym samym interfejsem
|
|
|
Polimorfizm dynamiczny oznacza rozpocznij naukę
|
|
Późne wiązanie - Koszt runtime - Decyzję o metodzie w czasie wykonania
|
|
|
|
rozpocznij naukę
|
|
Jest możliwe - Może używać tylko kompozycji
|
|
|
Nadużywanie polimorfizmu prowadzi do: rozpocznij naukę
|
|
Przebudowanych hierarchii - Trudnej nawigacji - Problemów z debugowaniem
|
|
|
Kompozycja sprzyja testowalności, ponieważ: rozpocznij naukę
|
|
Komponenty można testować osobno - Zależności można mockować
|
|
|
Kluczowa różnica C++ vs Python w cyklu życia obiektów: rozpocznij naukę
|
|
C++ ma deterministyczny cykl życia - Python polega na GC
|
|
|
Wybierz dwa prawdziwe stwierdzenia o funkcjach wyższego rzędu (higher-order functions): rozpocznij naukę
|
|
Funkcja wyższego rzędu może zwracać funkcję jako wynik (np. fabryka funkcji). - Funkcja wyższego rzędu może przyjmować inną funkcję jako argument
|
|
|
Wybierz dwa prawdziwe stwierdzenia o elementach stylu funkcyjnego w Pythonie: rozpocznij naukę
|
|
Python oferuje konstrukcje wspierające styl funkcyjny, np. lambda, map/filter/reduce oraz (często) list comprehensions. - W Pythonie funkcje są obiektami pierwszej klasy: można je przypisywać do zmiennych i przekazywać jako argumenty.
|
|
|
Które stwierdzenia o kompozycji funkcji są prawdziwe? rozpocznij naukę
|
|
Kompozycja sprzyja budowie potoków przetwarzania danych z małych, wyspecjalizowanych funkcji. - Kompozycja funkcji polega na łączeniu funkcji tak, aby wynik jednej był argumentem kolejnej.
|
|
|
Które stwierdzenia poprawnie opisują różnicę między programowaniem funkcyjnym a imperatywnym? rozpocznij naukę
|
|
Programowanie imperatywne akcentuje sekwencję instrukcji oraz zmianę stanu programu. - Programowanie funkcyjne skupia się na opisie transformacji danych i wartości zwracanych przez funkcje.
|
|
|
Które stwierdzenia o Haskellu są prawdziwe w kontekście programowania funkcyjnego? rozpocznij naukę
|
|
Haskell jest językiem czysto funkcyjnym, który promuje funkcje czyste i ogranicza efekty uboczne. - Haskell ma silny statyczny system typów (w przeciwieństwie do dynamicznego typowania Pythona).
|
|
|
Wybierz dwa prawdziwe stwierdzenia o niemutowalności (immutability): rozpocznij naukę
|
|
Niemutowalność zmniejsza ryzyko błędów w programach współbieżnych, bo ogranicza współdzielony stan. - Niemutowalne struktury danych nie są modyfikowane w miejscu; zamiast tego tworzy się nowe wartości.
|
|
|
Wybierz dwa prawdziwe stwierdzenia o fold/reduce: rozpocznij naukę
|
|
W fold często występuje akumulator (wartość początkowa), który jest aktualizowany w kolejnych krokach redukcji. - reduce (fold) agreguje elementy kolekcji do jednej wartości, stosując funkcję łączącą.
|
|
|
Wybierz prawdziwe stwierdzenia o paradygmacie imperatywnym: rozpocznij naukę
|
|
Akcentuje sekwencję instrukcji oraz zmianę stanu programu. - Stan programu jest centralnym elementem obliczeń. - Pętle i instrukcje warunkowe są podstawowymi narzędziami.
|
|
|
Wybierz prawdziwe stwierdzenia o paradygmacie funkcyjnym: rozpocznij naukę
|
|
Program jest postrzegany jako ciąg transformacji danych. - Unika mutowalnego stanu i efektów ubocznych. - Opiera się na wyrażeniach, a nie sekwencji poleceń.
|
|
|
Wybierz prawdziwe stwierdzenia o funkcjach czystych: rozpocznij naukę
|
|
Wynik zależy tylko od argumentów. - Nie modyfikują stanu zewnętrznego. - Sprzyjają testowalności i debugowaniu.
|
|
|
Wybierz prawdziwe stwierdzenia o niemutowalności danych: rozpocznij naukę
|
|
Dane nie są modyfikowane w miejscu. - Zmiana oznacza utworzenie nowej wersji danych. - Ułatwia programowanie współbieżne.
|
|
|
Wybierz prawdziwe stwierdzenia o funkcjach wyższego rzędu: rozpocznij naukę
|
|
Mogą przyjmować inne funkcje jako argumenty. - Mogą zwracać funkcje jako wynik.
|
|
|
Wybierz prawdziwe stwierdzenia o map/filter/fold: rozpocznij naukę
|
|
map przekształca każdy element kolekcji. - filter wybiera elementy spełniające warunek. - fold/reduce agreguje kolekcję do jednej wartości.
|
|
|
Wybierz prawdziwe stwierdzenia o kompozycji funkcji: rozpocznij naukę
|
|
Buduje potoki przetwarzania danych. - Wynik jednej funkcji jest argumentem kolejnej.
|
|
|
Wybierz prawdziwe stwierdzenia o Haskellu: rozpocznij naukę
|
|
Język czysto funkcyjny. - Silny statyczny system typów. - Leniwa ewaluacja.
|
|
|
Wybierz prawdziwe stwierdzenia o Pythonie jako języku wieloparadygmatowym: rozpocznij naukę
|
|
Obsługuje styl funkcyjny. - Obsługuje paradygmat obiektowy. - Posiada funkcje jako obiekty pierwszej klasy.
|
|
|
Wybierz prawdziwe stwierdzenia o paradygmacie deklaratywnym: rozpocznij naukę
|
|
Opisuje co ma być zrobione, nie jak. - SQL jest przykładem języka deklaratywnego. - HTML/CSS mają charakter deklaratywny.
|
|
|
Wybierz prawdziwe stwierdzenia o paradygmacie obiektowym: rozpocznij naukę
|
|
Łączy dane i operacje w obiekty. - Wspiera dziedziczenie i polimorfizm. - Modeluje świat za pomocą klas i obiektów.
|
|
|
Wybierz prawdziwe stwierdzenia o programowaniu proceduralnym: rozpocznij naukę
|
|
Rozbija program na funkcje/procedury. - Ułatwia modularność. - Jest rozszerzeniem imperatywnego.
|
|
|
Wybierz prawdziwe stwierdzenia o referencyjnej przeźroczystości: rozpocznij naukę
|
|
Wyrażenie można zastąpić jego wartością. - Wynika z czystości funkcji. - Ułatwia optymalizację.
|
|
|
Wybierz prawdziwe stwierdzenia o stanie w paradygmacie funkcyjnym: rozpocznij naukę
|
|
Brak klasycznych zmiennych do modyfikacji.- Każda „zmiana” tworzy nową wartość. - Mniej błędów współbieżnych.
|
|
|
Wybierz prawdziwe stwierdzenia o matematycznych podstawach FP: rozpocznij naukę
|
|
Rachunek lambda. - Ewaluacja wyrażeń.
|
|
|
Wybierz prawdziwe stwierdzenia o strukturach danych w Haskellu: rozpocznij naukę
|
|
Listy są niemutowalne.- Drzewa są strukturami rekurencyjnymi. - Mapy oparte są na strukturach niemutowalnych.
|
|
|
Wybierz prawdziwe stwierdzenia o trendach językowych: rozpocznij naukę
|
|
Języki łączą wiele paradygmatów. - Rosnąca rola bezpieczeństwa pamięci. - Popularność języków jak Rust, Go, Kotlin.
|
|
|
Wybierz prawdziwe stwierdzenia o doborze języka do zadania: rozpocznij naukę
|
|
C/C++ do systemów wbudowanych. - Python do analizy danych. - Kotlin/Swift do aplikacji mobilnych.
|
|
|
Wybierz prawdziwe stwierdzenia o wydajności i abstrakcji: rozpocznij naukę
|
|
C daje wysoką kontrolę i wydajność. - Python daje wysoką produktywność. - Python może korzystać z bibliotek napisanych w C/C++.
|
|
|
Wybierz prawdziwe stwierdzenia o przyszłości paradygmatów: rozpocznij naukę
|
|
Systemy hybrydowe. - Więcej programowania równoległego. - Większy nacisk na bezpieczeństwo.
|
|
|
Wybierz dwa poprawne stwierdzenia o typach prostych w Pythonie. rozpocznij naukę
|
|
Liczby typu float mogą mieć błędy reprezentacji (wynikające z zapisu binarnego), więc nie wszystkie ułamki dziesiętne są reprezentowane dokładnie. - Liczby zespolone w Pythonie zapisuje się m.in. z użyciem litery j (np. 2+3j). -
|
|
|
Które stwierdzenia o napisach (str) w Pythonie są prawdziwe? rozpocznij naukę
|
|
Można używać slicing, np. s[1:4] zwraca fragment napisu (bez znaku o indeksie 4). - Napisy w Pythonie są indeksowane od zera, np. s[0] to pierwszy znak.
|
|
|
Wybierz dwa prawdziwe stwierdzenia o krotkach (tuple). rozpocznij naukę
|
|
Krotki są niemodyfikowalne (immutable), więc po utworzeniu nie można zmieniać ich elementów. - Krotka jednoelementowa wymaga przecinka, np. (50,).
|
|
|
Które stwierdzenia dotyczące Pythona są prawdziwe? rozpocznij naukę
|
|
Python jest językiem interpretowanym (wykonywanym przez interpreter/VM), a kod uruchamia się bez etapu kompilacji do pliku wykonywalnego jak w C. - Czytelność składni i wcięcia jako wyznacznik bloków kodu są elementem filozofii języka.
|
|
|
Które stwierdzenia o listach i list comprehension są prawdziwe? rozpocznij naukę
|
|
List comprehension pozwala tworzyć listę z mapowaniem i/lub filtrowaniem, np. [x for x in range(10) if x%2==0]. - Listy w Pythonie są modyfikowalne (mutable), więc można zmieniać ich elementy po utworzeniu.
|
|
|
Które stwierdzenia opisują, dlaczego Python bywa wybierany jako język dydaktyczny? rozpocznij naukę
|
|
Czytelna i zwięzła składnia - Szybkie prototypowanie i testowanie pomysłów
|
|
|
Które cechy najlepiej opisują Pythona jako język wysokiego poziomu? rozpocznij naukę
|
|
Abstrakcja od szczegółów sprzętowych - Nacisk na czytelność kodu - Bogaty ekosystem bibliotek
|
|
|
Które stwierdzenia dotyczą historii Pythona? rozpocznij naukę
|
|
Twórcą języka jest Guido van Rossum - Pierwsza implementacja powstała w instytucie CWI w Amsterdamie - Nazwa pochodzi od „Monty Python’s Flying Circus”
|
|
|
Które elementy wiążą się z rolą Python Software Foundation (PSF)? rozpocznij naukę
|
|
Koordynacja rozwoju języka - Organizacja konferencji i certyfikacji - Proces zatwierdzania zmian (PEP)
|
|
|
Które stwierdzenia o wersjach Pythona są prawdziwe? rozpocznij naukę
|
|
Python 2.7 nie jest już rozwijany - Python 3. x nie jest w pełni kompatybilny wstecz z Pythonem 2 - Migracja kodu może wymagać zmian
|
|
|
Jakie paradygmaty wspiera Python? rozpocznij naukę
|
|
Proceduralny - Obiektowy - Funkcyjny
|
|
|
Które sposoby uruchamiania kodu Pythona są poprawne? rozpocznij naukę
|
|
Tryb interaktywny (REPL) - Uruchamianie skryptów. py
|
|
|
Które stwierdzenia o wcięciach w Pythonie są prawdziwe? rozpocznij naukę
|
|
Definiują bloki kodu - Są elementem składni języka
|
|
|
Które typy należą do prostych typów danych w Pythonie? rozpocznij naukę
|
|
|
|
|
Które stwierdzenia o typie int są prawdziwe? rozpocznij naukę
|
|
Brak przepełnienia typowego dla C/C++ - Możliwość zapisu binarnego, ósemkowego i szesnastkowego
|
|
|
Które wartości są traktowane jako fałszywe w kontekście logicznym? rozpocznij naukę
|
|
0 - None - Puste kolekcje
|
|
|
Które stwierdzenia o float są prawdziwe? rozpocznij naukę
|
|
Mogą występować błędy zaokrągleń - Obsługują zapis naukowy - Precyzja jest ograniczona
|
|
|
Które stwierdzenia o napisach (str) są prawdziwe? rozpocznij naukę
|
|
Obsługują Unicode - Można stosować slicing - Indeksowane od zera
|
|
|
Które funkcje wbudowane działają na napisach? rozpocznij naukę
|
|
|
|
|
Które kolekcje są modyfikowalne? rozpocznij naukę
|
|
listy - słowniki - zbiory
|
|
|
Które cechy dotyczą list? rozpocznij naukę
|
|
Zachowują kolejność elementów - Mogą zawierać różne typy - Mają dynamiczny rozmiar
|
|
|
Które stwierdzenia o list comprehension są prawdziwe? rozpocznij naukę
|
|
Pozwalają mapować elementy - Pozwalają filtrować elementy - Są zwięzłym zapisem pętli
|
|
|
Które stwierdzenia o krotkach są prawdziwe? rozpocznij naukę
|
|
Są niemodyfikowalne - Mogą być używane jako klucze słownika - Obsługują indeksowanie i slicing
|
|
|
Które operacje można wykonać na słowniku? rozpocznij naukę
|
|
Dodawanie kluczy - Usuwanie kluczy - Iterowanie po parach klucz–wartość
|
|
|
Które elementy składają się na obsługę wyjątków w Pythonie? rozpocznij naukę
|
|
try / except - else - finally
|
|
|
Które stwierdzenia o OOP w Pythonie są prawdziwe? rozpocznij naukę
|
|
W Pythonie wszystko jest obiektem - Klasy definiują stan i zachowanie - Obsługiwany jest polimorfizm
|
|
|
Wybierz wszystkie elementy wymienione jako składowe „Python: język vs ekosystem”. rozpocznij naukę
|
|
Standard Library („batteries included”) - PyPI i pip
|
|
|
Wybierz poprawne stwierdzenia o plikach. pyc i katalogu __pycache__. rozpocznij naukę
|
|
Pliki. pyc zawierają skompilowany bytecode gotowy do wykonania - Interpreter CPython może automatycznie generować. pyc w katalogu __pycache__
|
|
|
Jak prezentacja opisuje rolę nazw/zmiennych w Pythonie? rozpocznij naukę
|
|
Nazwy są etykietami (referencjami) wskazującymi na obiekty w pamięci
|
|
|
Wybierz poprawne pary (typ → kategoria). rozpocznij naukę
|
|
dict → mutowalny (mutable) - tuple → niemutowalny (immutable)
|
|
|
Który zestaw metod tworzy protokół iteracji używany m.in. przez pętlę for? rozpocznij naukę
|
|
__iter__() oraz __next__()
|
|
|
Wybierz wszystkie elementy wymienione jako powody popularności Pythona. rozpocznij naukę
|
|
Czytelność kodu i filozofia „Zen of Python” - Wieloparadygmatowość - Bogaty ekosystem bibliotek - Uniwersalność zastosowań
|
|
|
Wybierz elementy składające się na „Python: język vs ekosystem”. rozpocznij naukę
|
|
Interpreter CPython - Standard Library - PyPI i pip
|
|
|
Jak wygląda model wykonania programu w Pythonie? rozpocznij naukę
|
|
Kod źródłowy → Bytecode → Python Virtual Machine
|
|
|
Wybierz poprawne stwierdzenia o plikach. pyc. rozpocznij naukę
|
|
Zawierają skompilowany bytecode - Są generowane automatycznie przez CPython
|
|
|
Które cechy opisują Pythona jako język dynamiczny? rozpocznij naukę
|
|
Typy sprawdzane w czasie wykonania - Late binding nazw i atrybutów
|
|
|
Co w Pythonie jest obiektem? rozpocznij naukę
|
|
Liczby - Funkcje - Klasy - Moduły
|
|
|
Które elementy składają się na opis obiektu? rozpocznij naukę
|
|
Tożsamość (id) - Typ - Wartość
|
|
|
Jak prezentacja opisuje zmienne w Pythonie? rozpocznij naukę
|
|
Są etykietami wskazującymi na obiekty
|
|
|
Wybierz typy niemutowalne (immutable). rozpocznij naukę
|
|
|
|
|
Wybierz typy mutowalne (mutable). rozpocznij naukę
|
|
|
|
|
Które z poniższych to typowe pułapki mutowalności? rozpocznij naukę
|
|
Domyślne argumenty funkcji - Współdzielenie tego samego obiektu przez wiele nazw
|
|
|
Jakie cechy mają funkcje pierwszej kategorii? rozpocznij naukę
|
|
Można je przypisywać do zmiennych - Mogą być argumentami innych funkcji - Mogą być zwracane z funkcji
|
|
|
Czym jest funkcja wyższego rzędu? rozpocznij naukę
|
|
Przyjmuje funkcję jako argument - Zwraca funkcję jako wynik
|
|
|
Które stwierdzenia o lambda expressions są prawdziwe? rozpocznij naukę
|
|
Są funkcjami anonimowymi - Zawierają tylko jedno wyrażenie - Często używane jako argumenty
|
|
|
Dopasuj ideę map / filter / reduce. rozpocznij naukę
|
|
map – transformuje elementy. filter – wybiera elementy spełniające warunek. reduce – redukuje sekwencję do jednej wartości
|
|
|
Co charakteryzuje generatory (yield)? rozpocznij naukę
|
|
Zachowują stan pomiędzy wywołaniami - Zwracają wartości leniwie - Są iteratorami
|
|
|
Które metody tworzą protokół iteracji? rozpocznij naukę
|
|
|
|
|
Jakie są główne założenia PEP 484? rozpocznij naukę
|
|
Typowanie statyczne jest opcjonalne - Adnotacje nie wpływają na runtime
|
|
|
Czym jest Protocol (PEP 544)? rozpocznij naukę
|
|
Strukturalnym kontraktem opartym na metodach - Alternatywą dla dziedziczenia - Wsparciem dla duck typing
|
|
|
Do czego służy TypedDict? rozpocznij naukę
|
|
Definiowania schematów słowników - Opisu kontraktów danych (np. JSON, API)
|
|
|