будущее главы

Core

1. Что такое ООП? Основные принципы.

2. Наследование vs Полмиорфизм vs Инкапсуляция vs Абстракция

3. **Ранее и позднее связывание

JAVA

4. *Типы данных.

5. Модификаторы доступа и разница между ними.

6. Класс Object и его методы. Контракт hashcode и equals.

7. Можно ли перегрузить static методы?

8. Классификация ошибок, нужно ли обрабатывать RuntimeExceptions? Как обрабатывать ошибки? Какие unchecked ошибки вы знаете?

9. Привидение типов. Что такое autoboxing? NPE & ССE что такое и как предотвратить?

10. Final finally finalize finish

11. * Какая разница между String, StringBuilder, StringBuffer?

12. * Расскажите про модель памяти в java, как работет GC?

13. * Виды коллекций в Java: List, Set, Queue, Stack. Какие реализации вы используете чаще всего и почему?

14. * Что такое Generic?

15. * Чем отличается процесс от потока? Может ли быть многопоточное приложение синхронным а однопоточное асинхронным?

Android

16. Опишите Activity Lifecycle.

17. ** Последний обратный вызов в жизненном цикле активности — onDestroy(). Система вызывает его в качестве последнего сигнала о том, что экземпляр активности полностью удаляется из системной памяти. Обычно система вызывает onPause() и onStop() перед вызовом onDestroy(). Опишите сценарий, когда onPause() и onStop() не будут вызываться.

18. Компоненты ОС Андроид.

19. Что такое AndroidManifest?

20. Какой механизм запуска компонента. В чем заключается различие между неявным (implicit) и явным (explicit) намерением?

21. * В чем разница между Fragment и Activity?

22. * В чем разница между Service и IntentService? Как они используются?

23. * Пример использования BroadcastReceiver

24. Как передать данные между компонентами? Отличия Serializable и Parcelable.

25. Виды layout. Основные отличия.

26. * Как определяете, какой layout надо использовать для смартфона, а какой для планшета?

27. * Что такое формат APK? Можно ли запускать JAR файлы на Андроид?

28. * Что такое ANR-уведомление в Android и что это значит?

29. ** Что такое multidex, зачем он нужен?

30. Асинхронные механизмы в Android. В чем проблема AsynkTask?

31. Что такое Runtime Permissions ?

32. Как можно организовать хранение данных в Android? Расскажите об этих способах.


2020.02.26 - LuxSoft interview

Броткаст ресиверы. Последовательное оповещение и остоновка оповещений

Работа с сервисами: способы свяи с сервисами. Можно ли общаться через хендлер? А напрямую?

Область видемости? Можно ли сужать и какие на какие можно менять области видемости?

Можно ли переопределять пааблик методы.

Статик и ((А)(null).st)

Работа с обфускатором

Статические анализаторы кода

НАписать задачу в грейдле

///////

Вопросы на собеседовании:

Java Junoor

Новые: 250+ запитань з Java для Junior, Middle та Senior

Что такое View?

Виды Layout

В чем разница между Preference и SharedPreferences

Время жизни Service

Перегрузка конструкторов в фрагментах

Способы хранения данных в Андроиде

AsyncTask в Android

Языки программирования приложений android

Что такое Activity?

Что такое AndroidManifest

Что такое Intent?

Что такое ContentProvider и для чего его используют?

ContentProvider управляет доступом к структурированному набору данных. Он инкапсулирует данные и предоставляет механизмы для определения их безопасности. ContentProvider — это стандартный интерфейс, который соединяет данные в одном процессе с кодом, запущенным в другом процессе.

Последний обратный вызов в жизненном цикле активности — onDestroy(). Система вызывает его в качестве последнего сигнала о том, что экземпляр активности полностью удаляется из системной памяти. Обычно система вызывает onPause() и onStop() перед вызовом onDestroy(). Опишите сценарий, когда onPause() и onStop() не будут вызываться.

onPause()и onStop()не будут вызываться, если finish()вызывается из метода onCreate(). Это может произойти, например, при обнаружении ошибки во время вызова onCreate()и finish(). В таком случае, однако, любая очистка, которую вы ожидали сделать с помощью onPause()и onStop()не будет выполнена.

Хотя onDestroy() — это последний обратный вызов в жизненном цикле активности, стоит упомянуть, что он не всегда может быть вызван и не должен использоваться для уничтожения ресурсов. Лучше иметь ресурсы, созданные в onStart () и onResume (), и уничтожить их в onStop () и onPause соответственно.

Какова связь между жизненным циклом AsyncTask и Activity? Какие проблемы могут появиться в связи с этим? Как можно их избежать?

AsyncTask не привязан к жизненному циклу Activity, который его содержит. Например, если вы запускаете AsyncTask внутри Activity и пользователь поворачивает устройство, активность будет уничтожена (и будет создан новый экземпляр Activity), но AsyncTask останется целым и продолжит работать до завершения.

Затем, когда AsyncTask завершает работу, вместо обновления UI новой Activity, он обновляет прежний экземпляр Activity (то есть тот, в котором он был создан, но который больше не отображается!). Это может привести к исключению (типа java.lang.IllegalArgumentException: View не подключен к оконному менеджеру, если вы используете, например, findViewByIdдля получения представления внутри Activity).

Также существует вероятность того, что это приведет к утечке памяти, так как AsyncTask поддерживает ссылку на Activity, что предотвращает сбор мусора, пока AsyncTask остается в живых.

По этим причинам использование AsyncTasks для длительных фоновых задач, как правило – плохая идея. Для них должен использоваться другой механизм (например, служба).

В чем разница между фрагментом и активностью? Объясните взаимосвязь между ними.

Активность , как правило, одиночная, целенаправленная операция, которую может выполнять пользователь (например, набрать номер, сделать снимок, отправить email, просматривать карту, и т.д.). Но в то же время нет ничего, что помешало бы разработчику произвольно создать сложную активность.

Реализации активности могут дополнительно использовать класс Fragment для создания более модульного кода, более сложных пользовательских интерфейсов для больших экранов, помощи в масштабировании приложения между малыми и большими экранами и т. д. Несколько фрагментов могут быть объединены в пределах одной активности, и, наоборот, один и тот же фрагмент часто можно использовать повторно для нескольких активностей. Эта структура в основном предназначена для содействия повторному использованию кода и облегчению масштабирования.

Фрагмент представляет собой модульный раздел активности с собственным жизненным циклом и входными событиями, который может быть добавлен или удален по желанию. Однако важно помнить, что жизненный цикл фрагмента напрямую зависит от жизненного цикла его хост-активности; т. е. когда активность приостановлена, все фрагменты в ней также будут приостановлены, и когда активность разрушена, все ее фрагменты будут разрушены.

В чем разница между Serializable и Parcelable? Что предпочтительнее использовать в Android?

Serializable — это стандартный Java-интерфейс. Вы просто отмечаете класс Serializable, реализуя интерфейс, и Java будет автоматически сериализовать его в определенных ситуациях.

Parcelable — это специфический для Android интерфейс, где вы сами реализуете сериализацию. Он был создан более эффективным, чем Serializable, а также для обхода некоторых проблем со схемой сериализации Java по умолчанию.

Что такое режимы запуска? Каковы два механизма, с помощью которых они могут быть определены? Какие конкретные типы режимов запуска поддерживаются?

«Режим запуска» — это способ, которым новый экземпляр активности должен быть связан с текущей задачей.

Режимы запуска могут быть определены с использованием одного из двух механизмов:

    • Файл манифеста. При объявлении активности в файле манифеста вы можете указать, как она должна ассоциироваться с задачами при ее запуске. Поддерживаемые значения:

        • standard(по умолчанию). Несколько экземпляров класса активности могут быть созданы и несколько экземпляров могут быть добавлены к одной и той же задаче или различным задачам. Это общий режим для большинства видов деятельности.

        • singleTop отличается от standard тем, что если экземпляр активности уже существует в верхней части текущей задачи, и система перенаправляет намерение на это действие, новый экземпляр не будет создан, поскольку он будет запускать метод onNewIntent()вместо создания нового объекта.

        • singleTask Всегда создается новая задача, а новый экземпляр будет перенесен в задание в качестве корневого. Однако, если какой-либо экземпляр активности существует в какой-либо из задач, система направляет намерение этому экземпляру активности через вызов метода onNewIntent(). В этом режиме экземпляры активности могут быть перенесены в одну и ту же задачу. Этот режим полезен для активностей, которые играют роль точек входа.

        • singleInstance подобна singleTask, с той лишь разницей, что экземпляр no activities не может быть перенесен в ту же задачу singleInstance. Соответственно, активность в режиме запуска всегда находится в одной задаче экземпляра активности. Это специализированный режим и должен использоваться только в приложениях, которые реализуются как одно действие.

    • Intent-флаги. Вызовы startActivity () могут содержать флаг в намерении, который объявляет, как новое действие должно быть связано с текущей задачей. Поддерживаемые значения:

        • FLAG_ACTIVITY_NEW_TASK, То же, что и значение singleTaskв файле манифеста (см. выше).

        • FLAG_ACTIVITY_SINGLE_TOP, То же, что и значение singleTopв файле манифеста (см. выше).

        • FLAG_ACTIVITY_CLEAR_TOP, Если запущенная активность уже запущена в текущей задаче, то вместо запуска ее нового экземпляра будут уничтожены все остальные активности поверх нее, и это намерение будет передано возобновленному экземпляру активности (теперь вверх), через onNewIntent(). В файле манифеста нет соответствующего значения, которое создает такое поведение.

В чем разница между Service и IntentService? Как они используются?

Service является базовым классом для служб Android, который может быть расширен для создания любой из них. Класс, который напрямую расширяет Service запускается в основном потоке. По этой причине он блокирует UI (если он есть) и должен использоваться только для кратковременных задач. Для более длительных задач лучше использовать другие потоки.

IntentService является подклассом Service, который обрабатывает асинхронные запросы (выраженные как «Intent») по требованию. Клиенты отправляют запросы через вызовы startService(Intent). Служба запускается по мере необходимости, по очереди обрабатывает каждую Intent с помощью рабочего потока и останавливается, когда заканчивается работа. Написание IntentServiceможет быть довольно простым; просто расширьте класс IntentService и переопределите метод onHandleIntent(Intent intent), в котором вы можете управлять всеми входящими запросами.

добавить корекции в Collection

???

REST

HDMI sticks

Spring

http://habrahabr.ru/post/215605/

TDD

BDD

DDD

MVC

Entity Component System

Android

UI programming

J2SE

Which APIs? (Please add assessment in brackets)

Which game engine? (Please add assessment in brackets)

OpenGL

NDK

Google Play

Games Services

Location

Google+

In-app Billing

Distribution

Snackbar- что Это?