Przykładowe pytania na zaliczenie wykładu
-
Czym jest nawigacja w kontekście aplikacji mobilnych i jakie są popularne sposoby realizacji nawigacji między ekranami?
-
Opisz, w jaki sposób aplikacja mobilna może przekazywać dane z jednego ekranu na inny. Podaj przynajmniej dwa różne podejścia.
-
Wyjaśnij pojęcie deep linking w aplikacjach mobilnych. Do czego służy i kiedy jest wykorzystywane?
-
Jakie są różnice między nawigacją hierarchiczną (stos ekranów) a nawigacją za pomocą zakładek (tab bar) w aplikacjach mobilnych? Porównaj te dwa podejścia.
-
Wzorzec nawigacji master-detail polega na tym, że lista elementów oraz szczegóły wybranego elementu są wyświetlane na osobnych ekranach urządzenia mobilnego. Wyjaśnij zalety i ograniczenia tego podejścia.
-
Wymień i krótko opisz różne sposoby implementacji nawigacji w aplikacjach mobilnych. Czy istnieje podejście, które uznałbyś za nietypowe lub niepraktyczne? Uzasadnij swoją odpowiedź.
-
W aplikacjach mobilnych często występuje pasek nawigacyjny (navigation bar lub action bar). Jaką pełni on rolę i jakie typowe akcje umożliwia użytkownikowi?
-
Omów wady i zalety przechowywania danych we wspólnym stanie globalnym (np. za pomocą singletonu) w porównaniu z przekazywaniem danych jako parametru przy przejściu na inny ekran.
-
Wymień trzy różne czujniki (sensory) dostępne w typowym smartfonie i podaj krótko przykłady zastosowań każdego z nich w aplikacjach mobilnych.
-
Jakie wyzwania wiążą się z wykorzystaniem GPS w aplikacjach mobilnych? Omów takie aspekty jak dokładność lokalizacji, zużycie energii przez GPS oraz konieczność uzyskania uprawnień od użytkownika.
-
W jaki sposób aplikacja mobilna może uzyskać dostęp do danych z akcelerometru i do czego można je wykorzystać? Podaj przykład funkcjonalności wykorzystującej akcelerometr.
-
Dlaczego należy wyłączać nasłuchiwanie czujników (np. GPS, akcelerometru) gdy nie są one potrzebne? Co może się stać, jeśli aplikacja zostawi włączony sensor bez potrzeby przez dłuższy czas?
-
Wymień typowe czujniki (sensory), które występują w większości nowoczesnych smartfonów. Czy istnieją czujniki, które spotyka się rzadziej lub nie są jeszcze standardem? Podaj przykłady.
-
Wymień i krótko opisz trzy kluczowe zasady projektowania interfejsu użytkownika w aplikacjach mobilnych. Dlaczego każda z nich jest ważna?
-
Czym różni się projektowanie interfejsu dla urządzeń mobilnych od projektowania dla komputerów stacjonarnych? Podaj dwa przykłady różnic.
-
Co to jest responsywny design i dlaczego jest istotny w kontekście wielu różnych urządzeń mobilnych o odmiennych rozdzielczościach i rozmiarach ekranu?
-
Wyjaśnij pojęcie dostępności (accessibility) w aplikacjach mobilnych. Podaj dwa przykłady, jak można uczynić aplikację mobilną bardziej dostępną dla użytkowników z niepełnosprawnościami.
-
Jakie znaczenie ma hierarchia widoków (view hierarchy) w aplikacji mobilnej i jak może ona wpływać na wydajność renderowania interfejsu?
-
Opisz, w jaki sposób obsługiwane jest zdarzenie kliknięcia w przycisk w aplikacji mobilnej.
-
Wymień i krótko opisz typowe elementy graficznego interfejsu użytkownika stosowane w aplikacjach mobilnych. Czy są elementy interfejsu, które uznajesz za nieodpowiednie lub niepraktyczne w kontekście urządzeń mobilnych? Uzasadnij.
-
Jakie są najlepsze praktyki tworzenia interfejsu użytkownika, który poprawnie dostosowuje się do orientacji pionowej i poziomej urządzenia?
-
Co to jest API i w jaki sposób aplikacje mobilne wykorzystują API do komunikacji z serwerem (backendem)?
-
Wyjaśnij różnicę między żądaniem HTTP GET a POST. Kiedy powinno się używać każdego z nich?
-
W jaki sposób aplikacje mobilne mogą przechowywać i synchronizować dane, gdy urządzenie jest offline?
-
Co to jest JSON i dlaczego jest często używany w komunikacji pomiędzy aplikacją mobilną a serwerem?
-
Dlaczego wykonując operacje sieciowe w aplikacji mobilnej należy stosować podejście asynchroniczne?
-
Rozważ fragment kodu, który wykonuje żądanie sieciowe synchronicznie. Co jest nie tak z tym podejściem i jak można je poprawić?
-
Co to jest Promise i jak ułatwia zarządzanie operacjami asynchronicznymi w aplikacji mobilnej?
-
Użytkownik uruchomił operację pobierania dużej ilości danych z serwera. Jak zapewnić dobry UX w takiej sytuacji?
-
Wymień technologie wykorzystywane do komunikacji pomiędzy aplikacją mobilną a serwerem. Które z nich są najczęściej stosowane i dlaczego?
-
Podaj przykład aplikacji, która wymaga komunikacji w czasie rzeczywistym i uzasadnij użycie WebSocketów.
-
Wyjaśnij, co oznacza pojęcie cykl życia aplikacji mobilnej. Jakie podstawowe stany życia aplikacji można wyróżnić?
-
Jakie zdarzenia cyklu życia aplikacji powinny zostać obsłużone, aby przy zmianie orientacji ekranu stan aplikacji został zachowany?
-
Dlaczego ważne jest zwalnianie zasobów we właściwych momentach cyklu życia aplikacji?
-
Wyjaśnij, na czym polega wzorzec architektoniczny MVC i jak można go zastosować w aplikacji mobilnej.
-
Wymień jeden inny wzorzec architektoniczny wykorzystywany w aplikacjach mobilnych i krótko go scharakteryzuj.
-
Co to jest wzorzec Singleton i kiedy może być przydatny w aplikacji mobilnej?
-
Na czym polega wstrzykiwanie zależności (Dependency Injection) i jak ułatwia zarządzanie komponentami w aplikacji mobilnej?
-
Wymień znane wzorce architektoniczne wykorzystywane w aplikacjach mobilnych i krótko opisz jeden z nich. Czy znasz przykłady wzorców, które nie znajdują zastosowania w kontekście aplikacji mobilnych?
-
Jakie czynniki mogą negatywnie wpływać na wydajność aplikacji mobilnej? Wymień trzy przykłady.
-
Co oznacza, że aplikacja jest responsywna? Jak zapewnić responsywność interfejsu podczas wykonywania złożonych operacji?
-
W jaki sposób można zredukować zużycie energii (baterii) przez aplikację mobilną?
-
Dlaczego korzystanie z profilera jest ważne podczas optymalizacji aplikacji mobilnej?
-
Masz listę tysięcy elementów do wyświetlenia. Jakie techniki zastosujesz, aby zachować wydajność aplikacji?
-
Wymień trzy typowe zagrożenia bezpieczeństwa aplikacji mobilnych.
-
Co to są uprawnienia w aplikacjach mobilnych i jak powinien postępować programista, prosząc o nie użytkownika?
-
Na czym polega bezpieczna komunikacja między aplikacją mobilną a serwerem?
-
Czy zapisywanie hasła użytkownika w pliku tekstowym jest bezpieczne? Jak można przechowywać dane wrażliwe bezpieczniej?
-
Wyjaśnij, na czym polega atak typu Man-in-the-Middle i jak się przed nim bronić.
-
Dlaczego nie należy umieszczać poufnych kluczy lub sekretów API w kodzie aplikacji mobilnej? Jakie są alternatywy?