上 机 试 题
1 基础题
1.1 Porject: FileList
给定一个文件路径,打印以下内容:
如果路径指向一个文件夹则打印该文件夹下所有的子文件夹和文件(包括子文件夹下的文件夹和文件)
如果路径指向一个文件则打印该文件名
如果路径指向不存在的文件则打印:”(NO FILE)”
1.2 Project: SortObj
有一个类:
class MyClass
{
int iv;
String str;
}列表:List<MyClass> myList存放该类的若干个实例,对myList进行以下排序:
按照MyClass的iv属性从小到大排序
按照MyClass的iv和str属性从大到小排序(先检查iv,再检查str)
1.3 Project: Invoker
MyClass中有4个方法:func1()/func2()/func3()/func4,有多个线程要同时访问这4个方法,要求如下:
func1()和func2()不能同时执行
func3()和func4()不能同时执行
func1()/func2()其中的一个与func3()/func4()其中的一个能同时执行
1.4 Project: Pool
水池容积为1000立方米,开始时水池里没有水要进行注水,当注到900立方米时停止注水,通知其他人来取水;当水取到剩下100立方米时停止取水,通知注水的人来注水:
不断重复上述注水和取水动作
注水和取水动作在不同的线程中
2 设计题
2.1 Project: Check
每家厂商都提供一种茶壶和一种茶杯送去检测,要求:
检测的操作可以用System.out.println(...)模拟
厂商有好多家,并且数量不固定
无论增加多少个厂商,程序的主体代码都不用修改
目前可以只实现对两家厂商的茶壶和水杯进行检测
2.2 Project: Draw
在屏幕上画图形,如:圆、正方形、三角型等。要求:
画图形的操作可以用System.out.println(...)模拟
图形有圆、正方形、三角型、五边形,六边形等无穷多种
无论要画甚么图形,程序的主体代码都不用修改
目前可以只实现画圆、正方形、三角型
2.3 Project: DrawPlus
在上一题基础上,画图形的操作有先后顺序。要求:
可以按照不同的顺序画图
无论画图的顺序如何变化,程序的主体代码都不用修改
目前可以只实现先画圆再画正方形,最后画三角形
3 Web开发
3.1 Project: Sum
一个网站没有登录功能(没有登录页面),请实现对该网站在线人数统计:
把当前在线人数信息动态打印到标准输出即可
1 基础题
1.1 Porject: FileList
给定一个文件路径,打印以下内容:
如果路径指向一个文件夹则打印该文件夹下所有的子文件夹和文件(包括子文件夹下的文件夹和文件)
如果路径指向一个文件则打印该文件名
如果路径指向不存在的文件则打印:”(NO FILE)”
1.2 Project: SortObj
有一个类:
class MyClass
{
int iv;
String str;
}列表:List<MyClass> myList存放该类的若干个实例,对myList进行以下排序:
按照MyClass的iv属性从小到大排序
按照MyClass的iv和str属性从大到小排序(先检查iv,再检查str)
1.3 Project: Invoker
MyClass中有4个方法:func1()/func2()/func3()/func4,有多个线程要同时访问这4个方法,要求如下:
func1()和func2()不能同时执行
func3()和func4()不能同时执行
func1()/func2()其中的一个与func3()/func4()其中的一个能同时执行
1.4 Project: Pool
水池容积为1000立方米,开始时水池里没有水要进行注水,当注到900立方米时停止注水,通知其他人来取水;当水取到剩下100立方米时停止取水,通知注水的人来注水:
不断重复上述注水和取水动作
注水和取水动作在不同的线程中
2 设计题
2.1 Project: Check
每家厂商都提供一种茶壶和一种茶杯送去检测,要求:
检测的操作可以用System.out.println(...)模拟
厂商有好多家,并且数量不固定
无论增加多少个厂商,程序的主体代码都不用修改
目前可以只实现对两家厂商的茶壶和水杯进行检测
2.2 Project: Draw
在屏幕上画图形,如:圆、正方形、三角型等。要求:
画图形的操作可以用System.out.println(...)模拟
图形有圆、正方形、三角型、五边形,六边形等无穷多种
无论要画甚么图形,程序的主体代码都不用修改
目前可以只实现画圆、正方形、三角型
2.3 Project: DrawPlus
在上一题基础上,画图形的操作有先后顺序。要求:
可以按照不同的顺序画图
无论画图的顺序如何变化,程序的主体代码都不用修改
目前可以只实现先画圆再画正方形,最后画三角形
3 Web开发
3.1 Project: Sum
一个网站没有登录功能(没有登录页面),请实现对该网站在线人数统计:
把当前在线人数信息动态打印到标准输出即可
http://blog.csdn.net/justinavril/archive/2008/09/20/2955991.aspx
2: Check my blog:
http://blog.csdn.net/justinavril/archive/2008/09/13/2924557.aspx
public class Sample05 {
private static int fCount = 0;
private static int dCount = 0;
private static void dirs(File f) {
if (f.exists()) {
if (f.isDirectory()) {
File[] fs = f.listFiles();
for (int i = 0; i < fs.length; i++) {
dirs(fs[i]);
}
dCount++;
} else if (f.isFile()){
fCount++;
}
System.out.println(f.getPath());
}
}
public static void dirs(String str) {
File f = new File(str);
if(fCount==0){
System.out.println("NO FILE");
}
if (f.exists()) {
if (f.isDirectory()) {
File[] fs = f.listFiles();
for (int i = 0; i < fs.length; i++) {
dirs(fs[i]);
}
System.out.println("包含:" + fCount + "个文件," + dCount + "个文件夹");
fCount = 0;
dCount = 0;
} else {
System.out.println("这是一个文件");
}
}
}
public static void main(String[] args) {
Sample05.dirs("d:/temp");
}}
private Object o1 = null;
private Object o2 = null;
public Sample08(Object o1, Object o2) {
this.o1 = o1;
this.o2 = o2;
}
public void run() {
synchronized (o1) {
System.out.println(Thread.currentThread().getName() + "锁住对象" + o1);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (o2) {
System.out.println(Thread.currentThread().getName() + "锁住对象" + o2);
}
System.out.println(Thread.currentThread().getName() + "释放对象" + o2);
}
System.out.println(Thread.currentThread().getName() + "释放对象" + o1);
}
public static void main(String[] args) {
String str1 = "str1";
String str2 = "str2";
String str3 = "str3";
Sample08 t1 = new Sample08(str1, str2);
Sample08 t2 = new Sample08(str2, str3);
Sample08 t3 = new Sample08(str3, str1);
t1.start();
t2.start();
t3.start();
}
}
import java.util.List;
import java.util.Comparator;
import java.util.Collections;
public class ListSort {
public static void main(String[] args) {
List myList=new ArrayList<MyClass>();
MyClass a=new MyClass(22,"23525");
MyClass b=new MyClass(6,"fsaffa");
MyClass c=new MyClass(2,"sfsagsghh");
MyClass d=new MyClass(2,"aaaaagsghh");
myList.add(a);
myList.add(b);
myList.add(c);
myList.add(d);
CompareIdName compId=new CompareIdName();
Collections.sort(myList, compId);
for(int i=0;i<4;i++)
{
MyClass t=(MyClass)myList.get(i);
System.out.println(t.name);
} }}
class MyClass{
public int id;
public String name;
public MyClass(int id, String name) {
this.id = id;
this.name = name;
}
}
class CompareId implements Comparator {
public int compare(Object aa, Object bb) {
MyClass a=(MyClass)aa;
MyClass b=(MyClass)bb;
if(a.id>b.id){
return 1;
}else if(a.id==b.id){
return 0;
}else{
return -1;
}
}
}
class CompareIdName implements Comparator {
public int compare(Object aa, Object bb) {
MyClass a=(MyClass)aa;
MyClass b=(MyClass)bb;
if(a.id>b.id){
return 1;
}else if(a.id==b.id){
if(a.name.compareToIgnoreCase(b.name)>0){
return 1;
}else if(a.name.compareToIgnoreCase(b.name)<0){
return -1;
}
return 0;
}else{
return -1;
}
}
}
public int CompareTo(object o) {
MyClass mc = (MyClass)o;
int ivCmp = iv.compareTo(mc.iv); return (ivCmp != 0 ? ivCmp : str.compareTo(mc.str));
}
}
----------------------------------------------------------------
import java.io.File;
public class FileList {
private String pathName;
private boolean flag=true;
FileList(){
}
public void findFile(File file){
File[] file3=file.listFiles();
for(int i=0;i<file3.length;i++){
if(file3[i].isFile()){
System.out.println(file3[i].getName());
}else {
while(true){
System.out.println(file3[i].getName());
if((file3[i].listFiles()).length==0){
break;
}
if((file3[i].listFiles()).length==1){
File[] innerFile=file3[i].listFiles();
file3[i]=innerFile[0];
if(file3[i].isFile()){
System.out.println(file3[i].getName());
break;
}
}
if((file3[i].listFiles()).length>1){
findFile(file3[i]);
break;
}
}
}
}
}
public static void main(String[] args){
new FileList().findFile(new File("c:\\java"));
}}