Wszyscy wiemy, że rozmowy rekrutacyjne bywają stresujące - nieważne, czy to Twoja pierwsza rozmowa w życiu, czy jesteś doświadczonym programistą z kilkoma latami pracy na koncie.
Jako rozmówca musisz chcieć pokazać się z dobrej strony, a to naprawdę trudne w ciągu mniej więcej godziny rozmowy. My, programiści, zwykle nie chcemy uczyć się dokumentacji na pamięć, a nawet po prostu jej googlujemy. I to jest w porządku. Nikt nie oczekuje, że będziemy pamiętać wszystko... chyba że to rozmowa rekrutacyjna.
Dla rekrutera też nie musi to być łatwe. Chcesz zatrudnić do firmy kogoś, kto dobrze wpasuje się w zespół, a nie masz zbyt wiele czasu, żeby poznać tę osobę. Musisz wiedzieć, o co pytać i jak się zachować - nie chcesz, żeby druga strona poczuła się niekomfortowo, bo to może prowadzić do błędnej oceny i utraty świetnego programisty.
W dużej mierze obie strony muszą przygotować się do pytań rekrutacyjnych dla programisty iOS i mamy nadzieję, że nasza strona z zaawansowanymi pytaniami i odpowiedziami rekrutacyjnymi z iOS pomoże Ci przygotować się do przyszłych rozmów odrobinę lepiej.
01
Swift, nowoczesny język programowania, został ogłoszony przez Apple Inc. w czerwcu 2014 roku.
Niektóre kluczowe funkcje są unikalne i potężne: generyki, krotki, domknięcia i wnioskowanie typów są opcjonalne.
02
Swift korzysta z typowania statycznego, które może prowadzić do błędu kompilatora. Objective-C korzysta z typowania dynamicznego, które sprawdza typy w czasie wykonania. Oznacza to, że kod może się skompilować, nawet jeśli zawiera błędy uniemożliwiające poprawne działanie skryptu.
03
Funkcja, która pozwala kompilatorowi automatycznie ustalić typ danych zmiennej na podstawie wartości, bez podawania typu wprost.
04
Typ, który może przyjąć dowolny typ. Jest bezpieczny typowo, co oznacza, że kompilator zaprotestuje w czasie kompilacji. Na przykład jeśli przekażesz string jako typ generyczny i użyjesz go jako liczby całkowitej, wystąpi błąd kompilacji. To dobrze, bo błędy można wychwycić z wyprzedzeniem.
05
W Objective-c każdy obiekt może być nil. W Swifcie tylko Optionale mogą mieć wartość null.
06
Protokół to interfejs, czyli zawiera abstrakcyjne metody, stałe i zmienne. Protokoły zapewniają wspólną funkcjonalność między klasami. Możesz implementować wiele protokołów.
07
W Swifcie stała pozostaje stała, a zmienna się zmienia. Zmienność jest określana w momencie inicjalizacji zmiennej słowem kluczowym, a nie konkretną klasą danych.
W Objective-C zmienność jest ograniczona do konkretnych klas. Na przykład, aby móc zmieniać rozmiar tablicy, trzeba użyć typu NSMutableArray.
08
Subskrypty to skróty umożliwiające dostęp do elementów kolekcji, listy lub sekwencji.
09
AnyObject nie określa żadnego typu, więc pozwoli przekazać dowolny typ, co może doprowadzić do błędu w czasie wykonania (co jest złe). Przy generykach trzeba podać typ, więc nie pozwolą one nic przekazać, jeśli wpiszesz zły typ w czasie kompilacji (co jest dobre).
10
Optional to typ, który może przechowywać wartość nil. Gdy przechowuje wartość, opakowuje ją. Aby wydobyć wartość z parametru opcjonalnego, trzeba go rozpakować.
01
Struktury są typami wartościowymi, a klasy typami referencyjnymi.
02
Stos i sterta pamięci
03
Stos to prosta struktura pamięci typu first-in-first-out (FIFO). Stos zawsze służy do przechowywania dwóch rzeczy: części referencyjnej zmiennych lokalnych i parametrów typu referencyjnego oraz zmiennych lokalnych i parametrów metod o typie wartościowym.
Pamięć sterty zawiera losowo rozmieszczone obiekty przechowywane w pamięci. Zaletą jest to, że pozwala alokować i zwalniać obiekty w dowolnej kolejności. Wymaga to używania funkcji garbage collectora do zwalniania pamięci.
Sterta przechowuje: zawartość obiektów typu referencyjnego.
04
Samodzielne funkcje zorganizowane w bloki. Można je przekazywać i zagnieżdżać jedne w drugich. Domknięcie można przekazać jako argument funkcji albo przechować jako właściwość obiektu.
05
To wskaźnik na dowolny typ w objective-c. (Tak jak Any w Swifcie) Ponieważ może przechowywać dowolny typ, nie będzie błędów kompilacji, a później można go rzutować na inny typ.
06
Jest to traktowane jako brak działania (no operation). Po prostu wykona się następna instrukcja. To nie jest błąd i zwróci po prostu nil lub 0.
07
NSArray stosuje się wtedy, gdy nie chcesz zmieniać rozmiaru ani danych przechowywanych w tablicy. W tablicy NSMutable możesz dodawać, usuwać i zmieniać wartości w tablicy.
08
Dynamiczne typowanie w czasie kompilacji.
09
Przez wzorzec przejścia (transition) i delegacji.
10
Jeśli użyjesz opcjonalnego słowa kluczowego "inout" przy parametrze, pierwotna wartość przekazana w parametrze zmieni się po wykonaniu funkcji.
func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a
a = b
b = temporaryA
}
01
To framework dostarczany przez Apple, który zajmuje się wieloma wątkami. Używa się go, gdy chcesz wykonać zadanie asynchroniczne. Na przykład jeśli chcesz pobrać dane z API, możesz użyć GCD, aby wykonać pobieranie asynchronicznie.
02
Przy wykonaniu synchronicznym jedno zadanie nie zaczyna się, dopóki nie skończy się poprzednie. Przy planowaniu zadań asynchronicznych zadania działają równolegle.
weak var name: String?
03
To system w xCode, który dynamicznie wylicza rozmiar i pozycję wszystkich widoków na podstawie nałożonych na nie ograniczeń (constraints).
04
Autorskie repozytorium danych od Apple zapewnia trwałe przechowywanie danych. Łatwo się nim zarządza, bo w xcode możesz zmienić nazwę modelu lub jego atrybuty. Jest natywne, więc bardzo łatwo je aktualizować.
05
Granice UIView to położenie (x, y) i szerokość (x, y), ale frame UIView odnosi się do widoku nadrzędnego, w którym UIView się zawiera.
06
Wzorzec projektowy w programowaniu, w którym można używać tylko jednej instancji na klasę. Ta instancja nazywana jest "shared instance".
07
To rozwiązania problemów programistycznych, takie jak wzorzec obiektowy zastosowany w odpowiedniej sytuacji.
08
09
„Delegat to obiekt, który działa w imieniu innego obiektu lub w koordynacji z nim, gdy ten obiekt napotka zdarzenie w programie.” © Apple
10
Kategorie to termin z Objective-c oznaczający szybkie rozszerzanie. Zasadniczo możesz rozszerzyć domknięcie poza klasą. W objective-c trzeba nazwać rozszerzenie / kategorię.
W naszej sieci talentów są setki sprawdzonych w boju ekspertów od tworzenia oprogramowania.
Jesteś programistą iOS i szukasz świetnych projektów? Dołącz jako Talent
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści