首页 > 代码库 > 数码视讯宣讲会现场笔试题

数码视讯宣讲会现场笔试题

数码视讯宣讲会现场笔试题:

1、list长度为100,用两个线程交换取出5个数

  1 package ren.laughing.test.shumashixun;  2   3 import java.util.ArrayList;  4 import java.util.List;  5   6 /**  7  * 两个线程,交换取出5个元素,直到list为空  8  *   9  * @author Laughing_Lz 10  * @time 2016年9月29日 11  */ 12 class SynList { 13     public List list = new ArrayList(); 14  15     public synchronized void get5Counts1() { 16         if (list.size() == 0) { 17             System.out.println("list已为空,无法取出!"); 18         } else { 19             System.out.println("执行线程1"); 20             for (int i = 0; i < 5; i++) { 21                 System.out.println(list.get(0)); 22                 list.remove(0); 23             } 24             System.out.println("已取出5个"); 25             try { 26                 wait();// wait写在前面 27                 if (list.size() == 0) { 28                     System.out.println("list已为空,无法取出!"); 29                 } 30             } catch (InterruptedException e) { 31                 // TODO Auto-generated catch block 32                 e.printStackTrace(); 33             } 34             notify(); 35         } 36     } 37  38     public synchronized void get5Counts2() { 39         if (list.size() == 0) { 40             System.out.println("list已为空,无法取出!"); 41         } else { 42             System.out.println("执行线程2"); 43             for (int i = 0; i < 5; i++) { 44                 System.out.println(list.get(0)); 45                 list.remove(0); 46             } 47             System.out.println("已取出5个"); 48             notify();// notify写在前面 49             try { 50                 wait(); 51                 if (list.size() == 0) { 52                     System.out.println("list已为空,无法取出!"); 53                 } 54             } catch (InterruptedException e) { 55                 // TODO Auto-generated catch block 56                 e.printStackTrace(); 57             } 58         } 59     } 60  61     public void set100Counts() { 62         for (int i = 0; i < 100; i++) { 63             list.add(i); 64         } 65     } 66 } 67  68 class SynQueue1 implements Runnable { 69     private SynList synList; 70  71     public SynQueue1(SynList synList) { 72         super(); 73         this.synList = synList; 74     } 75  76     @Override 77     public void run() { 78         while (synList.list.size() >= 5) { 79             synList.get5Counts1(); 80         } 81     } 82 } 83  84 class SynQueue2 implements Runnable { 85     private SynList synList; 86  87     public SynQueue2(SynList synList) { 88         super(); 89         this.synList = synList; 90     } 91  92     @Override 93     public void run() { 94         while (synList.list.size() >= 5) { 95             synList.get5Counts2(); 96         } 97     } 98 } 99 100 public class SynQueue {101     public static void main(String[] args) {102         SynList synList = new SynList();103         synList.set100Counts();104         new Thread(new SynQueue1(synList)).start();105         new Thread(new SynQueue2(synList)).start();106         ;107     }108 }

2、给定日期,获得当月最后一天和上两个月的第一天

 1 package ren.laughing.test.shumashixun; 2  3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7  8 /** 9  * 关于获取某月份的第一天和最后一天10  * 11  * @author Laughing_Lz12  * @time 2016年9月29日13  */14 public class AboutDate {15     /**16      * 以传入日期起,获取i个月后的第一天17      * 18      * @param strDate19      * @param i20      * @return21      * @throws ParseException22      */23     public String getFirstDayOfMonth(String strDate, int i) throws ParseException {24         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");25         Date date = sdf.parse(strDate);26         Calendar cal = Calendar.getInstance();27         cal.setTime(date);28         cal.add(Calendar.MONTH, i);// 添加i个月份29         cal.set(Calendar.DAY_OF_MONTH, 1);// 设置cal为当前日期的第一天30         String firstDayOfMonth = sdf.format(cal.getTime());31         return firstDayOfMonth;32     }33 34     /**35      * 以传入日期起,获取i个月后的最后一天36      * 37      * @param strDate38      * @param i39      * @return40      * @throws ParseException41      */42     public String getLastDayOfMonth(String strDate, int i) throws ParseException {43         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");44         Date date = sdf.parse(strDate);45         Calendar cal = Calendar.getInstance();46         cal.setTime(date);47         cal.add(Calendar.MONTH, i + 1);// cal月份加148         cal.set(Calendar.DAY_OF_MONTH, 1);// 设置cal为当前月份的第一天49         cal.add(Calendar.DATE, -1);// cal日期加(-1)天50         String lastDayOfMonth = sdf.format(cal.getTime());51         return lastDayOfMonth;52     }53 54     public static void main(String[] args) throws ParseException {55         String strDate = "2016-09-28";56         String result1 = new AboutDate().getFirstDayOfMonth(strDate, 0);57         System.out.println(result1);58         String result2 = new AboutDate().getLastDayOfMonth(strDate, -2);59         System.out.println(result2);60     }61 }

3、统计某文件夹下包含的jsp,xml,java文件总行数

 1 package ren.laughing.test.shumashixun; 2  3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileReader; 7 import java.io.IOException; 8 import java.util.ArrayList; 9 import java.util.List;10 11 /**12  * 统计某文件夹下包含的jsp,xml,java文件总行数13  * 14  * @author Laughing_Lz15  * @time 2016年9月29日16  */17 public class AboutFile {18     public static int count4Java = 0;19     public static int count4Xml = 0;20     public static int count4Jsp = 0;21 22     /**23      * 遍历获得某文件夹下所有文件24      * 25      * @param str26      * @param fileList27      * @return28      */29     public List<String> GetFiles(String str, List<String> fileList) {30         File file = new File(str);31         File[] files = file.listFiles();// 列出所有子文件和路径32         // String[] files = file.list();//列出所有子文件和路径名33         for (int i = 0; i < files.length; i++) {34             if (files[i].isDirectory()) {// 是目录,递归35                 // str = str + "\\" + files[i].getName();//拼接子文件夹路径36                 fileList = GetFiles(files[i].getAbsolutePath(), fileList);// 传入子文件夹绝对路径名,继续遍历37             } else {38                 fileList.add(files[i].getAbsolutePath());// 是文件,将绝对路径名放入list39             }40         }41         return fileList;42     }43 44     /**45      * 统计各类文件的总行数46      * 47      * @param fileList48      */49     public void getCounts(List<String> fileList) {50         for (String file : fileList) {51             try {52                 BufferedReader br = new BufferedReader(new FileReader(new File(file)));53                 String oneLine = br.readLine();54                 while (oneLine != null) {55                     if (file.endsWith(".java")) {56                         count4Java++;57                     } else if (file.endsWith(".xml")) {58                         count4Xml++;59                     } else if (file.endsWith(".jsp")) {60                         count4Jsp++;61                     }62                     oneLine = br.readLine();63                 }64             } catch (FileNotFoundException e) {65                 e.printStackTrace();66             } catch (IOException e) {67                 e.printStackTrace();68             }69 70         }71         System.out.println("java文件总行数:" + count4Java + "\n" + "jsp文件总行数:" + count4Jsp + "\n" + "xml文件总行数:" + count4Xml);72     }73 74     public static void main(String[] args) {75         List<String> fileList = new ArrayList<String>();76         String str = "G:\\test";77         AboutFile af = new AboutFile();78         af.GetFiles(str, fileList);79         af.getCounts(fileList);80     }81 }

 

数码视讯宣讲会现场笔试题