Najlepsze pytania i odpowiedzi rekrutacyjne z iOS

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.

Pytania rekrutacyjne dla junior developera iOS

01

Czym jest Swift? Wyjaśnij kilka jego cech.

Swift, nowoczesny język programowania, został ogłoszony przez Apple Inc. w czerwcu 2014 roku.

  • Szybki (statyczne wywoływanie metod)
  • Bezpieczny (bezpieczny typowo)
  • Przyjazna składnia (bardziej zwięzła niż w objective-c)

Niektóre kluczowe funkcje są unikalne i potężne: generyki, krotki, domknięcia i wnioskowanie typów są opcjonalne.

02

Jaka jest różnica między typowaniem statycznym a dynamicznym?

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

Czym jest wnioskowanie typów?

Funkcja, która pozwala kompilatorowi automatycznie ustalić typ danych zmiennej na podstawie wartości, bez podawania typu wprost.

04

Czym są generyki?

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

Czy obiekty mogą być nil w Objective-c i Swifcie?

W Objective-c każdy obiekt może być nil. W Swifcie tylko Optionale mogą mieć wartość null.

06

Czym są protokoły?

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

Jak osiąga się zmienność w Swifcie i Objective-c?

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

Czym są subskrypty?

Subskrypty to skróty umożliwiające dostęp do elementów kolekcji, listy lub sekwencji.

09

Jaka jest różnica między Any Object a generykami?

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

Czym jest optional?

Optional to typ, który może przechowywać wartość nil. Gdy przechowuje wartość, opakowuje ją. Aby wydobyć wartość z parametru opcjonalnego, trzeba go rozpakować.

Pytania rekrutacyjne dla mid developera iOS

01

Jaka jest różnica między Struct a Class?

Struktury są typami wartościowymi, a klasy typami referencyjnymi.

02

Wymień dwa rodzaje struktur danych służących do alokacji pamięci.

Stos i sterta pamięci

03

Jaka jest różnica między pamięcią stosu a sterty?

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

Czym są domknięcia?

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

Czym jest identyfikator typu?

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

Co się dzieje, gdy wywołasz metodę na wskaźniku nil w Objective-C?

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

Jaka jest różnica między NSArray a NSMutable?

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

Czym jest rozstrzyganie metody dynamicznej?

Dynamiczne typowanie w czasie kompilacji.

09

Na dwa sposoby można przekazać dane z jednego ViewControllera do drugiego - jakie to sposoby?

Przez wzorzec przejścia (transition) i delegacji.

10

Czym są parametry wejściowe i wyjściowe? Jak używa się &(ampersanda) w takim parametrze?

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
}

Pytania rekrutacyjne dla senior developera iOS

01

Czym jest GCD? Do czego się go używa?

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

Jaka jest różnica między zadaniami synchronicznymi a asynchronicznymi?

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

Czym jest Auto Layout?

To system w xCode, który dynamicznie wylicza rozmiar i pozycję wszystkich widoków na podstawie nałożonych na nie ograniczeń (constraints).

04

Czym jest Core Data? Do czego służy?

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

Różnica między bounds a frame.

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

Czym jest singleton?

Wzorzec projektowy w programowaniu, w którym można używać tylko jednej instancji na klasę. Ta instancja nazywana jest "shared instance".

07

Czym jest wzorzec projektowy?

To rozwiązania problemów programistycznych, takie jak wzorzec obiektowy zastosowany w odpowiedniej sytuacji.

08

Jakie są trzy główne rodzaje wzorców projektowych?

  • behawioralne
  • kreacyjne
  • strukturalne

09

Czym jest wzorzec delegacji?

„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

Czym jest kategoria w Swifcie?

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

Frame 1670
Rekrutujemy!
Szukasz pracy jako programista iOS? Zbuduj udaną karierę z Ideamotive.
Aplikuj
Szukasz sprawdzonych programistów iOS do swojego zespołu?

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