欢迎来到天天文库
浏览记录
ID:6075405
大小:145.00 KB
页数:22页
时间:2018-01-02
《java笔试之编程题库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java笔试题库之编程题库总共30道编程题,掌握了就可以应付中级以内Java面试题1.编程实现:二分搜索算法解答:publicclassSearchTest{/**被搜索数据的大小*/privatestaticfinalintsize=5000000;publicstaticvoidmain(String[]args){long[]data=newlong[size];//添加测试数据for(intk=0;k2、target);}/***二分搜索算法实现**@paramdata*数据集合*@paramtarget*搜索的数据*@return返回找到的数据的位置,返回-1表示没有找到。*/publicstaticintbinaryFind(long[]data,longtarget){intstart=0;intend=data.length–1;while(start<=end){intmiddleIndex=(start+end)/2;if(target==data[middleIndex]){returnmiddleIndex;}if(target>=data[3、middleIndex]){start=middleIndex+1;}else{end=middleIndex–1;}}return-1;}/***二分搜索测试**@paramdata*数据集合*@paramtarget*搜索的数据*/publicstaticvoidbinaryFindTest(long[]data,longtarget){longstart=System.nanoTime();intresult=binaryFind(data,target);longend=System.nanoTime();System.out.println(“bi4、narysearchposition:”+result);System.out.println(“binarysearchtime:”+(end–start));}}2.编程实现:线程A向队列Q中不停写入数据,线程B从队列Q中不停读取数据(只要Q中有数据)。解答:接口中有两个一个是向队列中写push方法一个是从队列中读。publicinterfaceStackInterface{publicvoidpush(intn);publicint[]pop();}上边接口的实现类。publicclassSafeStackimplementsStackInterfac5、e{privateinttop=0;privateint[]values=newint[10];privatebooleandataAvailable=false;publicvoidpush(intn){synchronized(this){while(dataAvailable)//1{try{wait();}catch(InterruptedExceptione){//忽略//2}}values[top]=n;System.out.println(“压入数字”+n+“步骤1完成”);top++;dataAvailable=true;notifyAll(6、);System.out.println(“压入数字完成”);}}publicint[]pop(){synchronized(this){while(!dataAvailable)//3{try{wait();}catch(InterruptedExceptione){//忽略//4}}System.out.print(“弹出”);top–;int[]test={values[top],top};dataAvailable=false;//唤醒正在等待压入数据的线程notifyAll();returntest;}}}读线程publicclassPopThre7、adimplementsRunnable{privateStackInterfaces;publicPopThread(StackInterfaces){this.s=s;}publicvoidrun(){while(true){System.out.println(“->”+s.pop()[0]+“<-”);try{Thread.sleep(100);}catch(InterruptedExceptione){}}}}写线程publicclassPushThreadimplementsRunnable{privateStackInterfaces;publ8、icPushThread(StackInterfac
2、target);}/***二分搜索算法实现**@paramdata*数据集合*@paramtarget*搜索的数据*@return返回找到的数据的位置,返回-1表示没有找到。*/publicstaticintbinaryFind(long[]data,longtarget){intstart=0;intend=data.length–1;while(start<=end){intmiddleIndex=(start+end)/2;if(target==data[middleIndex]){returnmiddleIndex;}if(target>=data[
3、middleIndex]){start=middleIndex+1;}else{end=middleIndex–1;}}return-1;}/***二分搜索测试**@paramdata*数据集合*@paramtarget*搜索的数据*/publicstaticvoidbinaryFindTest(long[]data,longtarget){longstart=System.nanoTime();intresult=binaryFind(data,target);longend=System.nanoTime();System.out.println(“bi
4、narysearchposition:”+result);System.out.println(“binarysearchtime:”+(end–start));}}2.编程实现:线程A向队列Q中不停写入数据,线程B从队列Q中不停读取数据(只要Q中有数据)。解答:接口中有两个一个是向队列中写push方法一个是从队列中读。publicinterfaceStackInterface{publicvoidpush(intn);publicint[]pop();}上边接口的实现类。publicclassSafeStackimplementsStackInterfac
5、e{privateinttop=0;privateint[]values=newint[10];privatebooleandataAvailable=false;publicvoidpush(intn){synchronized(this){while(dataAvailable)//1{try{wait();}catch(InterruptedExceptione){//忽略//2}}values[top]=n;System.out.println(“压入数字”+n+“步骤1完成”);top++;dataAvailable=true;notifyAll(
6、);System.out.println(“压入数字完成”);}}publicint[]pop(){synchronized(this){while(!dataAvailable)//3{try{wait();}catch(InterruptedExceptione){//忽略//4}}System.out.print(“弹出”);top–;int[]test={values[top],top};dataAvailable=false;//唤醒正在等待压入数据的线程notifyAll();returntest;}}}读线程publicclassPopThre
7、adimplementsRunnable{privateStackInterfaces;publicPopThread(StackInterfaces){this.s=s;}publicvoidrun(){while(true){System.out.println(“->”+s.pop()[0]+“<-”);try{Thread.sleep(100);}catch(InterruptedExceptione){}}}}写线程publicclassPushThreadimplementsRunnable{privateStackInterfaces;publ
8、icPushThread(StackInterfac
此文档下载收益归作者所有