android面试题
A. 怎么准备Android面试
工作来经验,如果从事过Android,就把具体做的自哪些内容全都列出来;如果是应届生,就把自己学的与Android相关专业或课程列出来。
了解公司,了解公司的历史、管理制度、公司主要是从事Android的哪方面。
热爱工作,把自己在Android方面会的东西展现出来,然后喜欢这个行业的地方列出来。以及喜欢这份工作原因。
把性格方面,以及处理人际关系方便的回答准备下。
如果有过解决问题的成功案例等准备好,如果没有,得表现出踏实,有爱心、责任心、诚信等。这样才有利于公司发展。
工作中要有团队精神,平时要与同时多沟通交流,与同事员工互相尊重、互相理解、互相包容。
B. Android okhttp面试的时候怎么回答,尽量简单一点又能说明9问题
封装只是为了能更加简单,仅此而已~功能UI线程切换可选择的Callback(任意选择UI线程或者子线程)参数规范化,GET与POST都一样的传参方式上传/下载进度回调可以简单的设置Head部分可以每次请求时自动加上需要的参数String/JSON/byte/File…都能一样简单用法由于辅助代码较多,在这里就不一一贴出来了,在这里仅仅演示如何使用。异步GETHttp.getAsync("/weather_mini",newUiCallback(){@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){log("getAsync:onFailed");}@OverridepublicvoidonSuccess(Stringresponse,intcode){log("getAsync:onSuccess:"+response);}},newStrParam("citykey",101010100));123456789101112由于是get请求,在这里参数中的citykey会被自动解析到url中。/weather_mini?citykey=1010101001同步GETfinalStringurl="/weather_mini?citykey=101010100";Stringstr=Http.getSync(String.class,url);log("getSync1:"+str);str=Http.getSync(url,newThreadCallback(){@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){log("getSync2:onFailed");}@OverridepublicvoidonSuccess(Stringresponse,intcode){log("getSync2:onSuccess:"+response);}});log("getSync2:"+str);12345678910111213141516同步方式支持两种情况,一种有Callback,一种是没有。当然就算加上了Callback也并不是异步,此时方法会等到执行完成后才会继续往下走。之所以这么干,是为了方便在callback中直接处理ui的事儿。在这里有必要说明一下,返回类型需要进行指定,如果没有Callback哪么需要你传入返回类型class。当然如果你传入了callback,哪么此时class就由callbackAccountaccount=Http.getSync(Account.class,url);Useruser=Http.getSync(User.class,url);Stringstr=Http.getSync(String.class,url,newStrParam("citykey",101010100));123Callback的情况也如上所示。异步与同步的区别在于方法名称:Http.getSync()Http.getAsync()Http.postSync()Http.postAsync()Http.uploadSync()Http.uploadAsync()Http.downloadSync()Http.downloadAsync()默认情况下,upload与download具有callProgress回调进度功能。POSTStringvalue1="xxx";Stringvalue2="xxx";Stringurl="";Http.postAsync(url,newHttpCallback(){@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){e.printStackTrace();}@OverridepublicvoidonSuccess(Stringresponse,intcode){log(response);}},newStrParam("value1",value1),newStrParam("value2",value2));1234567891011121314151617post的请求方法与get基本如出一辙。UploadFilefile=getAssetsFile();Http.uploadAsync("/upload.php","uploadimg",file,newUiCallback(){@OverridepublicvoidonProgress(longcurrent,longcount){super.onProgress(current,count);log("uploadAsynconProgress:"+current+"/"+count);mUpload.setProgress((int)((current*100.00/count)));}@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){e.printStackTrace();log("uploadAsynconFailed");}@OverridepublicvoidonSuccess(Stringresponse,intcode){log("uploadAsynconSuccess:"+response);}});上传部分也很简单,如果需要带有参数哪么和Post的使用方式一样。当然此时传入参数就不是StrParam而是IOParam.上传的时候你可以仅仅传递文件+文件对应的name;或者传递IOParam;也可以StrParam+IOParam的方式;当然终极一点你可以传递:Param类型。
C. Android面试题关于像素减半问题,请问应该怎么答,题目如下
这个不复难啊,图像是由宽和高组成制的, 以1280*720的分辨率,rgba图像为例, 每行有1280个像素点,每个像素点占4个字节, r,g,b,a 各占一个字节, 程序只需要每次读取4个字节,将第四个字节转成int后在除以2,然后在写回去,透明度就变成原来的一半了。
D. java和android的区别 面试题
两者的区别抄:
袭1. Android是一个完备的移动装备操纵体系,由linux操纵体系,中间件,C类库和焦点应用措施构成。
2. java Me是java的一个微型版本,针对移动装备开拓应用措施的开拓包,它必需有底层操纵体系支持。
两者的接洽:
1. 都是用java说话编写应用措施。
各自的上风:
1. Android的上风在于开拓性和开源,是一个优越的移动装备操纵体系。
2. Java Me 是一个移动装备软件开拓包,跨平台是其首要特点。
E. android工程师面试一般会问哪些问题
1. Android经验
如果不是校招,Android经验是必须的,我比较喜欢问一些基础概念与技术原理,比如Activity、View、Window的理解,各LaunchMode的使用场景,View的绘制流程,Touch事件机制,Android动画的原理,Handler, Looper的理解,Android跨进程通讯的方式,Binder的理解,Android Mashup设计的理解等等。
2. Java水平
基本上就是Effective Java那本书里提到的东西,如果你背完那本书里的问题,并且对答如流,没问题,就要你这样的。其实也会考察关于final用法,反射原理,注解原理,java编译过程,GC等一些常见问题。
3. IT基础知识
其实就是计算机科班学生学校里学到的一些东西,在校招时这块是重点,社招会放宽,但一些基本的常识是要有的,比如不少人都不知道http的get post有啥区别,https的那个s是什么意思,讲不清进程与线程的概念,不知道二分算法是个啥东西。这些简单问题的筛选,可以过滤一些所谓野路子的程序员,是不是科班出身不重要,搞这行就得对一些基本常识有概念,不然以后怎么愉快的交流呢?
4. 代码质量的认识
我们需要的是一个对代码味道有感觉的人,关于这点,看下《Clean Code》就够了,面试中这点其实不好考察,可以让他聊一聊对代码质量的认识,虽然不能排除对方夸夸其谈,至少想法不多,只能提到命名风格这一点的人是不符合要求的,也可以在写Code的环节中观察。
5. 技术视野
比如对Android开发新技术的了解与学习,对其它流行技术领域的了解,这其实与我刚才提到的技术广度的考察有关,就我面试过程中,发现很多非互联网行业的从业人员,因为公司各种操蛋规定与公司技术氛围的原因,技术视野相当狭窄。
我个人对这点深有体会,2011年我还在传统行业从事软件研发,当时的公司因为担心技术信息泄露,不让上网,相当封闭,我个人虽然自认为已在那个行业内做到业内专家的级别,但总感觉哪里不对,有一天我很兴奋的打算跟身边同事聊一聊Android的时候,发现他们居然都不知Android为何物?2011年啊同志们,当时的震惊无法言表,深切感觉到需要作出改变了,毅然放弃多年行业积累,转战移动互联网,直到现在。时至今日,多年前的小伙伴也有很多混出了名党,开始走向人生巅峰,我也从来没有后悔当初做出的选择。
6. 技术想象力
一个优秀的技术人,如果知识的深度与广度足够,知识已成体系,那么他对于一些从未接触过的领域,也是可以做出足够合理的想象与判断,面试过程中如果问到一些领域候选人没有涉猎,这时候一般不用过多纠缠,但如果你想借这个问题考察下他的技术想象力,可以深入下去,比如问他:“你觉得这个东西应该是什么原理呢?”,“这个酷炫的控件,如果要你来做,你会怎么实现?”。在这方面表现出色的同学无疑是有深厚基础与足够广度的人。
F. Android工程师面试会问哪些问题
1、请用最简洁的语言描述您之前的工作经历和工作成果。
2、您认为此工作岗回位应当具备哪些素答质和特质?
3、您平时习惯于单独工作还是团队工作?
4、您对原来的单位和上司的看法如何?
5、您如何描述自己的个性?
6、是否方便告诉我您目前的薪资待遇是多少?
7、您是否介意我们通过您原来的单位进行一些调查?
95%的面试基本上都离不开这些问题,当然还会提问一些专业问题,慕课网听听关于安卓面试的课程,老师会教你一些回答的技巧。
G. android 面试题
1、前言
6 月 26 日, Google Android 发布了 NDK ,引起了很多发人员的兴趣。 NDK 全
称: Native Development Kit 。下载地址为:
http://developer.android.com/sdk/ndk/1.5_r1/index.html 。
2、误解
新出生的事物,除了惊喜外,也会给我们带来一定的迷惑、误解。
2.1、误解一: NDK 发布之前, Android 不支持进行 C 开发
在 Google 中搜索 “NDK” ,很多 “Android 终于可以使用 C++ 开发 ” 之类
的标题,这是一种对 Android 平台编程方式的误解。其实, Android 平台从诞生起,就已
经支持 C 、 C++ 开发。众所周知, Android 的 SDK 基于 Java 实现, 这意味着基于 Android
SDK 进行开发的第三方应用都必须使用 Java 语言。但这并不等同于 “ 第三方应用只能使
用 Java” 。在 Android SDK 首次发布时, Google 就宣称其虚拟机 Dalvik 支持 JNI 编程
方式,也就是第三方应用完全可以通过 JNI 调用自己的 C 动态库,即在 Android 平台上,
“Java+C” 的编程方式是一直都可以实现的。
当然这种误解的产生是有根源的:在 Android SDK 文档里,找不到任何 JNI 方面的
帮助。即使第三方应用开发者使用 JNI 完成了自己的 C 动态链接库( so )开发,但是 so
如何和应用程序一起打包成 apk 并发布?这里面也存在技术障碍。我曾经花了不少时间,
安装交叉编译器创建 so ,并通过 asset (资源)方式,实现捆绑 so 发布。但这种方式只
能属于取巧的方式,并非官方支持。所以,在 NDK 出来之前,我们将 “Java+C” 的开发
模式称之为灰色模式,即官方既不声明 “ 支持这种方式 ” ,也不声明 “ 不支持这种方
式 ” 。
2.2、误解二:有了 NDK ,我们可以使用纯 C 开发 Android 应用
Android SDK 采用 Java 语言发布,把众多的 C 开发人员排除在第三方应用开发外
( 注意:我们所有讨论都是基于“ 第三方应用开发 ” , Android 系统基于 Linux ,系
统级别的开发肯定是支持 C 语言的。 )。 NDK 的发布,许多人会误以为,类似于 Symbian 、
WM ,在 Android 平台上终于可以使用纯 C 、 C++ 开发第三方应用了!其实不然, NDK
文档明确说明: it is not a good way 。因为 NDK 并没有提供各种系统事件处理支持,也没
有提供应用程序生命周期维护。此外,在本次发布的 NDK 中,应用程序 UI 方面的 API 也
没有提供。至少目前来说,使用纯 C 、 C++ 开发一个完整应用的条件还不完备。
3、NDK 是什么
对 NDK 进行了粗略的研究后,我对 “NDK 是什么 ” 的理解如下:
1、NDK 是一系列工具的集合。
NDK 提供了一系列的工具,帮助开发者快速开发 C (或 C++ )的动态库,并能自动
将 so 和 java 应用一起打包成 apk 。这些工具对开发者的帮助是巨大的。
NDK 集成了交叉编译器,并提供了相应的 mk 文件隔离 CPU 、平台、 ABI 等差异,
开发人员只需要简单修改 mk 文件(指出 “ 哪些文件需要编译 ” 、 “ 编译特性要求 ”
等),就可以创建出 so 。
NDK 可以自动地将 so 和 Java 应用一起打包,极大地减轻了开发人员的打包工作。
2、NDK 提供了一份稳定、功能有限的 API 头文件声明。
oogle 明确声明该 API 是稳定的,在后续所有版本中都稳定支持当前发布的 API 。
从该版本的 NDK 中看出,这些 API 支持的功能非常有限,包含有: C 标准库( libc )、
标准数学库( libm )、压缩库( libz )、 Log 库( liblog )。
G
4、NDK 带来什么
1、NDK 的发布,使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式。
使用 NDK ,我们可以将要求高性能的应用逻辑使用 C 开发,从而提高应用程序的执
行效率。
使用 NDK ,我们可以将需要保密的应用逻辑使用 C 开发。毕竟, Java 包都是可以反
编译的。
NDK 促使专业 so 组件商的出现。(乐观猜想,要视乎 Android 用户的数量)
2、NDK 将是 Android 平台支持 C 开发的开端。
NDK 提供了的开发工具集合,使开发人员可以便捷地开发、发布 C 组件。同时,
Google 承诺在 NDK 后续版本中提高 “ 可调式 ” 能力,即提供远程的 gdb 工具,使我
们可以便捷地调试 C 源码。在支持 Android 平台 C 开发,我们能感觉到 Google 花费了
很大精力,我们有理由憧憬 “C 组件支持 ” 只是 Google Android 平台上 C 开发的开端。
毕竟, C 程序员仍然是码农阵营中的绝对主力,将这部分人排除在 Android 应用开发之外,
显然是不利于 Android 平台繁荣昌盛的。
H. 面试题:android手机有哪些缺点
一.短消息[SMS]的基本功能测试 1、短消息的基本功能:是指短消息的编辑,删除,保存,收发,显示,以及各种按钮等功能的正常实现。 2、测试要求和执行:一般根据测试案例或软件本身的流程就可以完成短消息的基本功能测试。 二.短消息的交叉事件测试 1、交叉测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。例如通话过程中接收到短信或来响闹。应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题出现为Pass的标准。 2、测试要求和执行:干扰要恰到好处,准确,否则很难发掘出深层次的软件缺陷。 三.短消息的压力性能测试 1、压力测试:又叫边界值容错测试或极限负载测试,即测试过程中,已经达到某一软件功能的最大容量,边界值或最大的承载极限,仍然对其进行相关操作。例如连续进行短信的接收和发送,超过收件箱和PIM卡所能存储的最大的条数,仍然进行短消息的接收或发送,以检测软件在超常态条件下的表现,来评估用户能否接受。 2、测试要求和执行:可以考虑进行自动化测试 四.短消息的容量性能测试 1、容量测试:又叫满记忆体测试,包括手机的用户可用内存和SIM/PIM卡的所有空间被完全使用的测试。此时再对可编辑的模块进行和存储空间有关的任何操作测试,如果软件的极限容量状态下处理不好,有可能导致死机或严重的花屏等问题的出现。 2、测试要求和执行:可以考虑进行自动充满记忆体测试,要对不同品牌和不同容量大小的SIM/PIM卡进行测试 五. 短消息的兼容性能测试 兼容性测试:也就是不同品牌手机,不同网络,不同品牌和不同容量大小的SIM/PIM卡之间的互相兼容的测试,以短消息为例:中国电信的小灵通接收到从中国移动或中国联通GSM发来的短消息,接收,显示和回复功能是否正常等;
I. Android一小面试题求解
4.onStop() 只是使来activity处于停止状态,比如从activityA 跳到源activityB,这时候A处于 onStop()
正常的结束activity的方法
特殊情况时退出方法,可使用重写application的方式屏蔽掉错误提示对话框,实现退出效果
java的结束进程的方法,也可以用来结束当前activity