Comments 60
Всё, конечно, здорово, вопросов много разноплановых. Хотелось бы увидеть от вас вторую статью с развёрнутыми ответами теперь.
+26
Да, в дальнейшем планирую написать ответы. А эта статья поможет проверить текущие знания iOS.
+5
Эти вопросы могут стать началом серии tutorial'ов по iOS development :)
+6
Кто-то подскажет что-то похожее для C# WPF и C# WP? Можно и для джуников тоже.
+2
Неважно, умеешь ли ты программировать. Важно, отвечаешь ли ты на вопросы или нет.
Непонятна категоризация вопросов. В networking попали вопросы по мультитредингу, в UIKit — вопросы по экосистеме.
Ребята, с любым из этих вопросов можно разобраться в ходе работы. Проверяйте мозги, а не начитку.
Непонятна категоризация вопросов. В networking попали вопросы по мультитредингу, в UIKit — вопросы по экосистеме.
Ребята, с любым из этих вопросов можно разобраться в ходе работы. Проверяйте мозги, а не начитку.
+19
Часто, смысл собеседования проверить не только мозги, но и понизить твою самооценку, что несомненно повлияет на уровень запросов соискателя. Т.е. это повод для работодателя сбить цену. Иначе, я ничем не могу объяснить реально дебильные, совершенно не практические вопросы на собеседованиях.
+4
если человек не знает что ответить, то достаточно посмотреть на то как он рассуждает, для этого и нужны каверзные вопросы
0
— Напишите код, который разворачивает строку на С++.
что значит разворачивает?
Networking:
— Что такое deadlock?
— Что такое livelock?
— Что такое семафор?
— Что такое мьютекс?
вы серьезно? какое отношение имеют эти вопросы к Networking
и ни одного вопроса по алгоритмике и структурам данных
что значит разворачивает?
Networking:
— Что такое deadlock?
— Что такое livelock?
— Что такое семафор?
— Что такое мьютекс?
вы серьезно? какое отношение имеют эти вопросы к Networking
и ни одного вопроса по алгоритмике и структурам данных
+10
— Напишите код, который разворачивает строку на С++.Это означает, что «abcd» на входе и «dcba» на выходе.
вы серьезно? какое отношение имеют эти вопросы к NetworkingИзменил на Networking & Multithreading
и ни одного вопроса по алгоритмике и структурам данныхНа полноту обзора всех тем на собеседовании этот топик не претендует. В статье упомянуты вопросы, которые автор получал/задавал на собеседованиях.
-1
Я бы предпочел проверять у кандидатов не уровень абстрактного знания, а умение работать. Эти вещи связаны довольно слабо.
+7
А как еще проверить умение работать? Можно с помощью тестового задания, но я лично, если это не гиганты рынка, отказался бы от его выполнения, дав ссылку на гитхаб, где лежит мой опенсорсный код. Потому что тратить день-два на его выполнение мне не хочется. А задание на 1-2 часа нет смысла давать, потому что оно ничего не покажет. Так что как ни крути, а без технических вопросов на собеседовании никак не обойтись.
-1
> — Как удалить объект в ходе итерации по циклу?
Какой объект?
Какой объект?
0
— Что такое responder chain?
Раз говорим о паттернах, так может их и называть правильно? «Chain of responsibility»
pthread_create(&thread, NULL, startTimer, (void *)t);
Для чего при разработке под iOS использовать POSIX-потоки?
— Atomic vs nonatomic. Чем отличаются? Как вручную переопределить atomic/nonatomic сеттер в не ARC коде?
А что нет вопроса как это сделать с использованием ARC?
+1
Раз говорим о паттернах, так может их и называть правильно? «Chain of responsibility»Вот ссылка на документацию
Для чего при разработке под iOS использовать POSIX-потоки?Мы же говорим о позиции middle/senior.
А что нет вопроса как это сделать с использованием ARC?Если кандидат умеет это делать в не ARC коде, то под ARC ему это не составить труда.
-1
Вот ссылка на документацию
И правда по другому называется у них, просто привык к GOF'у…
Мы же говорим о позиции middle/senior.
А чем реально то они лучше чем GCD или NSOperationQueue вместе с NSOperation? Приходилось ри реально использовать POSIX и как в этом были прюсы? Реально, просто интересно…
+1
Тоже непонимаю, почему не используется NSThread. Зачем мешать всё в одну кучу?
0
В данном примере использован POSIX для отвлечения внимания. Можно с тем же успехом использовать и другие технологии. Мне не приходилось использовать POSIX в проектах, где я учавствовал.
Вот что можно найти в документации по поводу использования POSIX:
Вот что можно найти в документации по поводу использования POSIX:
Use POSIX calls if cross-platform portability is required. If you are writing networking code that runs exclusively in OS X and iOS, you should generally avoid POSIX networking calls, because they are harder to work with than higher-level APIs. However, if you are writing networking code that must be shared with other platforms, you can use the POSIX networking APIs so that you can use the same code everywhere.
-1
Я
pthread_*
сам не использовал, однако неоднократно встречал его применение в различных opensource-библиотеках. Грамотного разработчика применение pthread
не должно смутить.0
Имелась в виду такая ситуация. Есть mutable массив объектов, есть айди объекта, который надо удалить из массива. Как удалить объект с данным айди из массива?
-1
ОК. А какие варианты ответа подходят?
1. Запомнить объект и удалить.
2. Запомнить индекс и удалить.
3. Использовать filtered…
4. Сет индексов при удалении нескольких объектов.
Может есть ещё какие, которые необходимо знать?
1. Запомнить объект и удалить.
2. Запомнить индекс и удалить.
3. Использовать filtered…
4. Сет индексов при удалении нескольких объектов.
Может есть ещё какие, которые необходимо знать?
0
На мой взгляд, чем больше подходов к решению проблемы кандидат может придумать, тем лучше.
Может есть ещё какие, которые необходимо знать?Я может не смог донести суть статьи до читателей, но я не хотел сказать, что если ты не можешь ответить на все вопросы, то ты не senior. Или что если ты ответил, то ты мегакрут. Суть статьи в том, чтобы показать моменты, на которые стоит обратить внимание перед собеседованием.
+2
Пассивная/активная модель это anemic/rich model что ли?
0
Смог ответить на все вопросы :)
Я Junior :)
Я Junior :)
-3
вопрос только в том, насколько правильно вы на них ответили :-)
0
Стандартное желание — такое бы, да для Android…
0
UIKit:
— Что такое Run Loop?
Бугага ))) Автор, не гони!
— Что такое Run Loop?
Бугага ))) Автор, не гони!
-6
Спасибо большое, с большинством вопросов не согласен, но некоторые забрал.
Добавлю парочку своих:
По CoreAnimation
— чем отличается UIView от CALayer
— какие типы CALayer есть?
— чем отличается UIView based Animation от Core Animation
— тайминги в CoreAnimation
— что такое backing store
— чем отличаются аффинные преобразования от трехмерных
Core Data
— что такое Fault и зачем он нужен
— как происходят изменения в NSManagedObjectContext
— синхронизация разных типов NSManagedObjectContext (получение и изменение данных в child контекстах).
— зачем нужен NSPersistentStoreCoordinator
— зачем нужно делать двустороннии связи в таблицах
— что таке Fetched Property и особенности работы с ним по сравнению с обычной связью
Ну то что сразу на ум пришло. Обычно вообще вопросы придумываю по ходу общения.
Добавлю парочку своих:
По CoreAnimation
— чем отличается UIView от CALayer
— какие типы CALayer есть?
— чем отличается UIView based Animation от Core Animation
— тайминги в CoreAnimation
— что такое backing store
— чем отличаются аффинные преобразования от трехмерных
Core Data
— что такое Fault и зачем он нужен
— как происходят изменения в NSManagedObjectContext
— синхронизация разных типов NSManagedObjectContext (получение и изменение данных в child контекстах).
— зачем нужен NSPersistentStoreCoordinator
— зачем нужно делать двустороннии связи в таблицах
— что таке Fetched Property и особенности работы с ним по сравнению с обычной связью
Ну то что сразу на ум пришло. Обычно вообще вопросы придумываю по ходу общения.
+1
По поводу вот этого вопроса:
Я не понял, почему он должен быть strong? Вообще не могу в голове придумать ни одной причины чтоб он в любом случае должен быть таким? Более того могу придумать причины, почему такого делать нельзя, например когда два объекта в самом простом случае являются делегатами друг друга. Во избежании циклической связи один из них должен быть weak.
Делегата же может и вообще не быть, почему тогда исключать возможность, что он может пропасть в любой момент, если нам не нужно гарантировать его постоянное присутствие?
— Зачем все свойства ссылающиеся на делегаты strong/retain. :)))
Я не понял, почему он должен быть strong? Вообще не могу в голове придумать ни одной причины чтоб он в любом случае должен быть таким? Более того могу придумать причины, почему такого делать нельзя, например когда два объекта в самом простом случае являются делегатами друг друга. Во избежании циклической связи один из них должен быть weak.
Делегата же может и вообще не быть, почему тогда исключать возможность, что он может пропасть в любой момент, если нам не нужно гарантировать его постоянное присутствие?
0
вот этот вопрос в недоумении вообще вгоняет:
Он лично для меня звучит как «в чем разница между ведром и лопатой». Что автор имел ввиду я думаю в процессе собеседования уточнить можно, но так в общем виде это звучит некорректно.
— Асинхронность vs многопоточность. Чем отличаются?
Он лично для меня звучит как «в чем разница между ведром и лопатой». Что автор имел ввиду я думаю в процессе собеседования уточнить можно, но так в общем виде это звучит некорректно.
0
У меня на интервью по С++ был вопрос
Правильный ответ:
Я к тому, что разница между Асинхронностью и многопоточностью имеется. Понятия взаимосвязанные, но разные.
— В чем разница между виртуальными функциями и полиморфизмом?
Правильный ответ:
— Полиморфизм — это теоретическая фича ООП, а виртуальные функции — это имплементация полиморфизам в С++.
Я к тому, что разница между Асинхронностью и многопоточностью имеется. Понятия взаимосвязанные, но разные.
+1
— Как можно заимплементировать autorelease pool на с++?
«заимплементировать» — реализовать :-)
зачем на С++, вообще причем он здесь. Если уже проверять знания языка, то С. С++ каким тут боком?
А этот вопрос я бы сформулировать как: напишите простую реализацию NSAutoreleasePoll на Objective-C
0
можно и на objective-c. Cуть — выяснить как человек понимает работу NSAutoreleasePoll. Большинство вопросов провокационных. И цель их — услышать рассуждения. 100% правильного ответа может и не существовать. На своем опыте могу сказать, что после того, как объяснил интервьюверу, как реализовать NSAutoreleasePoll на плюсах, то лучше понял его(NSAutoreleasePoll) работу.
0
Очень странный список. На приличное количество вопросов не отвечу, не очень понятно что делаю на позиции senior developer'а :)
Зачем, к примеру, спрашивать про core data, если в проекте оно не используется? Разве как-то изменит впечатление, если человек его знает, но больше ничего не расскажет? И наоборот — всюду понравился, а с core data не работал и ничего сказать не сможет.
Вообще говоря, мне кажется, что все эти вопросы спрашивать в принципе не нужно. Как говаривал мой преподаватель по матану: «На экзамене билет дается исключительно для того, чтобы преподавателю было с чего начать разговор со студентом». Так и тут — начинаешь с чего-то привычного, а дальше уже как кривая выведет. Подобные разговоры дают гораздо лучшее представление о кандидате.
Зачем, к примеру, спрашивать про core data, если в проекте оно не используется? Разве как-то изменит впечатление, если человек его знает, но больше ничего не расскажет? И наоборот — всюду понравился, а с core data не работал и ничего сказать не сможет.
Вообще говоря, мне кажется, что все эти вопросы спрашивать в принципе не нужно. Как говаривал мой преподаватель по матану: «На экзамене билет дается исключительно для того, чтобы преподавателю было с чего начать разговор со студентом». Так и тут — начинаешь с чего-то привычного, а дальше уже как кривая выведет. Подобные разговоры дают гораздо лучшее представление о кандидате.
+1
Мне, как интервьюверу, не важно ответите Вы правильно или нет. Важны Ваши рассуждения в ходе раздумий. На это, по-моему, надо делать упор.
0
Рассуждения это хорошо, я так и написал. Вот только каких рассуждений вы ждете на вопрос «что такое мьютекс?», если человек не знает ответ?
0
Вопросы типа «что такое мьютекс?» нужны, чтобы понять в каких областях человек работал и как глубоко он в них разобрался. А ответ на этот конкретный вопрос надо знать, потому что он из общего программирования.
-1
Я один не понимаю, зачем iOS Delevoper'у нужен C++?
0
Например, вы разработчик iOS, Android, Windows Mobile(Phone). Написали собственную обертку для OpenGL ES на C++. Подключаете её в свои проекты. Пишете для неё unit-тесты и спокойной дорабатываете.
У меня есть проект на ObjC с подключением OCR библиотеки написанной на C++, использующей OpenCV.
У меня есть проект на ObjC с подключением OCR библиотеки написанной на C++, использующей OpenCV.
0
Тогда давайте еще добавим вопросов по Java/C# и другим языкам программирования. На них тоже можно делать кроссплатформу для телефона.
Но тут же вроде вакансия на чистого iOS девелопера. И что тут делает C++, который ему не нужен?
Но тут же вроде вакансия на чистого iOS девелопера. И что тут делает C++, который ему не нужен?
0
UFO just landed and posted this here
Sign up to leave a comment.
Вопросы на собеседование middle/senior iOS Developer