Java笔试之编程题库
Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题 1 .编程实现二分搜索算法 解答 public class SearchTest /**被搜索数据的大小7 private static final int size 5000000; public static void mainString[] args long[] data new long[size]; //添加测试数据 for int k 0; k data.length; k data[k] k; //要查找的数据 long target 4970002; binaryFindTestdata, target; } /** *二分搜索算法实现 * * param data *数据集合 * param target *搜索的数据 *return返回找到的数据的位置,返回・1表示没有找到。 */ public static int binaryFindlong[] data, long target int start 0; int end data.length - 1; while start end int middlelndex start end / 2; if target data[middlelndex] return middlelndex; if target data[middlelndex] start middlelndex 1; } else end middlelndex - 1; return -1; /** *二分搜索测试 * * param data *数据集合 * param target *搜索的数据 7 public static void binaryFindTestlong[] data, long target long start System.nanoTime; int result binaryFinddata, target; long end System.nanoTime; System.out.println ubinary search position result; System.out.println binary search time end - start; 2. 编程实现线程A向队列Q中不停写入数据,线程B从队列Q中不停读取数据只要Q 中有数据。 解答 接口中有两个一个是向队列中写push方法一个是从队列中读。 public interface Stackinterface public void pushint n; public int[] pop; 上边接口的实现类。 public class SafeStack implements Stackinterface private int top 0; private int[] values new int[10]; private boolean dataAvailable false; public void pushint n synchronized this while dataAvailable //1 try{ wait; } catch InterruptedException e //忽略//2 values[top] n; System.out.println压入数字” n “步骤 1 完成”; top; dataAvailable true; notifyAII; System.out.println “压入数字完成”; public int[] pop synchronized this while dataAvailable // 3 try{ wait; } catch InterruptedException e //忽略//4 System.out.print弹出”; top -; int[] test values[top], top ; dataAvailable false; //唤醒正在等待压入数据的线程 notify All; return test; } 读线程 public class PopThread implements Runnable private Stackinterface s; public PopThreadStacklnterface s this.s s; public void run whiletrue System.out.println s.pop[0] v-; try Thread.sleep100; catch I interrupted Exception e 写线程 public class PushThread implements Runnable private Stackinterface s; public PushThreadStacklnterface s this.s s; public void run inti 0; whiletrue java.util.Random r new java.util.Random; i r.nextlntIO; s.pushi; try{ Thread.sleep100; catchlnterruptedException e 3. 编程实现使用Socket经行网络通信时,客户端和服务器端流程。 解答 服务器,使用Serversocket监听指定的端口,端口可以随意指定由于1024以下的端口通 常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口,等 待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功, 打开会话;会话完成后,关闭Socketo客户端不需要指定打开的端口,通常临时的、动态 的分配一个1024以上的端口。 4. 编写代码实现同一平面内两圆是否碰撞,其中 第一个圆圆心坐标为x1,y