— Лайвкодинг: Лайвкодинг с собеседования представлен в прикреплённом файле.
— Вопросы по управлению памятью (Memory Management) и ссылочным/значимым типам (Reference/Value Types):
1. Расскажи про reference и value-типы в Swift.
2. Какие бывают исключения, когда value-типы хранятся не на стеке?
3. Что происходит, когда мы передаем value-тип, или присваиваем его в переменную, или передаем в функцию?
4. Для каких типов данных используется механизм copy-on-write?
5. Пробовал ли ты сам реализовывать copy-on-write?
6. Можно ли как-то изменить значение переменной, которая является value-типом, переданную в функцию?
7. Расскажи про ARC (Automatic Reference Counting).
8. На каком этапе происходит ARC?
9. Чем отличается weak от unowned?
10. В какой момент происходит деаллокация объекта, когда счетчик сильных ссылок достигает нуля?
11. Подскажи, потокобезопасен ли счетчик ссылок?
12. Можно ли как-нибудь вывести объект из управления ARC?
13. Можно ли создать retain cycle для структур?retain cycle для структур?
— Вопросы по диспетчеризации (Method Dispatch):
1. Расскажи, какие методы диспетчеризации ты знаешь, и подробно опиши каждый. 2. Можно ли в классе “зафорсить” статическую диспетчеризацию? 3. Какие еще есть способы получить статическую диспетчеризацию? 4. Как сделать так, чтобы использовался message dispatch? 5. Почему message dispatch самый медленный? 6. Можно ли в Swift вызвать функцию у объекта класса, который не реализован?
— Вопросы по View и View контроллерам:
1. Для чего нужен UI View Controller?
2. Что представляет собой View?
3. Если мы в View Controller обратимся к view, она будет nil?
4. Есть ли способ узнать, создана ли view, не запуская жизненный цикл?
5. Какие способы загрузки view ты знаешь?
6. Может ли быть такая ситуация, что viewdidload будет вызван дважды?
7. На каком этапе жизненного цикла view controller известны финальные фреймы всех subview?
8. В каком порядке будут вызваны API-методы, если ты пушишь экран в UINavigationController (текущий контроллер A, пушишь B)?
9. В каком методе View Controller можно вызывать анимацию view или subview?
10. Как можно “зафорсить” layoutSubviews? Как можно “зафорсить” layoutSubviews?
— Вопросы по многопоточности (Concurrency):
1. Расскажи, какие проблемы в многопоточном коде ты встречал и как их решал? 2. Какие типы очередей бывают в GCD? 3. Какие Serial и Concurrent очереди есть в Swift “из коробки”? 4. Можно ли написать такой код, который будет читать с разных потоков, но писать только с одного? 5. Чем асинхронность отличается от многопоточности?ности? — Лайвкодинг: Лайвкодинг с собеседования представлен в прикреплённом файле.
— Вопросы по управлению памятью (Memory Management) и ссылочным/значимым типам (Reference/Value Types):
1. Расскажи про reference и value-типы в Swift.
2. Какие бывают исключения, когда value-типы хранятся не на стеке?
3. Что происходит, когда мы передаем value-тип, или присваиваем его в переменную, или передаем в функцию?
4. Для каких типов данных используется механизм copy-on-write?
5. Пробовал ли ты сам реализовывать copy-on-write?
6. Можно ли как-то изменить значение переменной, которая является value-типом, переданную в функцию?
7. Расскажи про ARC (Automatic Reference Counting).
8. На каком этапе происходит ARC?
9. Чем отличается weak от unowned?
10. В какой момент происходит деаллокация объекта, когда счетчик сильных ссылок достигает нуля?
11. Подскажи, потокобезопасен ли счетчик ссылок?
12. Можно ли как-нибудь вывести объект из управления ARC?
13. Можно ли создать retain cycle для структур?retain cycle для структур?
— Вопросы по диспетчеризации (Method Dispatch):
1. Расскажи, какие методы диспетчеризации ты знаешь, и подробно опиши каждый. 2. Можно ли в классе “зафорсить” статическую диспетчеризацию? 3. Какие еще есть способы получить статическую диспетчеризацию? 4. Как сделать так, чтобы использовался message dispatch? 5. Почему message dispatch самый медленный? 6. Можно ли в Swift вызвать функцию у объекта класса, который не реализован?
— Вопросы по View и View контроллерам:
1. Для чего нужен UI View Controller?
2. Что представляет собой View?
3. Если мы в View Controller обратимся к view, она будет nil?
4. Есть ли способ узнать, создана ли view, не запуская жизненный цикл?
5. Какие способы загрузки view ты знаешь?
6. Может ли быть такая ситуация, что viewdidload будет вызван дважды?
7. На каком этапе жизненного цикла view controller известны финальные фреймы всех subview?
8. В каком порядке будут вызваны API-методы, если ты пушишь экран в UINavigationController (текущий контроллер A, пушишь B)?
9. В каком методе View Controller можно вызывать анимацию view или subview?
10. Как можно “зафорсить” layoutSubviews? Как можно “зафорсить” layoutSubviews?
— Вопросы по многопоточности (Concurrency):
1. Расскажи, какие проблемы в многопоточном коде ты встречал и как их решал? 2. Какие типы очередей бывают в GCD? 3. Какие Serial и Concurrent очереди есть в Swift “из коробки”? 4. Можно ли написать такой код, который будет читать с разных потоков, но писать только с одного? 5. Чем асинхронность отличается от многопоточности?ности?