Вопросы ответы по android
Возникли вопросы по Android OS ? Впервые знакомитесь с этой Операционной Системой ? Тогда эта тема специально для Вас. Здесь можете без стеснения задавать любые вопросы, связанные с Android, по которым не нашлось темы обсуждения.
- Прежде всего, ознакомьтесь с полезными ссылками на имеющиеся темы форума. В специализированных (профильных) темах всегда подскажут более точно.
- Если желаете получить права Root — читайте >>здесь (на примере телефонов марки LG)
Что рекомендуется указать в своём сообщении:
- Полное название устройства (Производитель, модель).
- Версия операционной системы.
- Наличие, либо отсутствие Root прав на устройстве.
- Какие действия производились (установка прошивки, сброс настроек до заводских и т. п.)
- Чем грамотней Вы опишите проблему, чем больше информации предоставите и чем внимательнее прочитаете шапку — тем больше шансов, что Вам смогут помочь!
Убедительная просьба ко всем опытным пользователям, которые решили помочь новичкам: Не нужно смеяться над наивными и где-то не самыми умными вопросами, не нужно показывать своё превосходство. Все когда-то только начинали осваивать новое и задавали вопросы. Проявляйте уважение к каждому пользователю, не провоцируйте конфликт. Отвечайте прямо и по существу.
Сообщение отредактировал gar_alex — 15.03.21, 00:43
Источник
ziginsider
Перевод статьи Mohamed Ibrahim I had 10 Android interviews during the last two years, here’s the questions plus some lessons I’ve learned.
У меня было 10 Android собеседований за последние два года. Вот вопросы, которые мне задавали, и уроки которые я извлек.
Прошло два года с тех пор, как я стал заниматься разработкой на Android. Я был поражен количеством ресурсов для изучения Android, и тем, как сообщество разработчиков делится знаниями и объединяется, чтобы сделать разработку более увлекательной, и тем как постепенно растут требования разработчиков к тестированию кода, его поддержке и удобочитаемости.
На протяжении этих двух лет у меня было около десяти собеседований. Одни из них проходили гладко, другие — не очень, но каждое из них показывало мои пробелы в знаниях. Обычно, цель соискателя на собеседовании — получить работу, но кроме того это может быть хороший инструмент, чтобы понять свой уровень в аспектах языка, средств программирования и бизнес-циклах разработки.
У меня не было опыта в компьютерных науках, поэтому я решил черпать знания из чтения, прохождения различных руководств, включая, разумеется, материалы на Udacity. Я даже начал проходидь курс на MAL под названием “Основы Android”, и с этого момента началась моя история разработки под Android.
Давайте сначала я расскажу о стилях собеседований в разных компаниях, куда я попадал (названия компаний я обозначил инициалами), а затем перейдем к вопросам, которые мне запомнились.
Стиль собеседования
EP: Мэйнстрим Android разработки и вопросы по Java. — Задачи: экран входа в систему с email и паролем, зарегистрированный пользователь должен автоматически входить в систему, при повторном использовании приложения.
IC: Собеседование в свободной, дружественной форме. Разговор о средствах разработки, технологиях и качестве кода. — Задачи: нет.
SD: Тестирования гибкости кандидата (например, способность переключатся между нативной и гибридной разработкой). — Задачи: сделать игру, в которой предметы только определенного рода собираются в ведро.
AT: Мэйнстрим Android разработки и вопросы по Java. — Задачи: нет.
AR: Мэйнстрим Android разработки и вопросы по Java. — Задачи: нет.
SW: Мэйнстрим Android разработки и вопросы по Java. — Задачи: нет.
RA: Чем больше вы верно отвечаете, тем сложнее вопросы. — Задачи: приложение для фото, в котором изображения хранят метку о погоде.
VN: Чем больше вы верно отвечаете, тем сложнее вопросы. Общение в дружественной форме — Задачи: нет.
IB: Упор на Java. Вопросы становятся сложнее. — Задачи: приложение, которое показывает список авиакомпаний с сервера api.
WM: Java и Android и тестирование гибкости. — Задачи: нет.
Это все. Надеюсь я ничего не забыл. Однако, почему я дал список собеседований в таком виде? Потому что компании разные, некоторым из них нужен Android разработчик чтобы сделать конкретную работу, и сделать ее идеально — это, обычно, большие компании.
Другим может потребоваться разработчик, открытый для новых знаний, который быстро обучается, может работать с разными технологиями (бэкенд, системное администрирование и т.д.) — это могут быть небольшие компании или стартапы. И у каждой компании своя перспектива на вас. Поэтому вам не стоит опираться только на технические детали. Узнайте больше о компании, гляньте ее продукты, перед тем как идти на собеседование. Подготовьте свои вопросы для них, потому что это не одностороннее интервью и никогда не должно быть таким.
Сейчас я приведу список вопросов. Но не стоит просто запоминать ответы на них. Это плохой путь. Необходимо самому прийти к пониманию каждого вопроса. Попробуйте почитать stackoverflow по каждой теме, читайте комменты также, я нахожу этот портал лучшим, для объяснения технических вопросов, потому что каждый из отвечающих хочет сделать это лучше.
Старайтесь создавать небольшие приложения, чтобы понять, как работает та или иная штука. Примеры Google — хороший способ для изучения разных областей Android разработки.
NB (от переводчика): хорошая статья о темной стороне собеседований https://danluu.com/programmer-moneyball/
Вопросы на собеседованиях (не упорядочены по сложности)
4.0.3. Ice Cream Sandwich
Marshallow: 1. https://ru.wikipedia.org/wiki/Android_Marshmallow 2. https://4pda.ru/2015/10/05/249631/
2. Какая цель у Activity?
Activity — это компонент приложения, который выдает экран, и с которым пользователи могут взаимодействовать для выполнения каких-либо действий, например набрать номер телефона, сделать фото, отправить письмо или просмотреть карту. Каждой Activity присваивается окно для прорисовки соответствующего пользовательского интерфейса. Обычно окно отображается во весь экран, однако его размер может быть меньше, и оно может размещаться поверх других окон.
Все объекты Activity представляют собой объекты класса android.app.Activity, которая содержит базовую функциональность для всех Activity.
3. Какая цель у Fragment’ов?
Cодержит часть UI в Activity.
Организация приложения на основе нескольких Activity не всегда может быть оптимальной. Мир ОС Android довольно сильно фрагментирован и состоит из многих устройств. И если для мобильных аппаратов с небольшими экранами взаимодействие между разными Activity выглядит довольно неплохо, то на больших экранах — планшетах, телевизорах окна Activity смотрелись бы не очень в силу большого размера экрана. Собственно поэтому и появилась концепция Fragment.
Fragment существует в контексте Activity и имеет свой жизненный цикл, вне Activity обособлено он существовать не может. Каждая Activity может иметь несколько Fragment.
4. Расскажите о жизненном цикле Activity?
5. Расскажите о жизненном цикле Fragment?
6. Вы используете приложение для путешествий, затем нажимаете кнопку настроек, открывается Activity настроек, затем вы кликаете «назад» — что происходит с жизненным циклом Activity настроек и с циклом главного Activity при этом?
7. Что вы знаете о Material design?
8. Какая разница между абстрактным классом и интерфейсом в Java?
9. Что такое интерфейс в Java?
10. Что такое абстрактный класс в Java?
11. Почему нельзя создать экземпляр абстрактного класса?
12. Какая разница между Dialog и AlertDialog в Android?
13. Какая разница между LinearLayout и RelativeLayout?
14. Где выше производительность, у LinearLayout или RelativeLayout?
15. Возьмем макет контакта с картинкой, именем и номером, как вы реализуете его в XML?
16. Что такое Service, с какими потоками он работает?
17. Какая разница между Service и IntentService?
18. Что такое ANR message?
19. Объясните работу BroadcastReciever и его реализацию.
20. Можете ли вы использовать фрагмент без UI? В каких случаях вы бы использовали этот паттерн?
21. Расскажите о модификаторах доступа в Java?
22. Какая разница между Default и Protected модификаторами в Java?
23. Что вы знаете об AsyncTask?
24. В чем разница между Parcelable и Serializable? Что лучше? Почему?
25. Как получить доступ к переменной в Activity из Fragment’а?
26. У вас есть Activity с двумя Fragment’ами, у одного есть кнопка, у другого — TextView, кликая на кнопку, меняется TextView. Как вы реализуете это?
27. Как сделать переменную потоко-безопасной?
28. Какие стратегии мы можем использовать, чтобы достигнуть потоко-безопасности?
29. В чем цель ключевого слова «static» в Java?
30. Как можно инициализировать static-переменную в Java?
31. Какие паттерны проектирования вы знаете?
32. Объясните принцип паттерна проектирования «Строитель»?
33. Где вы использовали паттерн «Наблюдатель»?
34. Паттерн Singleton, где его использовать в Android?
35. В чем разница между LinkedList, ArrayList и Arrays?
36. Над каким проектом вы сейчас работаете? Каков ваш рабочий процесс реализации задуманной функциональности?
37. Как вы управляетесь с Firebase push notifications?
38. Как реализовать Firebase realtime Database?
39. У вас есть большой проект и у вас есть требования к безопасному входу в систему. Как вы будете реализовывать эти требования?
40. Что такое Eventbus?
41. В каком потоке вызывается метод onRecieve() в BroadcastReceiver’е?
42. Как реализовать кастомный BroadcastReceiver?
43. В чем разница между MVC и MVP?
44. Объясните как устроен MVVM?
45. Что означает M в MVP? Ответ … могло бы это быть чем-то еще?
46. Какова цель Content Provider’а?
47. Для чего используется библиотека SQLite?
48. Какие библиотеки вы используете для работы с сетью (networking), загрузки картинок, баз данных?
49. Что вы используете для очень быстрого Sensor, который излучает много показаний за раз в Rx? (what do you use to handle a very fast Sensor that emit many readings at a time in Rx way?)
50. В чем разница между map и flatMap() в Rxjava?
51. Как создавать параллельные сетевые запросы в Rxjava?
52. Если у вас есть запрос к сети и вы хотите запросить кеш, если сеть выдает ошибку, как это сделать на RxJava? Самое смешное, что я читал об этом в блоге Дэна Лью, затем реализовал это дважды, но не смог ответить на этот вопрос на интервью. Плохие вещи случаются.
53. В чем разница между concatMap() и flatMap() в Rxjava?
54. Что вам известно об Intents? Какова цель категорий в Intents?
55. В чем цель FrameLayout?
56. Как сравнить два объекта?
57. Переменные в Java передаются по ссылке или по значению?
58. Когда вы используете observeOn() и когда subscribeOn()?
Ну, это все что я могу вспомнить на сегодняшний момент. Обычно в большинстве случаев спрашивают ООП, особенности Android и паттерны проетирования.
К счастью, благодаря сообществу Android, существуют ответы на многие из вышеперечисленных вопросов. Не спешите. Потратьте ваше время, чтобы понять основы. Не накидывайтесь сразу на такие вещи как RxJava или Dagger без хорошей основы.
Bonus
Еще парочка вопросов с ответами
1. Что такое Android и кем он основан?
Android — это операционная система на основе Linux с открытым исходным кодом. Она была создана Эндрю Рубином и предназначена для мобильных телефонов, планшетов, телевизоров. и т.д.
2. Назовите основные компоненты Android-фреймворка
— Activity — хранит UI и организует взаимодействие пользователя с отдельным экраном смартфона
— Broadcast Receiver — организует отправку сообщений для других приложений или других систем. Это реализуется с помощью подкласса класса BroadcastReceiver и каждое сообщение организуется как Intent-объект
— Service — используется для фоновых операций
— Intent — эта сущность позволяет взаимодействовать разным Activity и организовать механизмы обмена данными
— Resource — хранит строковые и графические ресурсы
— Notification — для диалоговых окон, иконок, уведомлений, звука и всплывающих сообщений
— Content Provider — для обмена данными между приложениями или компонентами внутри одного приложения. Управляет доступом к структурированному набору данных. Он инкапсулирует данные и предоставляет механизмы для определения их безопасности. ContentProvider — это стандартный интерфейс, который соединяет данные в одном процессе с кодом, запущенным в другом процессе.
3. Какие дополнительные компоненты у Android?
— Fragment — содержит часть UI в Activity
— View — элементы UI, которые рисуются на экране, включая кнопки, списки, формы ввода, и т.д.
— Layout — организация иерархии View и взаимного расположения View, и особенностей показа View на экране
— Manifest — конфигурационный файл приложения
4. Какие уведомления доступны в Android и каково их использование?
Snackbars & Toast Notification − отображается как всплывающее сообщение на поверхности окна.
Snackbar содержит одну строку текста, который непосредственно связан с выполняемой операцией. Только одно сообщение за один раз может быть на экране и может содержать только одно действие, которое не может быть «отменить».
Toast используется для системных сообщений. Обычно они отображаются на короткое время (два варианта 3.5 и 2 секунды) внизу экрана (можно настраивать).
Status bar уведомления отображаются в строке состояния.
Dialogue Notification − активное окно с уведомлением.
5. Какие флаги используются при запуске приложения Android?
6. Версии Android идут под кодовыми номерами. Назовите как можно больше этих имен.
Code name | Version | API level |
---|---|---|
Oreo | 8.0 | 26 |
Nougat | 7.0 – 7.1.1 | 24 -25 |
Marshmallow | 6.0 | 23 |
Lollipop | 5.1 | 22 |
Lollipop | 5.0 | 21 |
KitKat | 4.4 — 4.4.4 | 19 |
Jelly Bean | 4.1.x — 4.3.x | 16 — 18 |
Ice Cream Sandwich | 4.0.1 — 4.0.4 | 14 — 15 |
Honeycomb | 3.2.x | 13 |
Honeycomb | 3.0 — 3.1 | 11 — 12 |
Gingerbread | 2.3 — 2.3.7 | 9-10 |
Froyo | 2.2.x | 8 |
Eclair | 2.1 | 7 |
Eclair | 2.0 — 2.0.1 | 5 -6 |
Donut | 1.6 | 4 |
Cupcake | 1.5 | 3 |
(no code name) | 1.1 | 2 |
(no code name) | 1.0 | 1 |
7. Какие главные преимущества Android?
Android — это ОС c открытым исходным кодом, это означает, что она бесплатна для конечного пользователя. Плата за лицензию, разработку и распространение не взимается. Она поддерживает множество различных технологий включая камеру, bluetooth, wifi и т.д. К томуже она имеет оптимизированную для маломощных устройств виртуальную машину Dalvik.
8. Назовите базу данных, которую использует Android, и расскажите о ней.
Android использует SQLite реляционную базу данных с открытым исходным кодом. Она встроена в Andoid по-умолчанию. Достаточно быстрая и удобная в работе.
9. Как можно организовать хранение данных в Android? Расскажите об этих способах.
Shared Preferences — хранит данные в виде приметивов ключ-значение. Класс SharedPreferences организует основную работу, которая позволяет пользователям хранить и получать данные по типу ключ-значение. Shared Preferences можно использовать для хранения таких типов данных как int, float, long, string. Эти данные сохраняются относительно постоянно (если только их не удалить целенаправленно). Больше информации здесь.
Internal Storage — хранит данные в памяти устройства в виде файлов. Файлы, сохраненные для вашего приложения, по-умолчанию приватны, и другое приложение не может получит к ним доступ. Когда пользователь удаляет приложение, файлы, связанные с приложением, также удаляются.
External Storage — хранит данные в общем хранилище. Все приложения имеют доступ к этим данным.
SQLite Database — хранит данные в структурированнов виде в базе данных. Android полностью поддерживает SQLite. Вне приложения база данных недоступна.
Также возможно хранение данных в сети на сервере. Доступ — посредством сетевого соединения. Организация сетевого соединения возможна посредвом пакетов java.net и android.net, но чаще используют готовые библиотеки.
10. Что такое виджеты приложений?
Это миниатюрные представления приложений, которые доступны для демонстрации в других приложениях (таких как Home screen). Больше см. здесь
Bonus 2
Ссылки на аналогичные списки и разговоры о собеседовании:
- https://proglib.io/p/15-android-questions/ —
- http://www.quizful.net/interview/android?page=0
- https://goo.gl/qgry1C
- https://habrahabr.ru/post/199280/
- https://dou.ua/forums/topic/17020/
- https://www.youtube.com/watch?v=igDSTgjhpN4
- http://www.tutorialspoint.com/android/android_questions_answers.htm
- http://www.careerride.com/android-interview-questions.aspx
- https://www.toptal.com/android/interview-questions
- https://intellipaat.com/interview-question/android-interview-questions/
- https://github.com/MindorksOpenSource/android-interview-questions
- https://gist.github.com/lawloretienne/6f7d7d92f72986f5ebd60f226d9044ee
[дополняется по мере сил, возможностей и способностей]
Источник