Неплохой чек-лист с хабра. Жирным отметил то, что я осознал и выучил. Курсивом то, о чем имею представление, но не закрепилось еще.



  • Файл AndroidManifest.xml: зачем нужен, необходимые параметры, секции. Здесь нужно рассказать про таг и , рассказать про параметр packageName, про и, про компоненты приложения, которые указываются.

  • Структура проекта: assets, res, src, gen, libs. Что лежит в каждой папке, что должно лежать под версионным контролем, а что нет (папка gen никогда не кладется в VCS). Соответственно ассеты, ресурсы (картинки, музыка, лэйауты), java-код, сгенеренный код, библиотеки.

  • Компоненты приложения. Activity, Service, BroadcastReceiver, ContentProvider. Зачем нужен каждый, как осуществляется работа, lifecycle каждого компонента.

  • Особенности запуска Activity и Service. Что такое Task, Activity Stack. Как принимается решение о запуске процесса Service.

  • ContentProvider, зачем нужен, как используется. Доступ и использование ContentResolver. Работа с курсорами. Помнить про managed cursors.

  • BroadcastReceiver: статические и динамические, механизмы вызова, lifecycle.

  • Межпроцессное взаимодействие. Что такое и зачем нужен Intent, как передавать информацию с его помощью, что такое Bundle и зачем нужен Parcelable. IntentFilter и для чего применяется. Способы взаимодействия Activity и Service(старт, биндинг). AIDL(Android interface definiotn language).

  • Построение UI приложения. Что такое Layout и View, какие бывают типы layout'ов(4 штуки), зачем они применяются. Оптимизация UI под различные размеры экранов и плотность пикселей(использование dp).

  • Хранение данных в платформе: 4 типа. Internal, External Storage, DB, SharedPreferences. Варианты использование, отличия.

  • Локализация. Встроенные средства платформы для локализации, моменты выбора локали.

  • Виджеты. Механизм создания виджетов, доступные средства UI в них. Что такое AppWidgetProvider.

  • Работа в фоне. Когда использовать Service, когда AsyncTask. Что такое AsyncTask, его связь с UI. Сущность IntentService — что делает и чем полезна.

  • Модель безопасности в Android. Разрешения.

  • Использование телефонных средств: сенсоров, вибрации, GPS.

  • Новинки платформы: Loaders, Fragments, In-app billing.

  • Производительность в платформе: best practices. Неиспользование enums до 2.2, использование final и проч. Особенность работы на мобильном: ограничение по памяти и процессоу.

  • Поддержка старых версий платформы: доступ до функциональности через Reflection.

  • Собственные views: механизмы отрисовки, Canvas.

  • Состояния компонент: какие компоненты системы могут сохранять состояния(Activity и View), способы сохранения и восстановления состояний, отличия механизмов для Activity и View.

  • Механизмы подписи приложений для публикации в Android Market.

  • Android NDK: вызов нативного кода

  • Фреймворки для разработки под различные мобильные OS: Titanium, PhoneGap и прочие.

  • Наследование в java, интерфейсы, абстрактные классы, классы, внутренние и анонимные. Множественное наследование интерфейсов, когда применяется. Замыкания.

  • Модификаторы в java: доступа, синхронизации, прочие(static и final). Влияние final на производительность.

  • Collections: типы коллекций(List, Set, Map). Различные реализации, применимость коллекций в тех или иных случаях. Сложность вставки, чтения и поиска в различных реализациях.

  • Многопоточность: потоки, способы синхронизации, методы wait и notify. Ключевое слово synchronized, когда используется, что означает.

  • Отличия библиотеки классов Java SE и платформы Android.


@темы: Android, Программирование