java面试题001

1、指针和函数的关系

这里主要谈指针函数和函数指针,在c中指针函数是返回值为指针的函数;函数指针是指向函数的指针变量。

2、什么是事务?

为了完成对数据的操作,要求并发访问在多个构件之间共享的数据。这些应用在下列条件下应该维护数据的完整性,在分布式访问一个单独的数据资源,以及从一个单独的应用构件访问分布式资源时,可能要求在(分布式)资源上的一组操作【一个工作单元(unit)】的所有部分一起成功或失败并恢复。

3、事务的特性

原子性(ATOMICITY): 

一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。 

一致性(CONSISTENCY): 
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态。举个例子,在关系数据库的情况下,一个一致的事务将保护定义在数据上的所有完整性约束。 

隔离性(ISOLATION): 
在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。 
在事务隔离方面有两点要求:
1、在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。 
2、两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。 

持久性(DURABILITY): 
一个被完成的事务的效果应该是持久的.

4、Java和C++的区别

指针

 JAVA语言让编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。

多重继承

 c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。

数据类型及类

 Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。

 自动内存管理

Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。比如语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c++中必须由程序贝释放内存资源, 增加了程序设计者的负扔。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。

 操作符重载 

Java不支持操作符重载。操作符重载被认为是c++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。

预处理功能

Java不支持预处理功能。c/c++在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。

Java不支持缺省函数参数,而c++支持 

在c中,代码组织在函数中,函数可以访问程序的全局变量。c++增加了类,提供了类算法,该算法是与类相连的函数,c++类方法与Java类方法+分相似,然而,由于c++仍然支持c,所以不能阻止c++开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。Java没有不包含在类中的函数,作为一个比c++更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。

字符串 

c和c++不支持字符串变量,在c和c++程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:

(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;

(2)Java字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;

(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;

(4)可对字符串用“+”进行连接操作。

goto语句 

“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无 条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。

 类型转换 

在c和c++中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c++中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

异常 

JAVA中的异常机制用于捕获例外事件,增强系统容错能力。 其中exceptionType表示异常类型。而C++则没有如此方便的机制。

5、指针和引用的区别

指针是一个实体,而引用仅是个别名;
引用使用时无需解引用(*),指针需要解引用;
引用只能在定义时被初始化一次,之后不可变;指针可变;
引用没有 const,指针有 const;
引用不能为空,指针可以为空;
“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
指针和引用的自增(++)运算意义不一样;
从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

猜你喜欢

转载自www.cnblogs.com/sunshinekevin/p/9063329.html
今日推荐