做了一年的android应用开发,准备换个工作环境,结果在面试中却成了一个典型的面霸,两周的十个工作日里,竟然笔试加面试达到了15次。不过,在这些面试中学到了不少东西!下面把我的android面试经历给大家分享一下,免得大家以后走弯路。
同一家公司可能面试了多次,同一家公司我就放在一起了。笔试一般都是java基础和C/c++基础。
Java知识点包括:接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义,很无语。
C/C++知识点包括:指针的移动,排序算法,链表,有时还会有二叉树的遍历或图的遍历。
这里具体说一下android面试题目:
南京WSCX:
1、
Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法?
2、
不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?
3、
Service有哪些启动方法?有什么区别?
4、
(音乐播放器)如何加载的音乐信息,如何改善其效率。
5、
电话状态的监听,改变打电话界面(听说我改动的Phone源码就不再问了)。
6、
ListView如何提高其效率?
移动应用开发“三不要”
不要让我等 不要让我想 不要让我烦
1. 分页
2. 异步加载
3. 耗时操作给用户进度提示
7、
还有一些都是在上面的基础上扩展的,跟具体项目有关,就不说了。
总结:他们只是问一问这些基础的知识,都是给外包公司招人,自己做不了主,也就是检验一下应聘人员懂不懂android。
南京SL:
1、
启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?
都是隐式意图
Task:主界面
首先创建一个Task栈, 配置了Main Launcher Activity被启动,作为栈底
从其他跳转过来的Activity在启动它的Activity所在的栈里
2、
启动一个Activity有哪几种方法?
Start()
Main Launcher的Activity
接收事件
通知
桌面小组件
不建议:
服务
广播
3、
怎么样在启动一个Activity时就启动一个service?
4、
两个Activity之间怎么传递数据?
总结:他们也是刚开始做Android,面试人员最多有两三年工作经验,我感觉他们接触Android时间不一定跟我长,也就只问一些他们自己擅长的那一块。
南京RH:
这家让我比较窝火,一个Android问题没问,全是问Java知识,没有笔试,但说了不少题目,让你当场反应,大多是说算法,说出问题的解决思路。最后我问他们不是招收Android工程师吗,怎么没问Android知识?回答竟然是:Android这东西很简单,会了Java经过几天的培训,就能很快做Android,我晕,那你直接招收Java工程师就是了,干嘛找我!我听以前的主管说过,有些公司不缺人,却打出招聘的牌子,目的就是为了从面试人员身上获取一些问题的解决方案,获取一些别的公司的发展方向,这下我算是见识了!
南京ZDW:
面试官说他的面试题目都是网上找的,自己不懂,就看网上的答案与我的作对比。这次真的被问住了,问题全是实际工作中从没考虑过的。
1、
Android程序与Java程序的区别?并强调了不是虚拟机方面的!
J2EE用于服务端编程 性能 稳定性 安全性
Android 客户端 用户体验
JAVA J2EE Struts Spring Hibernate AJAX HRML JS XML HTTP SQL
Android: JAVA XML HTTP Android SQL
2、
Android中Task任务栈的分配。
3、
程序之间的亲和性的理解。
4、
同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?
5、
在Android中,怎么节省内存的使用,怎么主动回收内存?
核心:什么占内存
资源池:同类临时对象创建多次
对象在不需要使用的时候不创建
Activity或者Service中的onDestroy方法中
主动释放
6、
Android四大组建,对各种组件的理解。(因为在不同的资料中,有人把Activity、Intent、Service、ContentProvide看为四大组建,也有人把Activity、Broadcast Receives或Intent Receives、Service、ContentProvide看成四大组建)所以这个话题就牵出来的问题比较多。
7、
对Android的理解。
总结:这只是我会的几个,不会的太多,当时大脑一热把不会的问题也全忘了,就问android方面的问题就问了一个多小时,只记得这几个了,我就纳闷了,我也经常上网看这方面的知识,有些问题我这么就没见过呢,他们这都是在哪里找的??
南京RBKJ:
这个大多是底层,我也很无语,一会驱动开发,一会Framwork修改,我感觉自己是一个一年级小孩再被初中生问问题,最后就说了一句话:不好意思,你们就当我没来过!
南京CMKJ:1、Intent 传递数据时,可以传递哪些类型数据?2、不同工程中的方法是否可以相互调用?3、Android中Provide是用来干什么的?4、电话的状态有哪之中,怎么判断是来电还是去电?5、在Android中是如何实现判断区分通话记录中的电话状态,去电,来电、未接来电?6、音乐播放器如果有大量的音乐文件,如何提高界面展示速度?7、还有些具体的项目经验经历。
上海SN:
1、音乐播放功能api中播放流程是怎么样的?
2、Activity怎么和service绑定,怎么在activity中启动自己对应的service?
3、 Service有几种启动方式,区别是什么?
4、
界面间的跳转用什么实现,跳转时activity的生命周期。
5、
界面间的布局是怎么实现的,控件的排列。
6、项目中你遇到的最大困难是什么,怎么解决的。
岁月 –> 经历—>经验
故作思考状
先想好答案
有多个解决问题的办法,
这些方法可以在公司中使用来解决未来的问题
过程是曲折,道路坎坷,
最后靠自己的努力解决了。
1. 看文档:
自定义的通知栏
2. 上网google eoeandroid
3. Android交流群
怎么证明自己是有能力、有经验解决问题
7、有些项目(我做过的)android中已经有了,而你又自己实现了,为什么自己实现,以及你用的实现方式以及所用知识点,二者相比,哪个更有优点,优点在哪。
系统自带的应用缺点:
UI简陋,用户体验稍差
UI 差异化的功能
8、你做的一个比较复杂的界面,画出来,每个部分用的什么控件,各个控件中你用到的的属性是什么,写出来。
9、如果有种功能,他认为你做的显得不够完美,可能会把这个不完美的地方说出来,让你根据这问题给出一个解决方案。
10、
Android用的数据库是什么样的?它和sql有什么区别?为什么要用ContentProvide?它和sql的实现上有什么差别?
如果进个大公司,技术全面的面试官来面你,会问得很全但很粗略,各知识点都涉及到,还给你发挥的境地。小公司就会很不幸了,尤其是面试官,自己也就懂那一点东西,他不管你会什么,就只问他会的那点知识,你们的经验有交集还好,不然就算你是诸葛亮,也只能自认倒霉!
还有几家,是刚做Android,就没问这方面的知识,就问了问java方面的,在这里就不说了,希望这些对大家有用!
看到有几位朋友说是要看看java基础部分,我整理了一下,帮要找工作的同学复习一下,希望有帮助(具体的公司就不说了,只说题目):
1.抽象类和接口的区别2.sleep()和wait()方法的区别3.TreeMap和hashMap的区别4.length和length()的区别
5.重载和重写的区别
6.数据库的查询语句(求和,平均值,最大值等)
7.写四个线程,操作同一个数,两个用于加1,两个用于减1。
8.写一个socket的简单程序,实现客户端与服务器通信
9.写10个简单的linux命令
adb ls cd rm rmdir mkdir
10..EJB和java程序的区别11.什么是集群?12.内存的堆和栈以及数据的存储位置,数组和链表的最根本的区别13.写出JDBC连接数据库的语句14.还有个是继承一个A类同时又实现一个借口,A类和接口中都有同一个成员变量x,问你会不会编译出问题15.实现一个单实例模式类16.统计一个字符串中个字母出现的次数,按照a~zA~Z的顺序17.反转一个字符串,并去掉其中的空格18.在一个人机对弈程序中,最关键步骤是什么
19.二叉树的非递归遍历
20.用多种排序方法对一组数据排序
21.给定一个图(数据结构中的图),计算两点间的最短路径
时间太久了,只记得这么多了,希望对大家有帮助!