当前位置: 代码迷 >> Android >> Android开发工程师必看笔试题:Java基础选择题(1)
  详细解决方案

Android开发工程师必看笔试题:Java基础选择题(1)

热度:40   发布时间:2016-04-27 22:32:12.0
Android开发工程师必看笔试题:Java基础选择题(一)

1.在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作。(单选)
  A) FileInputStream
  B) FileReader
  C) FileWriter
  D) File


  2. Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的是()(单选)
  A) ArrayList和LinkedList均实现了List接口
  B) ArrayList的访问速度比LinkedList快
  C) 添加和删除元素时,ArrayList的表现更佳
D) HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

ArrayList 保存所有元素  包括null,优点:根据索引快速访问;缺点:指定索引位置插入删除慢Linkedlist链表结构保存对象,优点:便于插入删除;缺点:随机访问,效率低

几个面试常见问题:


1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
A:Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。


2.Q:大致讲解java集合的体系结构
A:List、Set、Map是这个集合体系中最主要的三个接口。
其中List和Set继承自Collection接口。
Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。


  3. 在使用super 和this关键字时,以下描述正确的是()(单选)

  A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
  
  记住正确选项错误已删除


  4. 在Java中,JDBC API定义了一组用于与数据库进行通信的接口和类,它们包括在()包中。(单选)
  A) java.lang
  B) java.sql
  C) java.util
  D) java.math


  5. Java中,以下( )接口以键_值对的方式存储对象。(单选)

  A) java.util.Collection
  B) java.util.Map
  C) java.util.List
  D) java.util.Set


  6. 以下关于对象序列化描述正确的是()(多选)
  A) 使用FileOutputStream可以将对象进行传输 、、文件
  B) 使用PrintWriter可以将对象进行传输
  C) 使用ObjectOutputStream类完成对象存储,使用ObjectInputStream类完成对象读取
D) 对象序列化的所属类需要实现Serializable接口

Java对象序列化ObjectOutputStream和ObjectInputStream Java中ObjectInputStream 与
ObjectOutputStream这两个包装类可用于输入流中读取对象类数据和将对象类型的数据写入到底层输入流
。ObjectInputStream 与 ObjectOutputStream 类所读写的对象必须实现了 Serializable
接口。需要注意的是:对象中的 transient 和 static 类型的成员变量不会被读取和写入 。

  7. 在Java中,( )类可用于创建链表数据结构的对象。(单选)
  A) LinkedList
  B) ArrayList
  C) Collection
  D) HashMap

  8. 分析下面这段Java代码,它的运行结果是( )。(单选)
  Import java.io.*;
  Public class B{
   Public static void main(string [] args){
    int i=12;
    System.out.println(i+=i-=i*=i);}}

  A) 100
  B) 0
  C) -120
D) 程序无法编译

先分解 i+=i;(a) i*=i;(b) i-=i;(c); 这个公式是从左向右走的 比如i=5; 先走a i+=i;
+=这种算法是先加再等于 i=i+i;这样是不对的 i+=i;整体是10 但是i依然是5,这个不知道你能明白吗? 再往右走因为后面有乘法先做乘法b 同上 i*=i; i一直是5但是 i*=i为25 把i=i*i看成一个整体是25但是i还是5;
再走c的时候 i-=i 其实是i=a-b;就是10-25=-15;

  9. 使用JDBC事务的步骤是()(多选)
  A) 取消Connection的事务自动提交方式
  B) 发生异常回滚事务
  C) 获取Connection对象
D) 操作完毕提交事务

数据库开启事务命令 方式一:利用SQL语句管理事务 start
transaction;–开启事务,这条语句之后的sql语句将处在一个事务当中,这些sql语句并不会立即执行
Commit–提交事务,一旦提交事务,事务中的所有sql语句才会执行。 Rollback – 回滚事务,将之前所有的sql取消。
方式二:在数据库中存在一个自动提交变量,通过show variables like ‘%commit%’—–autocommit
值是on,说明开启了事务自动提交。 可以 set autocommint = off(set
autocommint=0),关闭自动提交,此时输入的sql语句就不会自动提交了,需要手动roolback或commit
(1)当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用下列语句:
(2)JDBC控制事务语句 Connection.setAutoCommit(false); // 相当于start
transaction Connection.rollback(); rollback Connection.commit();
commit (3)设置事务回滚点 Savepoint sp = conn.setSavepoint();
Conn.rollback(sp); Conn.commit(); //回滚后必须要提交

  10. 以下对JDBC事务描述错误的是()(单选)
  A) JDBC事务属于JAVA事务的一种
  B) JDBC事务属于容器事务类型
  C) JDBC事务可以保证操作的完整性和一致性
  D) JDBC事务是由Connection发起的,并由Connection控制

Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。

1、JDBC事务

JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection
)提供了两种事务模式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法:

public void setAutoCommit(boolean) public boolean getAutoCommit()
public void commit() public void rollback()

使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个
JDBC 事务不能跨越多个数据库。

2、JTA(Java Transaction API)事务

JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。

JTA允许应用程序执行分布式事务处理–在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的JTA支持极大地增强了数据访问能力。

如果计划用 JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、
javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC
驱动程序。一个实现了这些接口的驱动程序将可以参与 JTA 事务。一个 XADataSource 对象就是一个 XAConnection
对象的工厂。 XAConnection s 是参与 JTA 事务的 JDBC 连接。

您将需要用应用服务器的管理工具设置 XADataSource 。从应用服务器和 JDBC 驱动程序的文档中可以了解到相关的指导。

J2EE 应用程序用 JNDI 查询数据源。一旦应用程序找到了数据源对象,它就调用
javax.sql.DataSource.getConnection() 以获得到数据库的连接。

XA 连接与非 XA 连接不同。一定要记住 XA 连接参与了 JTA 事务。这意味着 XA 连接不支持 JDBC
的自动提交功能。同时,应用程序一定不要对 XA 连接调用 java.sql.Connection.commit() 或者
java.sql.Connection.rollback() 。相反,应用程序应该使用 UserTransaction.begin()、
UserTransaction.commit() 和 serTransaction.rollback() 。

3、容器事务

容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。相对编码实现JTA事务管理,
我们可以通过EJB容器提供的容器事务管理机制(CMT)完成同一个功能,这项功能由J2EE应用服务器提供。这使得我们可以简单的指定将哪个方法加入事
务,一旦指定,容器将负责事务管理任务。这是我们土建的解决方式,因为通过这种方式我们可以将事务代码排除在逻辑编码之外,同时将所有困难交给
J2EE容器去解决。使用EJB CMT的另外一个好处就是程序员无需关心JTA API的编码,不过,理论上我们必须使用EJB。

四、三种事务差异

1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。

2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。

3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。

五、总结

事务控制是构建J2EE应用不可缺少的一部分,合理选择应用何种事务对整个应用系统来说至关重要。一般说来,在单个JDBC
连接连接的情况下可以选择JDBC事务,在跨多个连接或者数据库情况下,需要选择使用JTA事务,如果用到了EJB,则可以考虑使用EJB容器事务。

  参考答案:

  1.D 2.C 3.A 4.B 5.B

  6.CD 7.A 8.C 9.CABD 10.B

后面陆续发布Java选择题,简答题,android 选择题,简答题,以及面试真题!!!敬请期待

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案