您的位置:首页 > 编程语言 > Java开发

Java基础题测试大全,传智权威测试题

2014-03-31 09:47 162 查看
Java基础测试题大全,如果能做出来完,就说明你的Java基础学的相当的不错了!
/*★★★★★
====第一题====================================
简述ArrayList、Vector、LinkedList之间的区别?
Collection和Map之间的区别?HashSet和TreeSet之间的区别?
Collection和Collections的区别?
HashTable和HashMap之间的区别?
然后编程向HashSet中保存自定义的类(Student),并取出打印。
*/

/*★
====第二题====================================
自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,
能够在读取的每行前面都加上有行号和冒号。
提示:(MyBufferedReader,MyLineNumberReader)
*/

/*★★★
====第三题====================================
拷贝一个带内容的文件夹。
1.copyDir方法,需要两个参数,被拷贝的文件夹source,想拷到哪去的文件夹target
2.在target下创建一个同名文件夹。
3.遍历source下面的所有文件,存在两种情况
4.如果是文件夹,递归,将当前遍历的文件夹作为source,将target + source.getName作为新的target
5.如果是标准文件。调用自定义的copyFile方法,用文件流包装一下来进行拷贝
*/

/*★★★★
====第四题====================================
编写一个程序,当用户输入一个目录时,
该程序能列出该目录下的所有子目录和文件。将目录和文件的绝对路径输出打印
思路:
1,获取用户输入的目录,封装成文件对象。
a.获取输入可以有两种形式,一种通过System.in。另一种通过给主函数传值的形式。
b.把输入的字符串封装成File对象。对其进行判断。该文件夹是否存在。
2,通过递归的形式列出目录所有文件夹和文件
a.定义一个功能方法,遍历该文件夹对象,如果遍历到的File对象是文件夹就再次调用该功能方法(递归);
*/

/*★★★★★
====第五题====================================
有五个学生,每个学生有3门课的成绩,定义一种比较直观的文本文件格式,
输入学生姓名和成绩,从键盘输入以上数据(包括姓名,三门课成绩),
按总分数从高到低的顺序将学生信息存放在磁盘文件"stu.txt"中。
思路:
1,获取键盘录入;
a,System.in,为了更好读取键盘录入信息。一行一行的读会更方便,那么将其包装。
b,BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
2,将获取的键盘录入封装成学生对象(首先要对学生类进行描述。)
a,读到一行数据,通过该数据的规则(“,”)对数据进行切割。变成字符串数组。并把数组中的学生信息,作为参数,
封装成学生对象。
3,将封装好的学生对象存入集合中
(why?因为要对这些对象中的信息进行操作,用哪个集合呢?既然要排序。而且是存入单个对象。TreeSet,定义比较器。)
a.建立TreeSet集合,定一个比较器对象传给集合的构造函数。同过集合的add方法,将学生对象存入。
4,对已有元素的TreeSet集合,进行迭代。将其中的学生信息通过流写入到一个文件中。
a.通过Iterator迭代器,迭代该集合。取出学生对象中要用的信息。作为字符串,用字符流对象(FileWriter)
将其写入到一个文件中。

*/

/*★★★★★
====第六题====================================
取出D:盘下全部的.java文件的文件路径保存在java.txt文件中

思路:
1.通过递归的方式遍历d:盘.判断文件的扩展名是否是以.java结尾.
2,把符合条件的File对象都存入到集合中.
3,遍历该集合.通过输出流把文件对象的getAbsolutePath写入到java.txt文件中.
(不存入集合直接写是可以的,但最好临时存储一下.这样就可以对所有的.java文件进行更多的其他操作.)
*/

/*★★★
====第七题====================================
计算字符串中子串出现的位置,
例:子串"kk"在字符串abkkcdkkabkkefkk中出现的次数
思路:
1,既然是操作字符串就要先想到String类中是否提供相关方法.
2,可以先通过indexOf索引子串第一次出现的位置.第二次在索引的时候,就应该从第一次出现的位置+子串的长度后在从剩下的字符串中查找还有没有该子串.那么需要定义一个变量将剩下的字符串记录一下.
3,该过程既然重复.就需要循环来做.循环条件即为:当indexOf索引返回-1时.停止循环.
*/

/*★★★★
====第八题====================================
取出一个文本文件中所有的email地址,并存放到集合中。

思路:
1,通过字符流(FileReader)来读取一个文件。比较高效的方式是一行一行读。
就通过BufferedReader的readLine方法。
2,通过正则规则来对一行文本进行规则的取出。
a,先把规则封装成对象。Pattern.compile(reg)返回一个正则对象。
让该对象与该行字符串建立联系。调用该对象的一个matcher方法。将所要匹配的字符串传给matcher方法。
该方法返回一个匹配器对象。该对象可以通过find()找到所匹配的内容,在通过group方法取出该内容。
3,将匹配的内容存入集合(建立用hashset,因为可以保证email的唯一性。)。
*/

/*★★
====第九题====================================
通过键盘录入的方式,进行猜数字的游戏。
要求:输入一个1~100之间的数字,
与预先给定数字不同,要给出大或者小的提示。

思路:
1,先产生一个随机数.
2,通过System.in读取一行数据内容.并转换成int的值.
3.建立

*/

/*★
====第十题====================================
假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:
姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另为还有一个
奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方
法进行属性访问。

思路:
员工分普通员工和经理。
1,首先将两个共性的东西向上抽取。(姓名,age,id,工资。有一个工作方法。)
因为普通和经理工作内容不同。需要这两个子类自己去实现。那么该方法是抽象的。(好处,普通和经理只要是员工就必须工作,强制性。)
2,在定义经理类,除了拿到父类中共性的东西,他还有特性的东西。(奖金)
*/

/*★★★
====第十一题==================================
字符串由多个数字和空格组成“20 8 0 -1 32 14”,
将字符串中的数字按数值大小升序排列,获取排序后的字符串。

思路:
1,将给定字符串按照规则(空格)进行切割变成字符串数组.
2,将字符串数组中的元素转成int型的值存入int数组中.
3,对数组进行排序.
4,将数组在变成字符串.
a.整型数组变成字符串可以同临时定义一个容器(StringBuffer),
对元素进行存储.
b.在将StringBuffer.toString变成字符串.
*/

/*★★★★
====第十二题==================================
写一个程序,允许用户依次输入多个姓名和住址,
并能将用户的输入保存到文件中。
用户输入 ”quit” 表示输入完毕,程序退出。
*/

/*★★
====第十三题==================================
找出一个整数数组{2,4,1,4,3,2,4,3,2}出现次数最多的数。
//找字符串中出现过多少个字符,统计每个字符出现的次数,并且把字符按照次数升序排列。
*/

/*★★★★
====第十四题==================================
给定两个字符串,比较两个字符串中最大相同的子串.
*/

/*★★★
====第十五题==================================
编写一个程序,记录该程序运行次数。运行满足30次,就提示用户“软件试用期限已到”;
*/

/*★★★
====第十六题==================================
已知文件a.txt文件中的内容为“bcdeadferwplkou”,
请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
即b.txt中的文件内容应为“abcd…………..”这样的顺序。
思路:
1,将该文件读取将数据取出,变成字符串
a.因为是文本文件。可以直接用字符流(FileReader)
b.为了提高效率,并方便获取数据。对其进行包装(BufferedReader)使用readLine方法一行一行读。
2,把字符串变成字符数组,对该数组进行排序。
a.通过字符创的toCharArray方法,将字符串变成字符数组。
b.自定义排序功能函数(冒泡,选择都可以)对字符数组进行排序。
3,把排序后的数组变成字符串,并通过流将字符串写入b.txt文件中。
a.通过String类的构造函数将字符数组变成字符串。
b.通过FileWriter把字符串写入到b.txt文件中。
*/

/*★★★
====第十七题==================================
客户端向服务端上传图片。将客户端封装成线程。
*/

/*★★★★
====第十八题==================================
在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。
但对应的字节数不同,一个汉字占两个字节。
定义一个方法,按照最大的字节数来取子串。
如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,
那么半个就要舍弃。如果去四个字节就是“ab你”,取五个字节还是“ab你”.

思路:
首先要知道汉字是由连个字节所组成。而且这两个都是负数。
1,先将该字符串变成字节数组(getBytes)
2,通过要截取的长度位。来判断该位置是正数还是负数。
只要为负数。就往回判断前一个字节是正还是负。以此类推。
定义一个计数器,记录负数出现的次数。如果该数为偶数。那么就将要去长度的字节数。转成字符串(说明没有半个汉字存在。)
如果是奇数。就将最后一个字节舍弃。在转成字符串。
*/

/*★★
====第十九题==================================
利用LinkedList去实现一个队列的效果.
自定该功能类.(队列的特点是元素先进先出,去查看LinkList中的方法)
*/
class DuiLie<T>
{
private LinkedList<T> ll;
DuiLie()
{
ll = new LinkedList<T>();
}
public void myAdd(T t)
{
ll.addFirst(t);
}
public T myGet()
{
return ll.removeLast();
}
public boolean isNull()
{
return ll.isEmpty();
}
}

class TD
{
public static void main(String[] args)
{
DuiLie dl = new DuiLie();
dl.myAdd("hahah");
dl.myAdd("kkkk");
dl.myAdd("qqq");
while(dl.isNull())
{
System.out.println(dl.myGet());
}
}
}
/*★★★
====第二十题==================================

将一个图片切割成多个文件。在将多个文件合并成该图片

1,通过字节流读取该图片。定义一个缓冲区数组该数组的大小 是要生成的切割后的文件大小。
通过输出流将该数组中的数据,写到一个文件中(文件名要有规律。1.haha 2.haha...)
(可以通过一个自定义配置文件保存原文件的基本属性信息。如:源文件的名字 已经切割出来的碎片文件的个数。方便合并。)

2,合并,首先要知道碎片文件的目录,列出该目录当前的所有.haha文件。(遍历时可以通过配置文件中的信息确定循环的次数。)
并按照顺序把每一个碎片文件用流读取。(一个文件对应一个流。)
将这些流存入集合。(why?因为要通过序列流进行合并。(SequenceInputStream)该流会接受一个Enumeration)

3,读取序列流中的数据,并把该数据都写入到一个(图片)文件中。
*/

/*★★
====第二十一题==================================
编写一个方法。去除Vector集合中的重复元素。
思路:
1,自定义一个Vector集合。对原有的Vector集合进行迭代。
把迭代出来的元素存入到新集合中。在存的时候进行判断新的集合中是否有该元素。‘
如果有,就不要进行存储。
迭代完成 。新的Vector集合中就不存在重复元素了。
*/

/*★★★★★
====第二十二题==================================
取出一个字符串中字母出现的次数。如:"abcdekka27qoq" a(2)b(1)k(2)...
思路:
1,先将字符串转换成字符数组。
2,定义一个计数器,记录每一个字母出现的次数。
3,将字母作为key。该字母出现的次数作为value。将两者存入map集合中。
(为什么要用map集合呢?因为字母有很多,数据多了就要想到用容器多存入。方便操作。而每一个字母都有对应的次数。正好有映射关系。而map集合正好符合这个特点。map集合可以同时存入两个对象。key会保证唯一性。只要不断改变该key对应的值就可以了。)
4,在遍历字符数组进行存储的时候要判断,该字母是否已经存在于map集合。如果已存在。就取出它所对应的次数,并++.在次存入到集合中。
5,遍历该集合就可以得到结果。

(注意,如果只取字母的话,要进行字符'a'-'z'的判断。其他字符比如数字或者符号就没有必要存入map集合了。)
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: