我的面试经历

来源:互联网 发布:女人应酬说话技巧知乎 编辑:程序博客网 时间:2024/04/30 02:38

中侨集团

一、用Java写一个单例模式

  1. public class Singleton {  
  2.     private Singleton() {}  
  3.     private static Singleton single=null;  
  4.     //静态工厂方法   
  5.     public static Singleton getInstance() {  
  6.          if (single == null) {    
  7.              single = new Singleton();  
  8.          }    
  9.         return single;  
  10.     }  

二、简述Activity生命周期

onCreate(Bundle savedInstanceState)
onStart()
onResume()
onPause()

onStop()

onDestroy()
onRestart()


onCreate(Bundle savedInstanceState)
Activity的初始化,也就是一个全新的Activity开始时,调用该方法

onStart()
Activity的启动,当你能够看到Activity时,启动该方法,

onResume()
当Activity获取用户焦点将要与用户交互时调用此方法,此时activity在activity栈的栈顶,用户输入已经可以传递给它

onPause()
当系统要启动一个其他的activity时调用(其他的activity显示之前),这个方法被用来提交那些持久数据的改变、停止动画、和其他占用CPU资源的东西。由于下一个activity在这个方法返回之前不会resumed,所以实现这个方法时代码执行要尽可能快。

如果activity重新回到前景时将调用onResume(), 如果对用户彻底不可见则会调用onStop()。

onStop()
当另外一个activity恢复并遮盖住此activity,导致其对用户不再可见时调用。一个新activity启动、其它activity被切换至前景、当前activity被销毁时都会发生这种场景。

当activity重新回到前景与用户交互时调用onRestart(),如果activity将退出则调用onDestory()。

onDestroy()
在你的activity被销毁前所调用的最后一个方法,当进程终止时会出现这种情况

onRestart()
当activity从停止状态重新启动时调用。其后调用onResume()。

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

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


四、AsyncTask的使用场景用哪些?它有什么缺陷?如何解决?

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


0 0