今天参加了一个线上测试,分享几个面试题。
一、选择题
1、下面这段代码生成了几个对象?
String s = new String("asdf");
答案:2个
解析:程序运行先创建了一个“asdf”的字符串保存到常量池中,然后new的时候在堆中又创建了一个对象,这个对象引用常量池中的字符串。
2、执行了下面的代码后c的值是什么?
a = 0;c = 0;;
do{
--c;
a = a - 1;
}while(a>0);
答案:-1
解析:这个第一遍的时候我看错了,do()while()语句会执行一次,然后判定条件,所以–c了之后c=-1,判断条件,a不大于0结束循环,我第一次迷迷糊糊的以为a不大于0继续循环。
3、下面中优先级最高的是?
A:& B:&& C:!= D:?:
答案:!=
解析:
4、下面标识符不合法的有?
A:new B:$Usdollars C:1234 D:car.taix
答案:A、C、D
解析:标识符中可以含有$、_,也可以是他们开头,大小写字母,不能是关键字、数字、和非法字符。
5、下列类中不属于Collection的子类的是?
A:linkedList B:HashSet C:PriorityQueue D:HashMap
答案:D
解析:HashMap是Map类
6、下面代码的含义是?
new list(10,true);
A、创建含有10列的新列表
B、创建含有十行的新列表,且允许多重选择
C、创建不多于10个选项的新列表
D、创建含10行的新列表,每次选择一项。
答案:B
解析:第一次我也不知道,百度了一下是B。
二、编程题
1、打印出所有水仙花数。(三位数,每位数字的立方和等于该数本身)
//计算水仙花数
public class test1 {
public static void main(String[] args) {
System.out.print("水仙花数有:");
int number = 100;
int a = 0; //百位数定义
int b = 0; //十位数定义
int c = 0; //个位数定义
for (int sum = 0; number < 1000; number++){
a = number / 100; //求百位数
b = (number - a*100) / 10; //求十位数
c = (number -a*100-b*10); //求个位数
sum = a*a*a+b*b*b+c*c*c;
if (sum == number){
System.out.print(number + ",");
}
}
}
}
注意:一定要逻辑性强,编程一定要一步一步走,把条件都写清楚。
2、计算并输出0-100之间不能被3整除的整数的和。
//计算并输出0-100之间不能被三整除的整数的和
public class test2 {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 100; i++){
if (i%3 == 0){
sum += i;
}
}
System.out.println(sum);
}
}
送分,细心就好。
3、求1!+2!+3!+4!+…+10!。
方式一:用递归。
//求1!+2!+..+10!的和
public class test3 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++){
sum += f(i);
}
System.out.println(sum);
}
public static int f(int n){
int sum = 1;
if (n==1){
return sum;
}else {
sum = n*f(n-1);
}
return sum;
}
这个我写错了,只算出了十的阶乘,没有循环相加,我自己的失误,最近刚好复习了递归,就想用一下。
思想:用递归让方法调用自己,每次算除一个数的阶乘,然后在主方法里面循环把每次的结果相加。
方式二:循环
//求1!+2!+..+10!的和
public class test3 {
public static void main(String[] args) {
System.out.println(Factorial_Sum(10));
}
public static int Factorial_Sum(int a){
int sum = 0;
int r = 1;
for (int i = 1; i <= a; i++){
r = 1;
for (int j = 1; j <= i; j++){
r = r * j;
}
sum = r + sum;
}
return sum;
}
}
用循环还是很简单的。
三、应用实践题
我一题也不会,是真的不会,题目给大家看看。
1、编写ModbusTcp主站、ModbusTCP从站的通讯程序。
2、编写WebService通讯接口程序。