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 选择题,简答题,以及面试真题!!!敬请期待

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

时间: 2024-08-25 03:32:06

Android开发工程师必看笔试题:Java基础选择题(一)的相关文章

Android开发工程师必看面试题:java基础知识盘点

面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用 增强代码的可靠性和灵活性 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修饰符

Android开发工程师必看面试题:(三)

1.什么是ANR 如何避免它? http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025671.aspx 2.什么情况会导致Force Close ?如何避免?能否捕获导致其的异常? 3.Android本身的api并未声明会抛出异常,则其在运行时有无可能抛出runtime异常,你遇到过吗?诺有的话会导致什么问题?如何解决? 会有运行时异常, 运行时异常无需捕捉 4.简要解释一下activity. intent .intent filter

17个Web前端开发工程师必看的国外网站

Web设计是一个不断变化的领域,因此掌握最新的发展趋势及技术动向对设计师来说非常重要,无论是学习新技术,还是寻找免费资源与工具,设计博客都是很不错的去处. 1. Smashing Magazine Smashing Magazine创建于2006年,是最好的设计博客之一,有很多Web设计和开发方面的高质量文章,内容涉及HTML5.CSS.JavaScript.Photoshop.Wordpress.壁纸和网站可用性. 2. Net Tuts Net Tuts是一个高品质的设计博客,发布技术,技巧

开发工程师必看!不管你技术多牛逼

1.为什么平胸妹子一般都是吃货?神回复:因为穷胸极饿! 2.别人的孩子都会买手纸了,我的孩子还在手纸上.神回复:别人的老婆都会生气了,你的老婆还要充气. 3.都40多了,还有许多事不明白该问谁?神回复:外事问谷歌,内事问百度,房事问天涯! 4.女生为什么会来大姨妈?神回复:这个卵子啊,等不到精子啊,那叫一个郁闷,边走边吐血. 5.公交车上看见一个合口味的男生,怎么勾搭?神回复:假装癫痫,口吐白沬,倒他怀里,双手抽搐,趁机抓他裆,够大就继续,不满意就--哎!我好了! 6.你离死亡最近的一次经历?

Android开发工程师,新长征路上的14项技能

导读: 你曾渴望回到宋朝吗? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一起,那时的你,生活的简单而美好. 看看现在的你,一个刚入门的安卓开发工程师,没有信用卡,没有她,没有24小时热水的家.你想念你的锄头和翠姑(或麦垛),可你回不去了,你现在手中的安卓手机,冰冷如铁,你不知道如何在这4寸屏的小东西上打出一片天地. 你不用感到不知所措和困惑,技术就是你安身立命的根本,当下,你的

Android开发工程师,前行路上的14项技能

导读: 你是否曾渴望回到宋朝? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有现在这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一起,那时的你,生活的简单而美好. 看看现在的你,一个刚入门的安卓开发工程师,没有信用卡,没有她,没有24小时热水的家.你想念你的锄头和翠姑(或麦垛),可你回不去了.你握在手中的安卓手机,冰冷如铁,你不知道如何在这4寸屏的小东西上创出一片天地. 你不用感到不知所措和困惑,技术就是你安身立命的根本,当下

1-3年Android开发工程师怎么面试?已拿下知乎、网易和快手的offer!

分享一下我朋友的面经给大家,最后他去了知乎,所以这也是一份非常中肯的面经! 本篇文章给大家分享一下笔者面试的一些感受和经验,因为笔者目前不到两年的工作经验,所以本篇文章定位为1-3年的Android开发工程师.当然本篇也适用于校招,但3年以上估计面试要求会更高一些. 笔者从前期准备到所有面试结束,花费了差不多3个月的时间.真可谓"面试造火箭,工作拧螺丝",面试过程真的很累很辛苦. 笔者面了很多公司,最终拿下了知乎.网易和快手的offer,最后选择了知乎. 有人可能会问为什么不选择快手?

Android开发工程师应该知道的50个开发秘诀、技巧和资源分享

作者撰写本文的初衷,是为了罗列出Android Studio有用的提示.技巧.快捷方式和参考资源,将提高您的整体效率和操作性能. 显然,还有很多优化.快捷方式等,但作者为了保持这篇文章的简短,限制为50个,希望读者会喜欢这篇文章! InfoQ注:本文是以MacOS X操作Android Studio为例,与Windows / Linux不一致的地方已经标注,请读者注意这一点. 可视化 1.Android Logcat的材料颜色主题(Material Colors theme). 要更改Andro

一个合格的前端工程师必看的书籍

以我的经验,大部分技术,熟读下列四类书籍即可. 入门,用浅显的语言和方式讲述正确的道理和方法,如head first系列 全面,巨细无遗地探讨每个细节,遇到疑难问题时往往可以在这里得到理论解答,如Definitive Guide/Programming xx系列 实践,结合实际中经常遇到的情景环境,来描述如何设计和解决问题,如cookbook系列 深入,讲解一些文化,思路,甚至于哲学上的东西,真正做到深入一种语言去编程,如unix编程艺术,程序员修炼之道等等 那么,目前为止我认为最好的书是: c