大数据1801阶段考试题
1、面向对象的思想归根揭底是啥?面向对象三大特征是什么?
面向对象的思想其实就是找合适的对象做合适的事情。三大特征:封装、继承、多态。
2、抽象类和接口有什么区别?
1)接口一般只含有抽象方法【其实可以含有非抽象想法】,抽象类和一般类没什么差别,只是含有抽象方法。
2)接口一般都是公开的public,抽象类中的属性和方法可以是任意访问权限
3)接口中其实没有变量,只有静态常量。
4)接口中没有构造方法,抽象类有构造方法,但是两者都不能被实例化。抽象类中的构造方法是被子类调用的。
5)接口可以继承接口,抽象类可以继承某个类,也可以实现多个接口。
3、打印一个对象,不想打印出来是内存地址,怎么解决?
System.out.println(newStudent());
通过重写toString()方法可以自定义打印的内容【内容一般是属性的值】
4、遇到可能出现异常的代码如何处理?
1)try {
}catch(Exceptione){
}
2) 抛出异常
5、多态的好处是什么?
丰富了参数的类型和返回值的类型
public Animal getAnimal(Dog a){
a.eat();
a.run();
}
public Animal getAnimal(Cat a){
a.eat();
a.run();
}
// 多态
public Animal getAnimal(Animal a){
a.eat();
a.run();
return a;
}
6、final和finally的区别
Final 可以修饰变量、类、方法,表示变量不可变,类无法继承,方法无法重写。
Finally 表示在异常出现时,不管异常如何处理,最后都执行finally代码块,和final没有什么关系。
7、throw和throws的区别
Throws 出现在定义方法的后面,表示该方法可能出现某类异常,调用该方法的地方,必须处理该异常。
Throw 一般后面跟异常类的一个实例化对象,表示代码执行到此处需要报个异常错误,肯定会出现异常的。
throw new NoWheelExcetpion(“轮子掉了”);
8、数组的两种初始化方法,用代码表示
Int[] arr={1,2,3,4,5};
Int[] arr=new int[7];
Arr[0]=1;.....
9、什么是内部类?内部类分为哪几种?
出现在类中的类就叫内部类,根据出现位置不同分为:成员内部类、静态内部类,局部内部类。 含有特殊的:匿名内部类,一般和接口同时出现。
10、什么是值传递,什么是引用传递,数组和集合属于什么传递?
Int a=3;int b=5;
Swap(a,b); //值传递
Student stu =new Studnet();
Swap(stu); // 引用传递
数组和集合属于引用传递。
11、如何将一个int类型转换为String类型,将String类型转换为int类型
Int==>String
String a = 10+””;
String b =String.valueOf(10);
String ==>int
Int c = Integer.parseInt(“10”);
Int d = Integer.valueOf(“10”).intValue();
12、如何获取到String a=”hello world”中hello的值
1) String[] arr =a.split(“ ”);
String s = arr[0];
2) String s= a.subString(0,a.indexOf(“hello”)+”hello”.length+1);
13、如何判断一个字符串中是否包含另一个字符串
1) “hello world”.contains(“hello”);
[2) “hello world”.indexOf(“hello”)!=-1
14、[endif]书写一个邮箱的正则表达式
String regex =”\w+@[a-zA-Z0-9]+\\.[a-z]+”;
15、StringBuffer和StringBuilder的区别
StringBuffer: 线程安全,但是速度慢
StringBuilder: 速度快,不安全
16、定义一个枚举类,并在switch中使用
Public enum Season{
SPRING,SUMMER,AUTUMN,WINTER
}
Season s = Season.SPRING;
Switch(s){
Case SPRING:
Breeak;
.........
}
17、打印当前时间,格式为2018年8月16日20:04:30
Date date=new Date();
SimpleDateFormat format =new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String dateStr = format.format(date);
18、Date和Calendar的相互转换
Calendar c = Calendar.getInstance();
Date d =c.getTime();
Calendar c = Calendar.getInstance();
Date date =new Date();
c.setTime(date);
19、使用两种方法获取【0,100】的随机数。
第一种方法:
double d = Math.random()*101;
Int random = (int)d; 【0-100】
第二种方法:
Int random02 =
(int)Math.ceil(Math.random*100); [0-100]
第三种:
Random random =new Random();
Int random03 = random(101);
20、简述ArrayList和LinkedList之间的区别
1) ArrayList 查找快,增删慢
2) LinkedList 增删快,查找慢
3) ArrayList 底层是Object[],LinkedList底层是链表
21、HashSet的存储原理
HashSet底层使用Hash表存储,其实就是一个HashMap,当存储一个对象时,先调用该对象的hashCode方法,经过一些运算,得出该对象在hash表中的位置,如果该位置没有对象存储,直接添加进去,如果有对象存储,需要调用该对象的equals方法,比较两个对象是否相等【规则自己定】,如果相等表示两个对象是同一个对象,不允许存储,如果不是,也存储在相同的位置【hash表中的一个位置是桶装结构的】。
22、TreeSet如何判断一个数是否为重复的元素。
TreeSet是一个可以排序的Set集合,所以存储的时候对象要么实现Comparable接口,要么生成一个比较器。一个对象要想存储在TreeSet中必须是比较结果不为0才算是不重复的元素,否则统一视为重复元素,不允许添加。
23、Collection接口中的常用方法有哪些?至少写出8个
Add、addAll、remove、removeAll、contails、clear、isEmpty、size、iterator,toArray
24、定义一个Map对象,要求该对象可以根据学号,拿到学生信息,根据学生信息可以知道学生的各个学科的学习成绩。
Map> map=new HashMap>();
// 或者
Map map=newHashMap();
25、请简述HashMap的三种循环方式,简单描述即可。
1、map.keySet() 拿到key的一个结合,通过迭代器进行循环
2、map.values() 拿到value集合,通过迭代器循环
3、map.entrySet() 拿到Entry的一个Set结合,通过迭代器循环。
26、如何将一个list集合转换为数组,如何将数组转换为list集合。
list.toArray()可以将list转换为数组,
Arrays.asList(数组) 可以将数组转换为集合
27、TreeMap和HashMap的区别?
TreeMap相比hashMap是排序的,排序指的是key排序
28、单元测试方法有何特点?@Before是什么意思?
方法必须是public void修饰的,方法没有参数,方法上必须有@Test注解,方法名称一般都是以test开始的。
@Before当这个注解写在某个方法上时,每一个@Test测试方法在执行前都会执行该方法。
29、Instanceof有哪些用法?
三个作用:
1) dog instanceOf Dog 判断一个对象是否为一个类的实例化对象
2) dog instanceOf Animal判断一个对象的类是否为某个类的子类
3) dog instanceOf Huiro 判断一个对象的类是否实现了某个接口
30、final的用法
Final 可以修饰变量、类、方法,表示变量不可变,类无法继承,方法无法重写