Android面试题(2)
来源:互联网 发布:python 高斯拟合 编辑:程序博客网 时间:2024/05/17 22:04
1、 int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
2、 说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
3、 Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
4、 内部类可以引用他包含类的成员吗?有没有什么限制?
一个内部类对象可以访问创建它的外部类对象的内容
5、 在JAVA中,如何跳出当前的多重嵌套循环?
用break; return 方法。
6、 什么是java序列化,如何实现java序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
7、 静态变量和实例变量的区别?
static i = 10; //常量 class A a; a.i =10;//可变
8、 MVC的各个部分都有那些技术来实现?如何实现?
MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
9、 JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
10、 什么情况下调用doGet()和doPost()?
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
11、 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
12、 用最有效率的方法算出2乘以8等於几?
2 << 3
13、 是否可以继承String类?
String类是final类故不可以继承。
14、 数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。String有有length()这个方法。
15、 List, Set, Map是否继承自Collection接口?
List,Set是,Map不是
16、 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
17、 启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
18、 forward 和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
19、 同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
20、 final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
21、 Android的四大组件是哪些,它们的作用?
:Activity:Activity是Android程序与用户交互的窗口,是Android
构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的
事情,妥善管理生命周期以及一些跳转逻辑
service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受
上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步
的接口
Content Provider:是Android提供的第三方应用数据的访问方案,可
以派生Content Provider类,对外提供数据,可以像数据库一样进行选
择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简
化上层应用,对数据的整合提供了更方便的途径
BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关
消息,做一些简单处理,转换成一条Notification,统一了Android的
事件广播模型
22、 ListView的优化方案
1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数
contentView是否为null,如果为null就创建contentView并返回,如果不
为null则直接使用。在这个方法中尽可能少创建view。
2、给contentView设置tag(setTag()),传入一个viewHolder对象,
用于缓存要显示的数据,可以达到图像数据异步加载的效果。
3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示
100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的
时候再去加载接下来的20条。
23、 activity的启动模式有哪些?是什么含义?
在android里,有4种activity的启动模式,分别为:
“standard” (默认)
“singleTop”
“singleTask”
“singleInstance”
24、 请描述下Activity的生命周期。
activity的生命周期方法有:
onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、on
Destory();
可见生命周期:从onStart()直到系统调用onStop()
前台生命周期:从onResume()直到系统调用onPause()
25、 activity在屏幕旋转时的生命周期
不设置Activity的android:configChanges时,切屏会重新调用各个生
命周期,切横屏时会执行一次,切竖屏时会执行两次;设置Activity的
android:configChanges="orientation"时,切屏还是会重新调用各个生命
周期,切横、竖屏时只会执行一次;设置Activity的
android:configChanges="orientation|keyboardHidden"时,切屏不会重
新调用各个生命周期,只会执行onConfigurationChanged方法
- Android面试题(2)
- Android面试题(2)
- Android面试题(2)
- Android面试题(2)
- Android面试题(2)
- Android面试题(2)
- Android面试题(2)
- Android面试题2
- android面试题2
- android面试题2
- android面试题(2)
- Android 面试题2
- android面试题2
- android面试题2
- android面试题2
- Android面试题2
- android面试题2
- Android面试题2
- codeVS 1098 均分纸牌(2002年NOIP全国联赛提高组)
- PowerShell中使用Out-File把字符串或运行结果保存到文件的方法
- Azure SQL的DTU和eDTU到底是个什么鬼
- c++ 删除向量中重复的元素
- java--foreach,不是jsp里的foreach
- Android面试题(2)
- IAR数据类型
- arm汇编之 bne与beq
- 面向对象C++入门-Hello,World
- Oracle_PL/SQL-游标
- 1_Configure OpenCV3.2 for VS2013
- SSH三大框架的整合+利用Ajax实现无刷新分页
- 【并发编程】concurrent包的Condition使用详解
- 修改Mysql登录密码