一、简答题
1.简述面向对象的特征有哪些方面?
封装
将类的属性私有化,提供一些公有方法操作属性。
隐藏了具体实现的逻辑,保证数据的安全性,完整性。
继承
创建新的类去继承已有的类。提高代码复用性。
多态
父类引用指向子类对象,接口引用指向具体实现类的对象。
传递参数可以使用父类引用,使方法更加灵活。
2.简述StringBuffer和StringBuilder的区别?(10分)
都是一个可变长的字符容器。(append)
StringBuffer 线程安全的。jdk 1.0提出。 慢
StringBuilder 线程不安全。jdk 1.5提出。 快
3. 在main方法中的执行代码如下:
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
请写出以上代码的输出的结果,分析输出结果的原因。(10分)
true
1.== 判断的是两个对象的内存地址是否一样。
2.s1和s2都指向常量池中的“abc”对象,内存地址一致,s1==s2 返回true.
4.多线程有几种实现方法?同步有几种实现方法? (10分)
实现方式:
1.继承Thread ,重写run()
new Thread(){
public void run(){
具体逻辑
}
}
2.实现Runnable接口,实现run()
new Thread(
new Runnable(){
public void run(){
具体逻辑
}
}
)
同步实现方法:
1.synchronized:同步代码块和同步方法
2.使用Object 的 wait()和notify() 实现。
5.列出Java你所知道的集合体系,并简述各自的特点.(10分)
Collection :集合
---| List : 存放的元素有顺序,可以重复
------| ArrayList: 使用数组实现,线程不安全 查询快,插入慢
------| Vector: 线程安全,其他和ArrayList一致,相对较慢。
------| LinkedList:使用链表实现,线程不安全 查询慢,插入快
---| Set : 无序,元素不能重复
------| HashSet: 使用hash算法实现,元素不能重复,无序
------| TreeSet:使用红黑树实现,元素存储时会被排序。
Map :映射,存储数据以键值对的形式存储。
---| HashMap : 使用hash算法实现,无序,key不能重复,key可以是null,线程不安全。
---| HashTable : key value都不能为null.线程安全的。
---| TreeMap : 存入的数据会根据key被排序。
6.集合与数组的区别是什么呢?(10分)
集合和数组都是可以用来存放元素的容器。
1.集合中可以存放不同类型的元素(可以设置泛型),数组只能存放一种类型的元素。
2.集合存放的元素数量可变,数组元素数量固定。
7.Collection和Collections的区别?(10分)
Collection是集合的最上层接口。在Collection接口中定义了集合应该具有的一些方法。
Collections是一个操作集合的帮助类,提供了一些操作集合的常用方法,比如sort()
8.HashSet是如何保证元素唯一性的。(10分)
HashSet是使用hash算法实现的。
向HashSet存储元素时,HashSet会根据元素的hashCode判断是否已经存在。
9.简述ArrayList与Vector的区别,ArrayList与LinkedList的区别(10分)
ArrayList:线程不安全
Vertor:线程安全
ArrayList:数组实现 查询快,插入慢
LinkedList: 链表实现 查询慢,插入快
二、编程题
1.使用TCP,模拟一下QQ的信息交流功能,客户端,服务端(10分)
服务端:
ServerSocket server = new ServerSocket(端口);
Socket socket = server.accept();
socket.getInputStream();
socket.getOutputStream();
客户端:
Socket socket = new Socket(ip,端口);
socket.getInputStream();
socket.getOutputStream();
2.编写一个方法实现拷贝任意文件或文件夹的功能。(10分)
递归
copy(File source,File targetDir){
if(source.isFile()){
//拷贝
copyFile(source,targetDir);
}else{
File[] fileList = source.listFiles();
for(File file : fileList){
copyFile(file,new File(targetDir, source.getName()));
}
}
}
copyFile(File source,File targetDir){
File target = new File(targetDir, source.getName);
BufferedInputStream br =
new BufferedInputStream(new FileInputStream(source));
...
}
3.统计一个字符串中每个字符出现的次数,并按自然顺序输出。
String str = "afasd";
public Map count(String str){
Map map = new TreeMap();
for(int i = 0; i < str.length(); i++){
char c = str.charAt(i);
int count = 1;
if(map.contains(c)){
count = map.get(c) + 1;
}
map.put(c, count);
}
return map;
}
java基础知识测试
原创
©著作权归作者所有:来自51CTO博客作者hoho_12的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:表单标签
下一篇:Java Map练习与实际应用
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python基础知识-5
介绍python的各种应用实例
python