android面试题总结

CETV一面:40分钟

1)项目问得多,问功能,代码有哪些亮点,怎么实现侧滑菜单的 等等。

2)java的引用是有什么作用

3)引用是什么,分别有哪几种,描述下他们的区别,弱引用用在什么地方。

4)熟悉的设计模式,单例模式怎么实现,这种模式用在什么地方

5)android的四大组件

6)fragment的生命周期,

7)内存泄露和内存溢出什么区别:http://blog.csdn.net/buutterfly/article/details/6617375,结果memory leak会最终会导致out of memory

8)写代码:给两个字符A和B,打印B在A中出现的次数

9)对于他们公司,有什么需要问的

 

 

3)、有没有使用过Android的开源库,或者开源控件Image-Loaderokhttp SlidingMenuvolleyVolley是针对数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。http://blog.csdn.net/fenghai22/article/details/44061307

(1)volley框架看过没,讲下框架原理和源码

(2)android动态打补丁如何操作

(3)如何做到实时推送,答的是长连接,发送心跳包,维持service,守护进程来保持service不被杀死

(4)了解过html5和hybird混合开发没

(5)讲下RXJAVA吧

 

阿里巴巴一面(2016.3.17)

    1)如何开启多个网络异步请求

    2线程池内线程的数量如何确定

    3说说OKHTTP的实现

    4UIM的实现

    5如何学习android

    6前沿技术

    7完全二叉树、满二叉树、平衡二叉树的区别

    8arraylist与hashmap的底层实现

    9converview一些知识点

     (10)oom如何发现

     (11)handler出现oom如何解决handle设为态类和弱引用的方法解决这种问题在关闭Activity的时候停掉你的后台线程https://my.oschina.net/rengwuxian/blog/181449

     (12)页式管理和段页式管理出现缺页情况怎么办

 


蘑菇街一面(2016.3.18)——蘑菇街忘了很多

      (1)介绍自己和项目

      (2)在项目中遇到的问题如何解决

      (3)UIM的实现

      (4)几个算法题:给个链表,寻找倒数第K个节点;给一个升序数组和数值,找到数组内的两个数值相加等于给定数值

     5tcp和udp什么区别



CVTE一面(2016.3.21)

      1介绍一下自己最满意的项目

      2讲一下mvp,mvp和mvc区别http://blog.csdn.net/gjnm820/article/details/51733361

      3讲一下用过的开源项目,说一下如何实现

      4设计模式

       (5)Asynctask实现使用AsyncTask类,以下是几条必须遵守的准则:Task的实例必须在UI thread中创建;execute方法必须在UI thread中调用;不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;该task只能被执行一次,否则多次调用时将会出现异常;http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html

       (6)线程池如何使用

       (7)如何实现多进程,进程间如何通信,具体讲一下  :进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,简而言之,一个程序至少有一个进程,一个进程至少有一个线程.但是线程不能够独立执行,必须依存在应用程序中

       (8)surfaceView  : surfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面。

       (9)如何进行界面优化减少界面刷新次数,把io操作从主线程中剥离出来。

       (10)如何实现缓存 对象序列化到本地

       (11)三分钟写一个算法:给一句话the sky is blue 实现逆转 blue is sky the

 

 

来一发美团的Android实习内推面经吧。

一面:

1、Activity的生命周期

2、onSaveInstanceState和onRestoreInstanceState调用的过程和时机,onNewIntent方法:当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。http://android.blog.51cto.com/268543/634646/,singleTop:
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

3、fragment的生命周期,和Activity如何进行通信:通过回调方式来进行通信。在fragment中添加一个接口,activity中实现这个接口,当在fragment中点击事件的时候,调用接口实例,传递参数给activity这样就实现了fragment传递数据给activity。http://blog.csdn.net/guozh/article/details/25327685

4、Android的事件分发机制,ACTION_DOWN和后续事件如何消耗

5、Activity的启动方式:四种启动方式:standard,singleTop,singleTask,singleInstance::http://blog.csdn.net/shinay/article/details/7898492

6、View的绘制流程,MeasureSpec如何工作,父的MeasureSpec和自己的LayoutParams

7、广播的两种注册方式

8、数据 库如何升级(懵逼)

9、Handler Looper的使用方式,实现机制,设计的原因

10、HandlerThread有没有了解(很神奇的我完全忘了当时是怎么答的了)

11、ThreadLocal是干嘛的,使用的地方

12、软引用和弱引用,虚引用的区别:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。而软引用是指只有内存不足时才会回收软引用对象。虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。 

13、熟悉哪些设计模式

14、Sqlite的一些问题

15、Activity A调用Activity B时,A调用什么函数(onPause)

然后说让我等通知,然后10分钟就打过来约二面。。。

你可能感兴趣的:(android)