• Android开发面试题(一)


    1、String和StringBuffer有什么本质区别?

    本质区别:String字符串不可变,每次修改字符串必须要重新赋值(生成新的对象)才能修改;StringBuffer字符串可变,可以直接对字符串本身进行修改(不生成新的对象)。

    此外StringBuffer是线程安全的,在有大量字符串修改操作的情况下,性能更优。

    2、解释一下Java的反射机制。

    反射:在程序运行时通过类名加载类的对象,从而动态的调用类的对象的属性和方法等元素的机制。

    3、Class<?> loadClass(String str) Class<?>代表什么意思?

    Class<?>是通配泛型,?可以代表任何类型。

    Class<T>在实例化的时候,T要替换成具体类。

    <? extends T>受限统配,表示T的一个未知子类。

    <? super T>下限统配,表示T的一个未知父类。

    4、Android中有哪几种布局?

    LinearLayout :线性布局,简单的按照水平或垂直方式,按照先后顺序进行控件布局的方式。

    FrameLayout :帧布局,控件会在左上角进行“堆放”,起到“层层叠加”的效果。

    AbsoluteLayout :绝对布局,相对于左上角的绝对坐标来确定各元素的位置。此布局方式不能很好的适配各种尺寸屏幕的移动设备,现已很少采用。

    RelativeLayout :相对布局,以控件之间的相对位置进行布局,是最灵活的一种布局方式。

    TableLayout :表格布局,基于N行N列的比较规则的布局方式。

    5、Android中的Apk发布正式版本,为什么要签名?

    apk默认的识别id是Activity所在的包名,所以有可能会重复,签名的意义在于能够唯一的识别自己开发的应用,正确的更新、卸载app。

    6、Service运行于哪个线程中?Service中如何避免ANR?

    Service运行于主线程中。如果Service有长时间操作,依然会阻塞主线程,造成ANR。

    ANR(Android Not Response),在程序长时间没有响应的情况下产生。

    避免ANR:不在主线程上执行网络操作或耗时较长的操作,可以通过异步(AsyncTask)或多线程(Handler+Thread)处理。

    7、Android中如果在Intent中要传递一个对象,该对象要实现哪几个接口?

    Serializable、Parcelable

    Serializable更适合于在磁盘上序列化、反序列化,Parcelable更适合于在内存中序列化、反序列化。

    8、Android程序中如果要对位图进行处理,需要注意什么,如果处理不当,会产生什么异常?

    Android手机内存资源有限,要对Bitmap进行预处理(图片按比例缩小、缓存:内存缓存、磁盘缓存)。如果处理不当,会产生OOM(Out Of Memory)异常。

    9、Android程序中,如果需要从网络中获取数据,应该如何操作?

    tcp/udp:socket

    http:支持get/post/delete/put等http动作,数据交换格式有xml和json等

    webservice: 基于soap+xml的web服务

    其它还有ftp、usb、wifi、blueteeth、nfc等。

  • 相关阅读:
    mvc EF SQL语句
    Android自适应屏幕大小和布局
    6263=1 这个等式是错的,只移动一个数字(不能动符号)变成正确的等式
    public static const int A=1;这段代码有错误么?错了.常量不能标记为static
    jquery的ajax全局事件和AJAX 请求正在进行时显示“正在加载”
    visual studio中javascript脚本智能感应
    使用Windows API获取和改变当前显示设置
    IP Helper API 使用方法
    Rundll32.exe使用方法大全
    WIN32 API编程枚举系统显示器
  • 原文地址:https://www.cnblogs.com/guwei4037/p/6039328.html
Copyright © 2020-2023  润新知