2017年7月面试总结

Android

开发职位或许没有之前如此火爆,但是只要你有真才实学,找个较好的工作还是比较容易的。如果你是985,211,如果你是硕士学历,那找个满意的offer更是不再话下;即使不是上面的条件,只要你好好努力的学习,把每一项的技术点攻破了,同样可以达到甚至超越上面条件的同学。

Activity的加载模式。

standard,singleTop,singleTask,singleInstance。

activity的启动模式:

standard:当startActivity(),每次都会创建一个activity的实例放入任务stack中。

singleTop:当这个activity处于任务stack的最顶端,就会直接复用。不会去创建activity实例。 onNewIntent()方法被调用。

singleTask:这个activity的实例在一个任务stack中只会存在一个这样的实例。如果他发现任务栈里面有了要启动的这个actiivty,他会清空任务栈上面所有的activity,然后直接复用这个已经存在的activity

singleInstance:整个应用程序只会出现一个activity的实例。而且他是在一个单独的任务stack中。比如通话界面就是这样的模式。使用的频率很高就可以采用这样的方式。而且这个这个activity的创建的时候需要花比较长得时间。

可以参考:https://developer.android.com/guide/components/tasks-and-back-stack.html

什么时候会用到singleTask?

在MainActivity的时候用到

3 Handler机制?

MessageQueue,Looper等。

3.1 一个线程是否只有一个Looper?

3.2 如何保证一个线程只有一个Looper?

参考:ThreadLocal

事件处理

分发,拦截,处理。只是View没有拦截处理

GC算法

标记清除,标记整理,复制,分代收集

参考:http://www.jianshu.com/p/7c708a66ff42

把上面文章弄懂了,就能刷过GC

四大引用

强,软,弱,虚,并说明下合适GC

Activity的onSaveInstanceState()和 onRestoreInstanceState()方法

Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate()、onPause()等生命周期方法,它们并不一定会被触发。当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。

另外,当屏幕的方向发生了改变, Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。可以重写Activity的 onSaveInstanceState() 和 onRestoreInstanceState()方法,如下:

public class PreferencesActivity extends Activity {

private String name;

protected void onRestoreInstanceState(Bundle savedInstanceState) {

name = savedInstanceState.getString("name"); //被重新创建后恢复缓存的数据

super.onRestoreInstanceState(savedInstanceState);

}

protected void onSaveInstanceState(Bundle outState) {

outState.putString("name", "liming");//被摧毁前缓存一些数据

super.onSaveInstanceState(outState);

}

}


2017年7月面试总结_第1张图片
2017年7月面试总结_第2张图片


2017年7月面试总结_第3张图片
2017年7月面试总结_第4张图片
2017年7月面试总结_第5张图片
2017年7月面试总结_第6张图片
2017年7月面试总结_第7张图片
2017年7月面试总结_第8张图片
2017年7月面试总结_第9张图片
2017年7月面试总结_第10张图片
2017年7月面试总结_第11张图片
2017年7月面试总结_第12张图片
2017年7月面试总结_第13张图片
2017年7月面试总结_第14张图片
2017年7月面试总结_第15张图片
2017年7月面试总结_第16张图片
2017年7月面试总结_第17张图片
2017年7月面试总结_第18张图片
2017年7月面试总结_第19张图片
2017年7月面试总结_第20张图片
2017年7月面试总结_第21张图片
2017年7月面试总结_第22张图片
2017年7月面试总结_第23张图片
2017年7月面试总结_第24张图片

总结:

在接下来的学习和工作中,需要学习继续探索以下问题。

1 Java基础知识。线程,java虚拟机,内存模型等。

2 Android基础知识。官方API,常用控件源码,自定义控件,动画,性能分析等。

3 app层面:第三方开源框架(okHttp,Retrofit,ButterKnife),热修复技术(Andfix,Robust,Tinker等),崩溃处理,日志处理,内存溢出内存泄漏定位等。

4 网络基础:TCP/IP,Http/Https,UDP,七层网络协议等等。

5 沟通能力和相处能力,这是软实力。非常关键,如果你技术很好,但是相处起来很困难,我想面试官也不太愿意招你。

你可能感兴趣的:(2017年7月面试总结)