面试总结-Android基础篇
来源:互联网 发布:2016年淘宝双十一销售额 编辑:程序博客网 时间:2024/04/30 09:37
写在前面
以下有关Android的基础,基本都是面试中涉及到的。然后我在网上找了些比较靠谱的解答,也会有一些我的理解。
而且为了更好的应聘Android开发职位,还特意系统的学习了Android开发视频课程(花了银子滴)
Android基础组件
可能觉得Android基础,也就是四大组件,网络,数据库。对的~,就是这些基础,但是让你自己看的话,没有那么多的时间和毅力。
视频教程
网上应该有的,别人推荐我看【开课吧-android开发-张文旭】,只是觉得不错,推荐下,是不是该给我广告费勒? ==> :(
学习了这个课程,Android基本开发是没问题的。但是在面试中,还是有些公司会面试一些其他的东西。以下细细说来。
Android Activity
基本的生命周期知道,那他的四种lunchmode是不是需要掌握呢?不重复造轮子了,直接参考:
基础总结篇之二:Activity的四种launchMode
以及这个大拿讲解的其他总结,他的基础写的详细,再配合代码练习,收获会不小。启动Activity有哪几种方式,以及他们的区别
自己寻找答案- 如何在Activity中传递数据
自己寻找答案 - Fragment是什么,既然有了Activity, 为什么还需要Fragment?
Fragment与Activity生命周期的关系如何?
android之Fragment(官网资料翻译)
Android Fragment 真正的完全解析(上)
小结如下:
Android Service
- Service是什么,有什么作用?
- Local Service & RemoteService区别?
- Service 和 Thread有什么关系?
- Service开启方式有哪些,有什么区别?
- IntentService是什么,作用如何?
- AIDL是什么,如何使用?
Android中Service的使用详解和注意点(LocalService)
Android中Local Service最本质的作用是什么?
Android开发实践:使用Service还是Thread
Android之Service与IntentService的比较
Android如何让Service不被杀死
Android Service被系统回收的解决方法
Android Broadcast
- 广播有什么好的作用?
- 广播的分类有哪些?
- 广播注册方式如何?
- 广播的内部机制是怎么的?
- 执行onReceive函数的最大时间有没有规定?
广播发送者与广播接收者
品茗论道说广播(Broadcast内部机制讲解)
Android发送有序广播sendOrderBraodCast截断广播和广播之间的数据传递
Android ContentProvider
- ContentProvider是什么?
- 如何实现自己的ContentProvider?
android-关于ContentProvider的使用
Android开发之ContentProvider的使用详解
ContentProvider和Uri详解
Android之ContentProvider总结
Android 事件分发机制
- 自定义View的touch事件是如何分发的?
- 说说你对Android 事件分发机制的理解?
推荐看 guolin的专栏
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
Android触摸事件分发机制
Android 网络相关
- 对于Android网络编程,你使用过哪些?
- http连接超时该如何设定?
- socket,如何理解和使用?
这几个问题都很大,当时我就说以前做了一个扫描ISBN码获取书籍信息的Android程序,使用httpURLConnection http连接去获取信息,然后解析jason格式数据,再封装成信息类,保存到数据库,还可以导出成特定内容的txt文件。 (额,扯远了, 回到正题)
Http连接分为:
1) URLConnection & HttpURLConnection
这个在javaSE 1.x系列就能找到,属于javaSE本来就有的。java.net.*
2) HttpClient
这个是属于org.apache.http.*
还有一个是Android特有的,Android.net.*
参考例子:
Android.net、org.apache.http联网实现
为android的HttpClient添加请求超时时间
Android Socket通信如何设置超时时间
Android访问网络,使用HttpURLConnection还是HttpClient?
Android输入输出流
在使用网络编程的时候,必须使用读取数据函数。java提供了丰富的API。
数据流可以分为:字节流,字符流
经常能看到如下的代码:
InputStream inputStream = null;==>inputStream的获取,可以来自httpConnection 还可以是 socket <==BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
PrintWriter pout = null;... ...pout = new PrintWriter(new BufferedWriter( new OutputStreamWriter(mSocket.getOutputStream())), true);pout.println(msg);
那就总结下我对他们的理解 。参考jdk文档。
InputStream获得的是字节流,比如你从socket中或是httpConnection中获得的。获得了这个字节流,要么你就保存字节流,要么你就继续转成字符流。
这需要API InputStreamReader,会把获得的字节流转成字符流。
都到这一步了,那你就干脆转成字符文本形式的吧, 那就是API
BufferedReader的工作了,然后你就可以使用readline之类的函数读取了。
===============================================1) InputStream & OutputStream===============================================InputStream//此抽象类是表示字节输入流的所有类的超类。 //需要定义 InputStream 子类的应用程序必须总是提供返回下一个输入字节的方法。 public int read(byte[] b) throws IOExceptionpublic int read(byte[] b, int off, int len) throws IOException OutputStream//此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。//需要定义 OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。 public void write(byte[] b) throws IOExceptionpublic void write(byte[] b, int off, int len) throws IOException ===============================================2) InputStreamReader & OutputStreamWriter===============================================//InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。//它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 //为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));//OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。//它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。//为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter。例如: Writer out = new BufferedWriter(new OutputStreamWriter(System.out));===============================================3) BufferedReader & BufferedWriter===============================================//从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。//可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了public class BufferedWriter extends Writer/* 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。该类提供了 newLine() 方法,它使用平台自己的行分隔符概念, 此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。 通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有例如, */ PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));===============================================4) PrintWriter===============================================public class PrintWriter extends Writer/* 向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。 与 PrintStream 类不同,如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。*/
Android 其他面点
draw 和 onDraw有什么区别?
==>onDraw是在draw中调用的
layout的invelidate & postinvalida区别
==>invelidate 在主线成更新UI, postinvalida其他线程中更新UI
Runtime Exception 的类型
http://blog.csdn.net/jaycee110905/article/details/45154039
http://my.oschina.net/xubohui/blog/73512
在实现menu的时候哪些方法可以被重写
http://www.devstore.cn/essay/essayInfo/389.html
oncreateOptionsMenuonOptionsItemSelectedonCreateContextMenuonContextItemSelected
assets中如何使用loadUrl 来加载html/hello.html page?
互联网用:webView.loadUrl(“http://www.google.com“);
本地文件用:webView.loadUrl(“file:///android_asset/XX.html”); 本地文件存放在:assets文件中
//加载assets/win8_Demo/目录下的index.html网页webView.loadUrl("file:///android_asset/win8_Demo/index.html");
http://blog.csdn.net/fengyuzhengfan/article/details/38360017
http://blog.csdn.net/lostinai/article/details/7857521
延展:res/raw & assets
http://blog.csdn.net/zuolongsnail/article/details/6444806
Intent能传递哪些数据类型?
ContentValue的形式是?
key-value based, key 应该是 String only.
handler的理解
提供IPC?
Handler更新UI?
它有msg queue 用于存储Msg?
在threads间 提供了通信可能?
如何让服务被杀死后重启
http://www.cnblogs.com/kobe8/archive/2013/05/15/3079839.html
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=324006&page=1#pid3711971
应用自适应屏幕
http://wiki.eoeandroid.com/Supporting_Multiple_Screens
<manifest ... > <supports-screens android:requiresSmallestWidthDp="600" /> ...</manifest>
“+”in android:id=”@+id/my_id”
在Dev Guide -> User interface -> Declaring Layout 里面看到的。
The at-symbol (@) at the beginning of the string indicates that the XML parser should parse and expand the rest of the ID string and identify it as an ID resource. The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in the R.java file). When referencing an Android resource ID, you do not need the plus-symbol, but must add the android package namespace, like so:
android:id=”@android:id/empty”
The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in the R.java file)
android View SurfaceView GlsurfaceView有什么关系, 区别?
http://blog.csdn.net/zcmain/article/details/14454953
常用的Adapter
http://www.cnblogs.com/devinzhang/archive/2012/01/20/2328334.html
BaseAdapter
ArrayAdapter
SimpleAdapter
SimpleCursorAdapter
1)BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
2)ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
3)SimpleAdapter有最好的扩充性,可以自定义出各种效果。
4)SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
如何添加Fragment 到back stack entry中,方便你后续能访问到它?
http://www.cnblogs.com/mengdd/archive/2013/01/09/2853254.html
每个transaction是一组同时执行的变化的集合。用add(), remove(), replace()方法,把所有需要的变化加进去,然后调用commit()方法,将这些变化应用。
在commit()方法之前,你可以调用addToBackStack(),把这个transaction加入back stack中去,这个back stack是由activity管理的,当用户按返回键时,就会回到上一个fragment的状态。
比如下面的代码就是用一个新的fragment取代之前的fragment,并且将前次的状态存储在back stack中。
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
小结
本篇主要是列举了Android 开发过程中的基础知识方面,其实还有其他的点没有小结。但是这些都是我在面试过程中遇到的基础问题。下篇小结下我遇到的JAVA的基础点。
- 面试总结-Android基础篇
- android面试基础总结
- android面试基础总结
- android面试基础总结
- android面试基础总结
- android----面试基础概括总结
- 面试总结-Java基础篇
- android 面试 (基础篇 4)
- android 面试 (基础篇 5)
- android面试 (基础篇 11)
- JAVA高级面试总结-基础篇
- 一点点基础面试总结
- java面试基础总结
- Java面试基础总结
- 前端面试基础总结
- 基础面试总结
- 面试总结------Java基础
- c++基础--面试总结
- [006] 百度地图移动版API终于发布了(Android)
- SWT_
- 微信js-sdk图片接口实现一键上传.md
- mysql 小知识
- [007] 如何在Android应用中使用百度地图api
- 面试总结-Android基础篇
- Contains Duplicate III - LeetCode 220
- java web 服务器随笔(reponse)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- int 类的计算,不好犯这种低级错误
- [008] 百度地图API之ItemizedOverlay的使用(Android)
- poj 1703 Find them, Catch them 【带权并查集】
- UCTF WriteUp
- String对象不可改变的特性