zoukankan      html  css  js  c++  java
  • 数码视讯宣讲会现场笔试题

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

    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_Lz
    12  * @time 2016年9月29日
    13  */
    14 public class AboutDate {
    15     /**
    16      * 以传入日期起,获取i个月后的第一天
    17      * 
    18      * @param strDate
    19      * @param i
    20      * @return
    21      * @throws ParseException
    22      */
    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 strDate
    38      * @param i
    39      * @return
    40      * @throws ParseException
    41      */
    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月份加1
    48         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_Lz
    15  * @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 str
    26      * @param fileList
    27      * @return
    28      */
    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());// 是文件,将绝对路径名放入list
    39             }
    40         }
    41         return fileList;
    42     }
    43 
    44     /**
    45      * 统计各类文件的总行数
    46      * 
    47      * @param fileList
    48      */
    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 + "
    " + "jsp文件总行数:" + count4Jsp + "
    " + "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 }
  • 相关阅读:
    如何用消息系统避免分布式事务?
    jvm调休,监控
    ClassLoader原理
    JVM结构、GC工作机制详解
    单链表倒置
    hashSet
    HashMap
    hashcode
    深入理解HTTP协议、HTTP协议原理分析
    HTTP协议(详解一)
  • 原文地址:https://www.cnblogs.com/Laughing-Lz/p/5920940.html
Copyright © 2011-2022 走看看