. 描述一下android的系统架构:答:android系统架构分从下往上为Linux内核层、运行库、应用程序框架层和应用程序层。 Linux内核层:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。运行库和androidruntion:运行库:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责android网页浏览器的运行;例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发的2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。Androidruntion负责解释和执行生成的dalvik格式的字节码应用软件架构:java应用程序开发人员主要是使用该层封装好的api进行快速开发的。应用程序层:该层是java的应用程序层,android内置的googlemaps、email、IM、浏览器等,都处于该层,java开发人员工发的程序也处于该层,而且和内置的应用程序具有平等的地位,可以调用内置的应用程序,也可以替换内置的应用程序2. Activity 与 Task的启动模式有哪些,它们含义具体是什么?答:在一个activity中,有多次调用startActivity来启动另一个activity,要想只生成一个activity实例,可以设置启动模式。 一个activity有四种启动模式:standed,signleTop,singleTask,singleInstance Standed:标准模式,一调用startActivity()方法就会产生一个新的实例。 SingleTop:如果已经有一个实例位于activity栈顶,就不产生新的实例,而只是调用activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。 singleTask:会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。 SingleInstance:这个和singleTask基本一样,只有一个区别:在这个模式下的activity实例所处的task中,只能有这个activity实例,不能有其他实例android中常用的四个布局是framlayout,linenarlayout,relativelayout和tablelayout。android 中service的实现方法是:startservice和bindservice。5. 程序运行的结果是:_____good and gbc__________。 public classExample{ String str=new String("good"); char[]ch={'a','b','c'}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+" and "); Sytem.out.print(ex.ch); } public void change(String str,char ch[]){ str="test ok"; ch[0]='g'; }}6. 简述Android应用程序结构是哪些?(7分)Android应用程序结构是: Linux Kernel(Linux内核)、Libraries(系统运行库或者是c/c++核心库)、Application Framework(开发框架包)、Applications (核心应用程序)如何将一个Activity设置成窗口的样式。 在AndroidManifest.xml 中定义Activity的地方一句话android:theme="@android:style/Theme.Dialog"android:theme="@android:style/Theme.Translucent"就变成半透明的 .
一.属于GLSurFaceView特性的是:
1.管理一个surface,这个surface就是一块特俗的内存,能直接排版到Android的视图view上。
2.管理一个EGL display,它能让opengl把内容渲染带哦上述的surface上
3.让渲染器在独立的线程中运作,和UI线程分离。
二、说下contentValues:
答:他与hashtable比较类似,都是存储名值对的,名是String类型,而值都是基本类型
三、Handler是线程与activity通信的桥梁,如果线程处理不当,你的机器就会变得很慢,线程销毁的方法是:
答:onDestroy()
面试官看一个Android项目看的是什么?
本人应届生,想往安卓方向发展。
有一定的java基础。现在在自学android开发。
想开发一个项目,去应聘安卓实习生。
RT,各位大神认为我的项目里最好体现些什么?
美观的UI?清晰的结构代码?项目的健壮性?新颖的图片加载算法?
注:
我的毕业设计也是一个安卓项目,结构还算清晰吧,不过没有什么亮点,基本都是api功能的实现。界面更是不堪入目。
用到了版本控制,sqlite,多线程,socket,当然集合肯定不会少的。
真心求教
当然,可能安卓实习生看重的可能更多的是java基础知识?
这方面怎么说呢,应该还可以吧,因为我自己做的项目,出现什么错误提示,我基本都能明白和解决。
知乎用户
,公众号:妙手写徽真
最近面试过几家公司,也找到了Android客户端开发的实习,最主要看的应该是项目的结构吧。
我当时在技术一面的时候主要讲了项目涉及到的技术,还有一些基本的Android开发问题,比如OOM的时候怎么解决等等;
技术二面的时候,就要在白板上画出整个项目架构,说明对项目各模块的包装,设计模式,性能优化等等(UI方面根本不问)。
技术三面的时候,直接谈到了软件工程,敏捷开发的东西。我对软件工程的理解仅仅来自于书本,结果被面试官(一个leader)一下就看出来是背书了,说没有跟上时代。。。
Java基础肯定是要过硬的,更看重的是语言设计层面,面向对象通用的。比如说,Java中的数据结构有哪些,使用情境在哪?(我把collection和map两大类全部讲了),override和overload区别,高度并发且线程安全的HashMap怎么实现。
总的来看,面试官都不是特别关注项目的细节,而是要在谈话中探听出你的开发经验,风格等等,我做Android开发两年了,去面试之前又有了半年的创业公司实习经历,所以前两面谈起来还是比较顺的。如果你的开发经验足够,而且开发过程中善于自己去解决问题,触类旁通,应该就没有什么问题的
1 ,OOM(这是Adroid开发最常见,最重要的)
2,内存管理(主要就是图片加载,缓存机制),
3,java垃圾回收,
如果这几点你都能阐述的不错,多半都会给你机会的~~~
——————————更新——————————————————
上面说了3个比较重要的点,下面根据我自己的面试经历补充一下其他的。。。。。。
面试的时候,面试官会根据你简历上的项目经历(或者是你的作品)让你自己选一个演示一下,然后会根据你演示问其中用到的一些技术。比如:
1,问你实现这个用到了哪些技术,有其他的实现方式吗?还可以做出哪些优化?
2,整个项目中用到了哪些开源框架?他们的实现思路是什么?你看过他们的源码吗?
3,说说你知道的当前几个比较火比较流行的开源框架(比如 Volley ,Universnal-image-loader等),是怎么用的,研究过他们的源码没?
4,此外还会问一些系统的常用组件,比如说 Listview 的用法,自定义Adapter,Listview中的重用优化(我记得当时面试官是这样问我的,ScrollView 和ListView 都能展示一个列表,为什么用Listview 而不用ScrollView ? 这个问题主要就是ListView 的重用,使用了covertview,只加载可见的item,释放不可见的item)。
以上基本就是基于你做的项目问的一些问题,此外还有一些常见的面试问题:
1,叫你说一下,Java中集合的类整个继承结构,list,map,set, queue的区别?
2,说一下你了解的几个常用的设计模式。(简单的要会写哦!!比如单例模式,上次我旁边的面试官同事说,他叫面试者在纸上写一个单例模式,然后没写出来,直接pass)
3 ,最好自己有个Github帐号,上面有自己的代码,这是个很好的加分项。。
好了,,,基本上就是这些,希望能够帮助到正在找工作的朋友~~~好运!!!
亮中
,资深装逼用户 纯粹文艺青年
想开发一个项目,去应聘安卓实习生。
如果时应聘实习生的话,技术1面的话比较多问的Android基础部分,而且大部分是和你这个项目可能没有关联的。
2面试官会问比较多关于你这个项目用的了什么技术,怎么实现的。往往会结合公司将要你做的项目模块有关。比如公司将要做电商类的应用,估计会问你这个XX界面要怎么样做,大概多长时间你能够完成。
3面估计有个总监来面,估计也没有。但是这个总监就不一定是技术类的。我发现这时候,很多问题时是和技术无关的,多是关于你这个人的,比如学校生活,产品想法,成长经历等。
当然,可能安卓实习生看重的可能更多的是java基础知识?
这个不敢保证,看什么公司吧。但是作为android开发人员,java基础还是要牢固点。建议交叉学习,主要android,遇到java上的一些问题,倒回去学习java,再回来干android。
-题外-
作为Android实习生的话,有完整项目经历外,还需要多一点的其他知识。
建议,看完 Android Design,Training文档部分。
刘志龙
,主业Android应用开发,向全栈进军;开源项…
手机打字版式不对请见谅。
-------------------
仔细回答下吧。做了5年安卓了。负责技术招聘这块大概两年半吧。说下我现在的面试流程,我们可能跟其他大公司不一样,我们这边一般一面就可以了。两面的也有但是很少。一面一般是我再加我一个小弟直接去面,非技术方面会在面试过程中根据面试者的交流来判断是否容易沟通,思路是否清晰,工作稳定性是否高。楼主主要问技术方面吧。技术方面是这样的。首先会看面试者想要面的职位,根据不同的级别会问不同的问题。我这边没有面试题给你做。做了也没用,一般直接让面试者拿项目看,初级或者实习生的职位,就会问如下几点1.这个app都用到什么技术点?2.app分了几层,如何分层的?3.这么设计有什么优势?能解决什么问题。有没有其他方式设计?(这是为了看知识的广度)4.用了哪些开源库,同类库还知道哪些?他们大概怎么实现的。5.项目用到的一些系统组件的大概用法以及相关衍生提问。基本上初级程序员就问这些。
高级程序员呢,上面的问题会问一部分,但是主要是看他对安卓本身的理解,比如如下。1.为什么会有fragment这个东西,他是干嘛的?能解决什么问题?用view能做的事情为什么还要用fragment? 2.用到开源库了吧。用的啥啊?用的slidemenu?OK 他怎么写的啊?view绘制流程什么样啊?touch事件怎么分发的啊?他为什么加到decor view上啊?等等基于开源库的相关于framework层的实现3.listview用过吧,他怎么实现的啊?4.MVC mvvm他俩啥区别啊?哪个更适合安卓架构的开发啊?为啥呢?5.OOM肯定都遇到过吧?为什么会产生OOM?GC的机制是什么样的?别说大图片加载导致oom,那只是oom的一种,本质原因是啥?怎么避免?说到这个会问handler啊内部类啊为什么会导致内存泄漏什么的。等等吧。 然后还会问一些后台的相关知识。
————————————
总结下来,基础程序员我看中的是你对技术的热情,以及你做过什么。而高级程序员我看中的是你对安卓本身的理解。
插播软广告
招各方面大牛,技术产品运营都要。base苏州。薪资看齐北上广。团队成员很多bat。欢迎加盟。
面试官通常关注以下方面:
1. 项目是否完整;
2. 面试者是否能完整阐述项目架构,项目难点或创新点;
3. 安卓和java基础是否扎实:
安卓主要是四大组件,网络通信,性能优化,数据存储,内存管理,UI;
java主要是 IO/NIO 集合 异常 线程 并发 注解 网络 内存管理 ;
4. 是否有独立解决问题的能力;
talk is cheap, show me the code.
所以,放个项目GitHub上,有几百上千个star就可以随意找了。
其它答案说的差不多了,我补充一点
对于应届生 首先是确认这个应用确实是你写的。
你知道....现在来面试的....不知道哪里复制点代码...或者哪个培训课程里弄一个项目就来的太多了.........所以你自己写项目......千万不要和各大培训机构的训练项目 相似......
做一个完整的应用比一个demo值钱得多,也复杂得多