广告
返回顶部
首页 > 资讯 > 移动开发 >Android 面试精华题目总结
  • 219
分享到

Android 面试精华题目总结

面试Android 2022-06-06 07:06:57 219人浏览 泡泡鱼
摘要

下面的题目都是楼主在Android交流群大家面试时遇到的,如果大家有好的题目或者好的见解欢迎分享,楼主将长期维护此帖。 某公司高级面试题(2015-03-14)【感谢helde

下面的题目都是楼主在Android交流群大家面试时遇到的,如果大家有好的题目或者好的见解欢迎分享,楼主将长期维护此帖。

某公司高级面试题(2015-03-14)【感谢helder分享】
1、详述Android系统架构,包括层与层之间调用、binder、jni、底层文件读写方法
2、描述自己的一个项目,要求画出结构图,UML图,详细描述项目种的技术点,技术难点以及解决方案
3、一道算法
4、谈谈自己项目管理的方法、对敏捷软件开发的理解

基础面试题(2014-04-18)

1、请解释下在单线程模型中Message,Handler,Message Queue,Looper之间的关系。

拿主线程来说,主线程启动时会调用Looper.prepare()方法,会初始化一个Looper,放入Threadlocal中,接着调用Looper.loop()不断遍历Message Queue,
Handler的创建依赖与当前线程中的Looper,如果当前线程没有Looper则必须调用Looper.prepare()。Handler , sendMessage到MessageQueue,Looper不断
从MessageQueue中取出消息,回调handleMessage方法。

2、如果有个100M大的文件,需要上传至服务器中,而服务器form表单最大只能上传2M,可以用什么方法。

这个问题不是很明确我觉得,首先来说使用Http协议上传数据,特别在android下,跟fORM没什么关系。传统的在WEB中,在form中写文件上传,其实浏览器所做
的就是将我们的数据进行解析组拼成字符串,以流的方式发送到服务器,且上传文件用的都是POST方式,POST方式对大小没什么限制。
回到题目,可以说假设每次真的只能上传2M,那么可能我们只能把文件截断,然后分别上传了。

3、内存溢出和内存泄漏有什么区别?何时会产生内存泄漏?内存优化有哪些方法?

内存溢出通俗理解就是软件(应用)运行需要的内存,超出了它可用的最大内存。
内存泄漏就是我们对某一内存空间的使用,使用完成后没有释放。
内存优化:Android中容易内存溢出的部分,就是图片的加载,我们可以使用图片的压缩加上使用LruCache缓存的目的来控制图片所能够使用的内存。
还有对于比较耗资源的对象及时的关闭,例如Database Conn , 各种传感器 , Service 等等。

4、AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?

AsyncTask 运用的场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI进行更新。
缺陷:AsyncTask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果
此时向线程提交任务,将会抛出RejectedExecutionException。
解决:由一个控制线程来处理AsyncTask的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask继续处理。

5、Activity用SharedPreferences保存数据,大小有木有限制?

这个真心查不到。。。

6、Activity间通过Intent传递数据大小有没有限制?

貌似是40K。

7、assest文件夹里放文件,对于文件的大小有没有限制?

assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与Android中的一些类和方法兼容度更低。
同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目录下会使一些操作更加方便,
比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问
这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。另外,网上关于assets和raw的资料都千篇一律了,因此关于这两者中单个文件
大小不能超过1M的**错误**描述也在传播,即如果读取超过1M的文件会报"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的
IOException,还引申出种种解决方案。个人认为不应该有这样的限制,为了验证这个说法写了个Demo,发现将近5M的压缩包在assets和raw中
都能正常访问,因此在这里纠正一下,理论上只要打包不超过Android APK 50M大小的限制都是没有问题的。当然了,不排除是Android很早期的
时候因为设备硬件原因aapt在编译的时候对这两个文件夹大小做出了限制,如果是这样,较新版的ADT应该不会出现这种情况。
来自:http://my.eoe.cn/futurexiong/arcHive/5350.html

8、 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?

是因为启动程序(主界面也是一个app),发现了在这个程序中存在一个设置为<cateGory android:name="android.intent.category.LAUNCHER" />的activity,
所以这个launcher会把icon提出来,放在主界面上。当用户点击icon的时候,发出一个Intent:
Intent intent = Mactivity.getPackageManager().getLaunchIntentForPackage(packageName);
mActivity.startActivity(intent);  
跳过去可以跳到任意允许的页面,如一个程序可以下载,那么真正下载的页面可能不是首页(也有可能是首页),这时还是构造一个Intent,startActivity.
这个intent中的action可能有多种view,download都有可能。系统会根据第三方程序向系统注册的功能,为你的Intent选择可以打开的程序或者页面。所以唯一的一点
不同的是从icon的点击启动的intent的action是相对单一的,从程序中跳转或者启动可能样式更多一些。本质是相同的。

9、程序之间的亲和性的理解。

1、默认情况下一个应用的所有Activity都是具有相同的affinity,都是从application中继承,application的affinity默认就是manifest的包名。
2、affinity对Activity来说,就像是身份证一样,可以告诉所在的Task,自己属于其中的一员。
3、应用场合:
a:根据affinity重新为Activity选择合适的宿主Task;
b:与allowTaskReparenting属性配合;
c:启动Activity使用Intent设置了FLAG_ACTIVITY_NEW_TASK标记。

10、同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?

可以放在不同的Task中。需要为不同的activity设置不同的affinity属性,启动activity的Intent需要包含FLAG_ACTIVITY_NEW_TASK标记。

11、横竖屏切换时候Activity的生命周期。

1、不设置Activity的android:confiGChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

12、AIDL的全称是什么?如何工作?

全称是:Android Interface Define Language
在Android中, 每个应用程序都可以有自己的进程. 在写UI应用的时候, 经常要用到Service. 在不同的进程中, 怎样传递对象呢? 显然, Java中不允许跨进程内存共享.
 因此传递对象, 只能把对象拆分成操作系统能理解的简单形式, 以达到跨界对象访问的目的. 在J2EE中,采用RMI的方式, 可以通过序列化传递对象. 在Android中, 则
采用aiDL的方式. 理论上AIDL可以传递Bundle,实际上做起来却比较麻烦。
AIDL(AndRoid接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要
在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用
这些参数组装成自己需要的对象.AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL,
需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.
AIDL的创建方法:
AIDL语法很简单,可以用来声明一个带一个或多个方法的接口,也可以传递参数和返回值。 由于远程调用的需要, 这些参数和返回值并不是任何类型.
下面是些AIDL支持的数据类型:
1. 不需要import声明的简单Java编程语言类型(int,boolean等)
2. String, CharSequence不需要特殊声明
3. List, Map和Parcelables类型, 这些类型内所包含的数据成员也只能是简单数据类型, String等其他比支持的类型.
(另外: 我没尝试Parcelables, 在Eclipse+ADT下编译不过, 或许以后会有所支持

13、dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

     Dvm的进程是dalivk虚拟机进程,每个android程序都运行在自己的进程里面,每个android程序系统都会给他分配一个单独的liunx uid(user id),
每个dvm都是linux里面的一个进程.所以说这两个进程是一个进程.

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24015867

您可能感兴趣的文章:Android 面试题汇总Android handler 详解(面试必问)Android工程师面试题大全Android招聘面试题解答一看就懂的Android APP开发入门教程Android基础之使用Fragment控制切换多个页面六款值得推荐的android(安卓)开源框架简介Android应用开发SharedPreferences存储数据的使用方法android TextView设置中文字体加粗实现方法Android 动画之TranslateAnimation应用详解


--结束END--

本文标题: Android 面试精华题目总结

本文链接: https://www.lsjlt.com/news/23944.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 面试精华题目总结
    下面的题目都是楼主在android交流群大家面试时遇到的,如果大家有好的题目或者好的见解欢迎分享,楼主将长期维护此帖。 某公司高级面试题(2015-03-14)【感谢helde...
    99+
    2022-06-06
    面试 Android
  • 精心整理总结的Python自动化测试面试题
    目录1、自动化代码中,用到了哪些设计模式2、什么是断言( Assert) 3、什么是web自动化测试4、什么是Selenium?5、写出Selenium中你最熟悉的接口或类6、元素定...
    99+
    2023-02-17
    python自动化测试面试题 python面试题
  • Android 面试题汇总
           Android 70道面试题汇总不再愁面试 本文为开发者奉献了70道经典Android面试题加答案--...
    99+
    2022-06-06
    面试题 面试 Android
  • JAVA JVM面试题总结
    目录JVM 的主要作用是什么?请你描述一下 Java 的内存区域?请你描述一下 Java 中的类加载机制?加载验证文件格式验证元数据验证字节码验证符号引用验证准备解析初始化使用卸载在...
    99+
    2022-11-12
  • 数据库面试题总结
    文章目录 一、索引相关(1)什么是索引(2)索引是个什么样的数据结构呢(3)为什么使用索引?(4)主键和索引的区别(5)说一说索引的底层实现?(6)索引有哪些优缺点?(7)联合索引是什么(8)MySQL索引种类(9)索引的基本原...
    99+
    2023-08-16
    数据库 java 面试 python mysql
  • 2020年3月Android面试总结:
    前言: 由于新冠状病毒隔离的原因 去年离职到现在一直没有办法找工作 在深圳呆了一个多月了 java基础也复习了一遍 总体来说还是有些收获...
    99+
    2022-06-06
    Android
  • Java经典面试题总结(一)
    Java经典面试题总结(一) 题一:Java编译运行原理题二:JDK,JVM,JRE三者之间的关系题三:谈一下对冯诺依曼体系的了解题四:重载与重写的区别题五:拆箱装箱是指什么? 题一:Java编译运行原理 Java源代码通过...
    99+
    2023-08-30
    java 开发语言
  • Java面试问题知识点总结
    本篇文章会对面试中常遇到的Java技术点进行全面深入的总结(阅读本文需要有一定的Java基础;若您初涉Java,可以通过这些问题建立起对Java初步的印象,待有了一定基础后再后过头来看收获会更大),喜欢的朋友可以参考下。1. Java中的原...
    99+
    2023-05-31
    java 面试 ava
  • 仿牛客网讨论社区项目—项目总结及项目常见面试题
    1.项目中大部分的功能和技术         整个技术是构建在SpringBoot上的,其他技术是依托于SpringBoot之上的。SpringBoot只是起到辅助的作用,降低其他技术的使用难度。整个技术的核心是Spring框架,在Spri...
    99+
    2023-09-01
    spring boot 中间件 mysql javascript maven
  • Java线程池高频面试题总结
    目录1、在启动线程时,为什么要通过调用方法start执行方法run,而不能直接执行方法run?2、方法sleep、join和yield的区别有哪些?3.为什么方法wait、notif...
    99+
    2022-11-12
  • Linux运维工程师面试题总结
    本篇内容介绍了“Linux运维工程师面试题总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Linux操作系统知识常见的Linux发行版...
    99+
    2023-06-13
  • 总结2023Android开发面试题(含答案)
    1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linu...
    99+
    2023-08-31
    android 动画 flutter android jetpack kotlin Powered by 金山文档
  • 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(七)
    系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟...
    99+
    2023-09-01
    华为 python 面试 开发语言
  • 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(三)
    系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟...
    99+
    2023-08-31
    华为 python 面试 开发语言
  • 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(六)
    系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟...
    99+
    2023-08-31
    华为 python 面试 开发语言
  • Python面经之16个高频面试问题总结
    目录(一)Python 是如何进行内存管理的?(二)什么是 lambda 函数?它有什么好处(三)Python 里面如何实现 tuple 和 list 的转换?(四)请写出一段 Py...
    99+
    2022-11-13
  • Android常见面试题总结以及答案解析(2023年新版)
    缘起 对于Android的学习,很多⼈可能学了之后,不知道⾃⼰处于哪个阶段,也不到究竟要学到哪个程度,验证⾃⼰学得如何最好的⾯试,就是尝试去⾯试,⽽⾯试⽆⾮就是问你⼀些⾯试题。 而我之前也有整理过一些...
    99+
    2023-10-01
    android
  • 总结几道关于Node.js的面试问题
    什么是error-first的回调方式 Error-first回调方式用来同时传递error和data。将错误作为第一个参数,它就必须先检查看看有没有错误先。另外的参数就用来传递data了。 fs.re...
    99+
    2022-06-04
    几道 Node js
  • 总结三道MySQL联合索引面试题
    目录前言: 众所周知mysql联合索引遵循最左前缀匹配原则,在少数情况下也会不遵循(有兴趣,可以翻一下上篇文章) 创建联合索引的时候,建议优先把区分度高的字段放在第一列。 至于怎么统计区分度,可以按照下面这种方式。 创建...
    99+
    2022-08-16
    MySQL联合索引面试题 MySQL联合索引
  • Java并发基础常见面试题(总结)
    本篇文章给大家总结了一下Java并发基础常见面试题,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1. 什么是线程和进程1.1. 何为进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程...
    99+
    2015-12-07
    java面试题 spring Java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作