0% found this document useful (0 votes)
14 views11 pages

Androidi OS

egzamin pb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views11 pages

Androidi OS

egzamin pb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Android

1. Na bazie którego systemu operacyjnego powstał system Android?


- GNU/Linux
2. Jak jest najniższa warstwa architektury systemu Android?
- Linux/Kernel
3. Jak jest najwyższa warstwa architektury systemu Android?
- Aplikacji
4. Jak warstwa architektury systemu Android jest ponad jądrem Linuksa?
- Libraries (Biblioteki)
5. Jak nazywa się maszyna wirtualna w wersji do 4.4?
- Dalvik
6. Jak nazywa się maszyna wirtualna od wersji 5.0?
- Android RunTime (ART)
7. Jak się nazywa format pliku maszyny wirtualnej Javy Androida?
- dex
8. Jaka jest kolejność wywołań metod w momencie startu czynności?
- on create, on start, on resume
Wszystkie:
- on create
- on start - on restart
- on resume
- on pause
- on destroy
- on stop
9. Jaka jest kolejność wywołań metod w momencie zamykania czynności?
- on pause -> on stop -> on destroy
10. Sekwencja działań przy uruchamianiu nowej czynności
- utworzenie intencji, przekazanie parametrów, wywołanie czynności
11. W jaki sposób rozróżnia się czynności, które zwracają wynik swojego działania?
- do ich inicjalizacji korzysta się z startActivityForResult();
- po powrocie wywołana jest metoda onActivityResult();
- slajd 15 wykład 2
12. W jaki sposób jest zapisywana budowa interfejsu użytkownika w Androidzie?
- w postaci XML
13. W jaki sposób następuje związanie pomiędzy XML a kodem aplikacji?
- https://developer.android.com/guide/topics/ui/declaring-layout.html
- When you compile your application, each XML layout file is compiled into a View
resource.
14. Z jakiego paradygmatu korzystamy, programując aplikację dla systemu Android?
- programowanie zdarzeniowe
15. Rodzaje zasobów (co może być zasobem, co nie może być zasobem)
- Wszystko co siedzi w res (pliki muzyczne - res/raw , grafiki - res/drawable wraz z
podkatalogami, layout aplikacji - res/layout, plik definiujący menu aktywności -
res/menu, definiujący wymiary - res/values, łańcuchy znaków - res/values, style - też,
kolory - też, wartość, np identyfikator dowolnej kontrolki)
16. Czego nie mogą dotyczyć kwalifikatory zasobów?
- Procesora (wszystkie języka, kodu, sieci, orientacji, procesora )
17. Która klasa pozwala na związanie zasobów z logiką aplikacji (H, G, W, R)?
- findViewById(R.id.nazwa_komponentu)
18. Który z poniższych sposobów jest poprawnym sposobem umieszczania fragmentów na
ekranie? (chiba:)
- View concreteView = LayoutInflater.Inflate(R.layout.custom_list_layout, null, true);
19. Które usługi można uruchamiać za pomocą getSystemService()?
- https://developer.android.com/reference/android/content/Context.html - look for
getSystemService which returns String
20. Dlaczego usługi należy uruchamiać za pomocą getSystemService()?
- Service dziedziczy z Context. Service to nie oddzielny proces ani wątek. Odpalenie
Context.startService() pozwala systemowi na pobranie serwisu i potem można robić
z tym co się chce.
21. Jakie metody wyznaczania pozycji są dostępne w systemie Android?
- rotation vector
- geomagnetic rotation vector
- magnetic field
- magnetic field uncalibrated
- orientation
- proximity
22. Z jakich metod korzysta system w przypadku wybrania Network Provider?
- This provider determines location based on availability of cell tower and WiFi access
points. Results are retrieved by means of a network lookup.
- ???
23. Jakie uprawnienia są potrzebne do skorzystania z Network Provider?
- ACCESS_COARSE_LOCATION
- or
- ACCESS_FINE_LOCATION
24. Jakich uprawnień potrzebujemy, aby skorzystać z GPS Provider?
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-feature android:name="android.hardware.location.gps" />

25. Jakiego typu czujnika nie znajdziemy w systemie?


Jakie są:
- akcelometr - orientacji
- temperatury otoczenia - nacisku
- grawitacji - wilgotności
- żyroskop - rotacji
- światła - temperatury
- akceleracji liniowej - bliskości
- pola magnetycznego

26. Czy w systemie musi istnieć tylko jeden czujnik danego typu?
- nie (chyba)
- http://stackoverflow.com/questions/14750902/two-sensors-available-for-same-type-
in-android
- http://stackoverflow.com/questions/9712008/multiple-internal-sensors-of-same-type
27. Co oznacza, gdy metoda getDefaultSensor zwraca null?
- urządzenie nie jest wyposażone w sensor zdefiniowany w parametrze metody
28. Jaki typ reprezentują dane odczytywane z czujnika?
- tablica floatów
29. Jaką wartość modułu zwróci akcelerometr w przypadku, gdy telefon leży nieruchomo? - -
- pomiędzy 9 a 10, ze względu na przyśpieszenie ziemskie
30. Jakie uprawnienia musi mieć aplikacja, żeby sprawdzić stan sieci Internet?
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

iOS
1. Różnica między weak a strong
Strong powoduje zwiększenie retain count‟a obiektu, czyli nasza nowa zmienna
“retainuje” obiekt co zapewnia nam, że obiekt nie zostanie zwolniony przez ARC tak długo
jak będziemy na niego wskazywać. Weak nie retainuje obiektu, co oznacza, że zmienna
może być nil gdy ARC zwolni instancje.

2. Kiedy używać weak reference


Należy używać gdy chcemy uniknąć reference cycle, i obiekt który przypisujemy nie
jest nam zawsze potrzebny. Jeżeli w przykładzie opisanym niżej, w klasie Apartment lub
John przed definicją zmiennej dodamy “weak” (np. weak var person: Person? ) wtedy
przypisując zmienną nie zwiększymy jej retain count.
3. Cykl życia aplikacji
● application:willFinishLaunchingWithOptions:—This method is your app’s
first chance to execute code at launch time.
● application:didFinishLaunchingWithOptions:—This method allows you to
perform any final initialization before your app is displayed to the user.
● applicationDidBecomeActive:—Lets your app know that it is about to become
the foreground app. Use this method for any last minute preparation.
● applicationWillResignActive:—Lets you know that your app is transitioning
away from being the foreground app. Use this method to put your app into a
quiescent state.
● applicationDidEnterBackground:—Lets you know that your app is now
running in the background and may be suspended at any time.
● applicationWillEnterForeground:—Lets you know that your app is moving out
of the background and back into the foreground, but that it is not yet active.
● applicationWillTerminate:—Lets you know that your app is being terminated.
This method is not called if your app is suspended.

4. Cykl życia view controllera

● ViewDidLoad - Called when you create the class and load from
xib/storyboard. Great for initial setup and one-time-only work.
● ViewWillAppear - Called right before your view appears, good for
hiding/showing fields or any operations that you want to happen every
time before the view is visible. Because you might be going back and
forth between views, this will be called every time your view is about to
appear on the screen.
● ViewDidAppear - Called after the view appears - great place to start an
animations or the loading of external data from an API.
● ViewWillDisappear/DidDisappear - Same idea as
ViewWillAppear/ViewDidAppear.
● ViewDidUnload/ViewDidDispose - In Objective C, this is where you do your
clean-up and release of stuff, but this is handled automatically so not
much you really need to do here.

5. Co to jest ARC / jak działa


Automatic Reference Counting - mechanizm zbliżony do znanego Garbage
Collector‟a. ARC dba o “sprzątanie” po alokacji naszych zmiennych. Zasada działania jest
bardzo prosta - każdy obiekt aplikacji posiada tzw. retain count który jest inkrementowany o
1 przy alokacji miejsca w pamięci. Gdy retain count spadnie do zera - instancja nie jest już
dłużej potrzebna i ARC zwalnia pamięć. Retain count zwiększa się również o jeden gdy
przypisujemy zmienną - przykład :
var ref1: Person?
var ref2: Person?
var ref3: Person?
ref1 = Person(name: “test”) // retain count ref1 ++
ref2 = ref1 // retain count ref1 ++
ref3 = ref1 // retain coint ref1 ++

Obiekt ref1 nie zostanie zwolniony dopóki wszystkie 3 zmienne będą nil.

6. Co oznacza (-) / (+) przy definicji metody


+ to metoda klasy (statyczna)
- to metoda instancji
7. Co oznacza strong reference cycle i co może spowodować ?
Strong reference cycle jest to przypadek w którym zmienne wskazują na siebie
nawzajem. Przykład :
class Person {
let name: String
var apartment: Apartment?
init(name: String) { self.name = name}
}
class Apartment {
let unit: String
var person: Person?
init(unit: String) { self.unit = unit }
}
var john: Person? = Person(name: “test”)
var apartment: Apartment? = Apartment(unit: “4A’)

john!.apartment = apartment
apartment!.person = john
W tym przykładzie oba obiekty wskazują na siebie dlatego ARC nie będzie
mógł zwolnić żadnego z tych obiektów gdyż retain count zawsze będzie większy od 0.
Strong reference cycle powoduje wyciek pamięci.
8. Czym jest NSAutoreleasePool
https://developer.apple.com/reference/foundation/nsautoreleasepool

9. Co oznacza strong, weak, assign, nonatomic, atomic

Nonatomic

nonatomic is used for multi threading purposes. If we have set the nonatomic attribute at
the time of declaration, then any other thread wanting access to that object can access it
and give results in respect to multi-threading.

Assign

Assign is somewhat the opposite to copy. When calling the getter of an assign property,
it returns a reference to the actual data. Typically you use this attribute when you have a
property of primitive type (float, int, BOOL...)
Strong

strong is a replacement for the retain attribute, as part of Objective-C Automated


Reference Counting (ARC). In non-ARC code it's just a synonym for retain.

This is a good website to learn about strong and weak for iOS
5.http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

Weak

weak is similar to strong except that it won't increase the reference count by 1. It
does not become an owner of that object but just holds a reference to it. If the object's
reference count drops to 0, even though you may still be pointing to it here, it will be
deallocated from memory.

10. Jaka jest różnica pomiędzy ‘try’, ‘try?’ i ‘try!’


Przy wywołaniu metody używając „try‟ mamy możliwość obsługi ew. wyjątku który
wystąpi. Takie wywołanie możemy obsłużyć poprzez blok do-catch:
do{
let result = try something()
} catch {
// Obsługa błędu
}

Wywołanie metody przy użyciu „try!‟ spowoduje crash aplikacji jeżeli zwróci ona
wyjątek. Wywołanie to działa na zasadzie „do or die‟ ponieważ sytuacja jest analogiczna gdy
próbujemy dostać się do zmiennej która jest nil używając unwrapped optional - program
zakończy się crashem.
let result = try! something() // jeżeli będzie wyjątek - CRASH

Wywołanie metody przy użyciu „try?‟ jest podobne do tego z „try‟. Różnica jest taka,
że stosując tutaj symbol optional‟a nie mamy dokładnej informacji na temat wyjątku jaki
wyrzuciła nam dana metoda. Stosuje się najczęściej gdy skupiamy się na tym czy dana
metoda działa lub nie, a nie na tym co spowodowało jej błąd.
if let result = try? something() {
// wywołanie się udało
} else {
// error :(
}
Ten sam przykład przy użyciu guard‟a :
guard let result = try? something() {
//error :(
}
//wywołanie się udało
11. Czym jest kategoria i po co ją używamy ?
Jest to sposób na dodanie dodatkowych metod do klasy bez bezpośredniego
rozszerzania jej implementacji. Szczególnie przydatne gdy chcemy rozbudować możliwości
klasy której implementacji nie posiadamy np. NSString.

12. Czym jest protokół i jak się go definiuje ?


Spełnia funkcję podobną do interfejsu w javie - definiuje listę metod wymaganych
oraaz opcjonalnych które klasa musi bądź może implementować. Każda klasa może
implementować dany protokół i inne klasy mogą komunikować się za pomocą metod
zdefiniowanych w tym protokole bez konieczności znania typu danej klasy.
@protocol MyProtocol
- (NSUInteger)numberOfRecords;
- (NSString)description;
@optional
- (NSString)titleForRecordAtIndex:(NSUInteger)index;
-
13. Czym jest AutoLayout ?
Mechanizm dynamicznie kalkulujący rozmiar i pozycję widoku na podstawie
założonych stałych (constrainty). Pozwala na wyświetlenie tego samego widoku na różnych
rozmiarach ekranu.

14. Jak nazywa się framework wykorzystywany do budowy interfejsu aplikacji ?


UIKit

15. Składnia implementacji metody w Objective-C


-(void) nazwa : (typ)wartosc: (Typ)wartość {}
16. Tworzenie obiektu w Objective-C
Object box1 = [[Object alloc]init];

17. Wywołanie metody obiektu w Objective-C


[box1 metoda];

18. Do czego służy @property(readonly) w interfejsie klasy?


enkapsulacja pola umożliwiając jedynie odczyt????

19. Jaką praktykę związaną z przedrostkami w nazwach klas proponuje Apple?


Apple reserves two-letter prefixes for use in framework classes. When naming your own
classes, please use a three-letter prefix (iOS 10.1 Realease notes)

20. Czym jest Memory Footprint i jakiego narzędzia użyjemy do jego zbadania ?
https://developer.apple.com/library/prerelease/content/technotes/tn2434/_index.html#//apple
_ref/doc/uid/DTS40017252

21. Do czego służy plik Info.plist ?


https://developer.apple.com/library/prerelease/content/qa/qa1937/_index.html#//apple_ref/do
c/uid/DTS40017549

22. Czym jest App Sandbox ?


https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandbox
DesignGuide/AboutAppSandbox/AboutAppSandbox.html

23. W jaki sposób tworzyć ciągi znaków?


NSString *tomek;

24. Jak wstrzykiwać wartości zmiennych do łańcucha znaków?


??????????Przykład z wykładu:
NSString *make = @"Porsche";
NSString *model = @"911";
int year = 1968;
NSString *message =[NSString s tringWithFormat: @"To jest %@ %@ z roku %d!", make,
model, year];
NSLog(@"%@", message);

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Article
s/formatSpecifiers.html

25. Jak się tworzy, dodaje, modyfikuje i usuwa w obrębie kontenerów klasy NSArray
oraz NSDictionary?
NSArray:
- dodawanie (potrzebny NSMutableArray):
NSMutableArray *shoppingList = [@[@"Eggs", @"Milk"] mutableCopy];
[shoppingList addObject:flour];

- modyfikacja (potrzebny NSMutableArray)


NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:@"N",
@"N", @"N", @"N", @"N", nil];
//a potem
[myArray replaceObjectAtIndex:0 withObject:@"Y"];
- usuwanie (też NSMutableArray)
[anArray removeObjectAtIndex: index];
[anArray removeObject: item];
[anArray removeLastObject];
NSDictionary:
- dodawanie (potrzebny NSMutableDictionary)
NSMutableDictionary *yourMutableDictionary = [NSMutableDictionary alloc]
init];
[yourMutableDictionary setObject:@"Value" forKey:@"MyKey"];

- modyfikacja (też to samo)


[dataArray replaceObjectAtIndex:0 withObject:newDict];

- usuwanie (też to samo)


[dataArray removeObjectForKey:@"myKey"];

26. Do czego służy operator nawiasów kwadratowych [ ] w języku Objective-C ?


do wywoływania metod

27. Która klasa w języku Objective-C jest klasą bazową dla wszystkich klas?
NSObject

28. W jaki sposób wygenerować metody dostępu do pól klasy w Objective-C?

29. Jak wygląda definicja interfejsu klasy?


@protocol ProtocolName

// list of methods and properties

@end

30. Jak wygląda implementacja klasy?

@implementation XYZ

@end

30.b deklaracja klasy


@interface nazwaKlasy : NSObject

@end
31. W jaki sposób uruchamia się nowe activity z poziomu innego?
//przeslanie danych do destination controllera
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showDetailSegue"]){ ViewControllerB
*controller = (ViewControllerB *)segue.destinationViewController;
controller.isSomethingEnabled = YES; } }

//przejscie do widoku po kliknieciu buttona

-(void)myButtonMethod {

[self performSegueWithIdentifier: @"MySegue" sender: self];


}

32. Jakie są zalety istnienia cyklu życia aktywności?

Łatwa kontrola nad stanem aplikacji

33. Jak działa stos systemowy, na którym składowane są aktywności?


chyba jak każdy stos

34. Jaka metoda powinna zostać wykorzystana do inicjalizacji aktywności?


-(void)viewDidLoad() {
[super viewDidLoad];
}

35. W jaki sposób przekazywać parametry między aktywnościami?


http://stackoverflow.com/a/9736559

36. Layers of iOS


37. Na bazie którego systemu operacyjnego powstał system iOS?
BSD
38. W jaki sposób jest zapisywana budowa interfejsu użytkownika w iOS?
format xib dla pojedynczego widoku, storyboard dla całego projektu

38. Czujniki w iOS

- GPS
- Żyroskop
- Akcelometer
- Magnetometer

You might also like