程序员面试题总结(二) 每日十题

11、什么是值传递和引用传递?
考察点:JAVA 引用传递
参考回答:
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量. 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 所以对引用对象进行操作会同时改变原对象. 一般认为,java 内的传递都是值传递.

12、数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不 是 ArrayList?
考察点:Array
参考回答:
Array 和 ArrayList 的不同点: Array 可以包含基本类型和对象类型ArrayList 只能包含对象类型。 Array 大小是固定的,ArrayList 的大小是动态变化的。 ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类 型的时候,这种方式相对比较慢

13、你了解大 O 符号(big-O notation)么?你能给出不同数据结构的例子么?
考察点:JAVA notation
参考回答:
大 O 符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下 有多么好。 大 O 符号也可用来描述其他的行为,比如:内存消耗。因为集合类实际上是数据结构,我们一般 使用大 O 符号基于时间,内存和性能来选择最好的实现。大 O 符号可以对大量数据的性能给出一 个很好的说明
同时,大 O 符号表示一个程序运行时所需要的渐进时间复杂度上界
其函数表示是:
对于函数 f(n),g(n),如果存在一个常数 c,使得 f(n)<=c*g(n),则 f(n)=O(g(n));
大 O 描述当数据结构中的元素增加时,算法的规模和性能在最坏情景下有多好
大 O 还可以描述其它行为,比如内存消耗。因为集合类实际上是数据结构,因此我们一般使 用大 O 符号基于时间,内存,性能选择最好的实现。大 O 符号可以

对大量数据性能给予一个很好 的说明

14、String 是最基本的数据类型吗?
考察点:数据类型
参考回答:
基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。 java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效 率节省空间,我们应该用 StringBuffer 类。

15、int 和 Integer 有什么区别
考察点:数据类型
参考回答:
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int 是 java 的原始数据 类型,Integer 是 java 为 int 提供的封装类。 Java 为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同 的特征和用法,它们包括:大小和速 度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时 所指定的缺省值。对象引用实例变量 的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

16、String 和 StringBuffer 的区别
考察点:数据类型
参考回答:
JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含多 个字符的字符数据。这个 String 类提供了 数值不可改变的字符串。而这个 StringBuffer 类提供的字符串进行修改。当你知道字符数据要 改变的时候你就可以使用 StringBuffer 。典型地,你可以使用 StringBuffers 来动态构造字符数据。

17、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符串?
考察点:数据类型
参考回答:
Public String translate (String str) {
String tempStr = “”;
try {
tempStr = new String(str.getBytes(“ISO-8859-1″), “GBK”);
tempStr = tempStr.trim();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}

18、int 和 Integer 有什么区别?
考察点:数据类型
参考回答:
Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型, 但是为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应的 包装类型(wrapper class),int 的包装类就是 Integer,从 Java 5 开始引入了自动装箱/拆箱 机制,使得二者可以相互转换。 Java 为每个原始类型提供了包装类型: - 原始类型: boolean,char,byte,short,int,long,float,double - 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
如:
class AutoUnboxingTest {
public static void main(String[] args) {
Integer a = new Integer(3);
Integer b = 3; // 将 3 自动装箱成 Integer 类型
int c = 3;
System.out.println(a == b); // false 两个引用没有引用同一对象
System.out.println(a == c); // true a 自动拆箱成 int 类型再和 c 比较
}
}

19、&和&&的区别?
考察点:运算符
参考回答:
&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的 差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是 true 整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直 接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定 用户名不是 null 而且不是空字符串,应当写为:username != null &&!username.equals(""), 二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的 equals 比较,否则会产生 NullPointerException 异常。

20、在 Java 中,如何跳出当前的多重嵌套循环?
考察点:循环
参考回答:
在最外层循环前加一个标记如 A,然后用 break A;可以跳出多重循环。(Java 中支持带标 签的 break 和 continue 语句, 作用有点类似于 C和 C++中的 goto 语句,但是就像要避免使用 goto 一样,应该避免使用带标签的 break 和 continue,因为它不会让你的程序变得更优雅,很多时 候甚至有相反的作用,所以这种语法其实不知道更好)
例如:
a:while(true){
switch(3){
case 3:
break a;//当是3时直接跳出循环,而不是跳出switch
default:
break;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值