2019-08-21 刷题知识点

1.我们在程序中经常使用“System.out.println()”来输出信息,System是java.lang包下的一个类,out为System的final静态成员(PrintStream类型),println()是PrintStream类的实例方法。

2.String str1 = “abc”,“abc”分配在内存哪个区域?(字符串常量区)
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
堆:存放用new产生的数据
静态域:存放在对象中用static定义的静态成员
常量池:存放常量
非RAM存储:硬盘等永久存储空间

3.以下程序运行的结果为(run main)

public class Example extends Thread{
     @Override
     public void run(){
        try{
             Thread.sleep(1000);
             }catch (InterruptedException e){
             e.printStackTrace();
             }
             System.out.print("run");
     }
     public static void main(String[] args){
             Example example=new Example();
             example.run();
             System.out.print("main");
     }
}

4.下面哪种情况会导致持久区jvm堆内存溢出?(使用CGLib技术直接操作字节码运行,生成大量的动态类)
http://blog.csdn.net/sivyer123/article/details/17139443
简单的来说 java的堆内存分为两块:permantspace(持久带) 和 heap space。
持久带中主要存放用于存放静态类型数据,如 Java Class, Method 等, 与垃圾收集器要收集的Java对象关系不大。
而heapspace分为年轻带和年老带
年轻代的垃圾回收叫 Young GC, 年老代的垃圾回收叫 Full GC。
在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象
年老代溢出原因有 循环上万次的字符串处理、创建上千万个对象、在一段代码内申请上百M甚至上G的内存,既A B D选项
持久代溢出原因 动态加载了大量Java类而导致溢出。

5.通过Intent传递一些二进制数据的方法有哪些?
A、使用Serializable接口实现序列化,这是java常用的方法
B、实现Parcelable接口,这里Andriod的部分分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见

6.ScrollView可以有几个直接的子控件?(1个)

7.关于Message、Handler、Message Queue、Looper以下描述:
A.Message消息,理解为线程间交流的信息,处理数据后台线程需要更新UI,则发送Message内含一些数据给UI线程。
B.Handler处理者,是Message的主要处理者,负责Message的发送,Message内容的执行处理。
C.Message Queue消息队列,用来存放通过Handler发布的消息,按照先进先出执行。
D.Looper是每条线程里的Message Queue的管家。

8.service的生命周期:


image.png

9.ANR产生时, 系统会生成一个跟踪日志文件,文件是(data/anr/traces.txt)

10.使用AIDL完成远程service方法调用下列说法正确的是:
aidl对应的接口名称不能与aidl文件名相同。
aidl的文件的内容类似java代码
创建一个Service(服务),在服务的onBind(Intent intent)方法中返回实现了aidl接口的对象。
aidl对应的接口的方法前面不能加访问权限修饰符。

11.在 Android 中, 在屏幕密度为160时, 1pt 大概等于_2.22_sp

12.哪些方法可用于显示指定目标组件?
setComponent()、setClass()、setClassName()

13.下列哪些情况下,系统可能会弹出ANR对话框?
在Activity中,Main线程消息队列中的消息在5秒内没有得到响应。
在BroadcastReceiver中,onReceive()方法执行时间超过10秒。

在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。
默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。超出就会提示应用程序无响应(ANR:Application Not Responding)对话框。
三种常见类型:
1: KeyDispatchTimeout(5 seconds) -- 主要类型
按键或触摸事件在特定时间内无响应
2 : BroadcastTimeout(10 seconds)
BroadcastReceiver在特定时间内无法处理完成
3: ServiceTimeout(20 seconds) -- 小概率类型
Service在特定的时间内无法处理完成


Activity----->5秒
Broadcast----->10秒
Service----->20秒
会报ANR,都是在主线程中运行的

14.Activity生命周期事件回调函数的说法正确的是
onCreate()方法在Activity第一次被创建时调用。
onStop()方法在Activity对用户不可见时调用。

15.Intent传递数据时,下列的数据类型哪些可以被传递?
Serializable、CharSequence、Parcelable、Bundle

你可能感兴趣的:(2019-08-21 刷题知识点)