笔试题②
1**、写出几种常见的设计模式,并详细列举出一种。**
单例设计模式,工厂设计模式,适配器设计模式,模板设计模式,装饰设计模式
2**、描述下tcp接收数据的过程。**
1:建立服务器端的socket服务,需要一个端口
2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信
3:通过客户端的获取流对象的方法,读取数据或者写入数据
4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的
3**、xml的几种解析方式,并写出他们的优缺点。**
Dom 优点:可以进行增删改查逻辑
缺点:会造成内存溢出.
sax 优点:它不会造成内存溢出
缺点:它只能查,不能实现增 删 改.
xmlpull
4**、什么是JSON解析**
5**、Java中的JVM和Android中的DalvikVM有什么区别**
JVM(Java虚拟机)是一个虚构出来的运行Java程序的运行时,是通过在实际的计算机上仿真模拟各种计算机功能的实现。它具有完善的硬件架构(如处理器、堆栈、寄存器等),还具有相应的指令系统,使用JVM就是使Java程序支持与操作系统无关。理论上在任何操作系统中,只要有对应的JVM,即可运行Java程序。
Dalvik VM是在Android系统上运行Android程序的虚拟机,其指令集是基于寄存器架构的,执行特有的文件格式-dex字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。
6**、简述SharedPreference的使用,并说明存储位置。**
位置就是 data data的目录下,然后找到自己应用的包的名称。
//3.说明用户名密码不为空 使用sp来存数据 获取sp的实例
SharedPreferences sp = getSharedPreferences(“config”, 0); //:使用sp 系统会生成一个xml格式的文件
//3.1 获取sp的编辑器
SharedPreferences.Editor edit = sp.edit();
//3.2 存数据 用户名 和密码
edit.putString(“name”,name);
edit.putString(“pwd”,pwd);
//3.3 调用commit方法提交数据
edit.commit();
7**、简述Android中sqlite数据库操作方法,并写出方法名字和方法内做哪些操作**
ExecSQL
Insert
Delete
Update
Query
10**、String和StringBuffer、StringBuilder的区别**
三者在执行速度方面的比较:StringBuilder > StringBuffer > String
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
11**、进程和线程的区别**
a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
c.调度和切换:线程上下文切换比进程上下文切换要快得多。
d.在多线程OS中,进程不是一个可执行的实体。
12**、什么是反射,及使用步骤**
反射就是把java类中各种成分映射成相应的java类.
13**、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法**?
1.其他方法前是否加了synchronized关键字,如果没加,则能。
2.如果这个方法内部调用了wait,则可以进入其他synchronized方法。
3.如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能。
4.如果其他方法是static,它用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是this。
14**、是否可以继承String类**?
不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。
15**、List, Set, Map是否继承自Collection接口**?
List和Set是继承自Collection接口的接口,Set不允许重复的项目,List允许重复项目,Set接口派生的类有TreeSet,HashSet,LinkedHashSet。 List接口派生的类有ArrayList,Vector等。 Map是独立的接口,不继承Collection接口。
16**、String s = new String(“xyz”);创建了几个**String Object?
String s=new String(“xyz”)究竟创建String Object分为两种情况:
1.如果String常理池中,已经创建”xyz”,则不会继续创建,此时只创建了一个对象new String(“xyz”);
2.如果String常理池中,没有创建”xyz”,则会创建两个对象,一个对象的值是”xyz”,一个对象new String(“xyz”)。
17**、final, finally, finalize的区别。**
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
18**、谈谈android大众常用的五种布局。**
在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
(1)FrameLayout 框架布局,放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素,适合浏览单张图片。
(2)LinearLayout 线性布局,是应用程序中最常用的布局方式,主要提供控件水平或者垂直排列的模型,每个子组件都是以垂直或水平的方式来定位.(默认是垂直)
(3)AbsoluteLayout 绝对定位布局,采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为android:layout_x 和 android:layout_y来确定坐标。
(4)RelativeLayout 相对布局,根据另外一个组件或是顶层父组件来确定下一个组件的位置。和CSS里面的类似。
(5)TableLayout 表格布局,类似Html里的Table.使用TableRow来布局,其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格
19**、Adapter有什么作用?常见的Adapter有哪些?**
简述:
adapter是数据与ui之间的桥梁,它把后台数据与前端ui连接到一起,是一个展示数据的载体。
常用的adapter:
BaseAdapter : 基础适配器,对于spinner listview gridview 都是通用的,它是一个抽象类,继承后要实现的方法很多
ArrayAdapter : 是BaseAdapter的一个子类,可以直接使用泛型,使用起来比较简单
CursorAdapter:
ListAdapter:
SimpleAdapter :扩展性好,可以定义各种各样的布局,它里面涉及到的数据全是hashmap构成的List
SimpleCursorAdapter: 可以从数据库中读取数据显示在列表上
ResourceCursorAdapter:
20**、ListView的优化方案**
View view;
if(convertView == null){
view = LayoutInfalter.from(getContext()).inflate(resourceID,null)
}
else{
view = convertView
}
21**、请介绍下Android的数据存储方式。**
Android提供了5种方式存储数据:
1、使用SharedPreferences存储数据;
2、文件存储数据;
3、SQLite数据库存储数据;
4、使用ContentProvider存储数据;
5、网络存储数据;
22**、请写出你最常见到的5个runtime exception。**
RuntimeException是java中所有运行时异常的父类,实际运行时出现的都是它的子类,看看RuntimeException的Java doc就可以随便列出几个:
1,
Object x = new Integer(0);
System.out.println((String)x);
当试图将对象强制转换为不是实例的子类时,抛出该异常(ClassCastException)
2,
int a=5/0;
一个整数“除以零”时,抛出ArithmeticException异常。
3,
String s=null;
int size=s.size();
当应用程序试图在需要对象的地方使用 null 时,抛出NullPointerException异常
4,
“hello”.indexOf(-1);
指示索引或者为负,或者超出字符串的大小,抛出StringIndexOutOfBoundsException异常
5,
String[] ss=new String[-1];
如果应用程序试图创建大小为负的数组,则抛出NegativeArraySizeException异常。
转载于//www.cnblogs.com/nangongyibin/p/10446866.html
还没有评论,来说两句吧...