A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 cc19930915 于 2016-5-10 16:52 编辑

说几句额外话花:笔试面试我刚刚经历过了,笔试并没有什么,无非就是多练,敲多了自然会。面试,面试的编程题和笔试的编程题都差不多,因为总共也就二十七天的内容,题目再变,无非也就是那些类的操作。至于面试的知识点部分的话,就需要自己多用点心,看看笔记什么的。从最基础到反射随机问。。如果想要进就业班,就做两件事,练,看。多练代码,多看知识点。




讲真,很多人到基础视频的笔记里面copy一些知识点出来,然后到论坛上发一个帖子有意思吗?


赚金币的方式很多,为什么一定要通过这种方式呢?

还有,有些ID一个问题一个帖,连续发七八个帖子。。有些随便资料一查都能够查到的东西还要发个帖子。。

与其这样子水,不如搞点有意义的东西

接下来我会发一些题目,六十题左右

我在报名系统做的十题笔试题我都在六十道里面见过。。所以有需要的看看,也练练

题目资源也是来自本论坛,但是我忘记是哪个帖子了,只有题目没有代码,所以我补充了代码再发出来,一般都是自己敲的,个别题参考的

欢迎你们把一些题发到这个帖子,集齐起来。当然,最好附上实现代码。


27 个回复

倒序浏览
本帖最后由 cc19930915 于 2016-5-10 13:59 编辑

*Test1--取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq",输出格式为:a(2)b(1)k(2)..

如果有更好的解决方式,你可以发出来提供参考

  1. <P>public class Test1 {
  2. public static void main(String[] args) {
  3. //调用输入字符串方法
  4. String str = getString();</P>
  5. <P>//替换所有非字母的字符</P>
  6. <P>str = str.replaceAll("[^a-zA-Z]", "");
  7. //调用获取字符串出现次数方法
  8. HashMap<Character, Integer> hm = getStringNum(str);
  9. //HashMap集合传递给打印字符出现次数方法
  10. printStrNum(hm);
  11. }
  12. /*
  13. * 统计字符串出现的次数
  14. */
  15. public static HashMap<Character, Integer> getStringNum(String str){
  16. //创建一个HashMap集合对象
  17. HashMap<Character, Integer> hm = new HashMap<Character,Integer>();
  18. //将传入的字符串转为字符数组
  19. char[] arr = str.toCharArray();
  20. for(char c : arr){
  21. //判断集合中是否已经包含了这个键
  22. if(hm.containsKey(c)){
  23. //如果不包含,传入键为c的字符,值为通过集合获取到指定键的值再加1
  24. hm.put(c, hm.get(c) + 1);
  25. }else{
  26. //否则直接传入c和1;
  27. hm.put(c, 1);
  28. }
  29. }
  30. return hm;
  31. }
  32. /*
  33. * 输入字符串
  34. */
  35. public static String getString(){
  36. //创建键盘录入对象
  37. Scanner sc = new Scanner(System.in);
  38. //提示输入一个整数
  39. System.out.println("请输入字符串");
  40. //获取键盘录入的字符串
  41. String str = sc.nextLine();
  42. //将字符串返回
  43. return str;
  44. }
  45. /*
  46. * 打印字符串出现的次数
  47. */
  48. public static void printStrNum(HashMap<Character, Integer> hm){
  49. /*//通过HashMap的ketSet方法获取到所有的键,返回一个Set集合
  50. Set<Character> set = hm.keySet();
  51. //遍历Set集合
  52. for (char cha : set) {
  53. //获取到了所有的键的值,通过HashMap对象的get方法获取到所有指定键的值,并通过指定格式输出键值对
  54. System.out.print(cha + "(" + hm.get(cha) + ")" + " ");
  55. }*/
  56. Set<Map.Entry<Character, Integer>> set = hm.entrySet();
  57. for(Map.Entry<Character, Integer> me : set){
  58. System.out.print(me.getKey() + "(" + me.getValue() + ")");
  59. }
  60. /*Iterator<Entry<Character, Integer>> it = set.iterator();
  61. while(it.hasNext()){
  62. Entry<Character, Integer> e = it.next();
  63. System.out.print(e.getKey() + "(" + e.getValue() + ")");
  64. }*/

  65. }
  66. }</P>
复制代码




回复 使用道具 举报
本帖最后由 cc19930915 于 2016-5-10 00:16 编辑

Test2--假如我们在开发一个系统时需要对员工进行建模,【员工】包含 3 个属性:姓名、工号以及工资。【经理】也是员工,除了含有员工的属性外,另为还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。



这个我就不发代码了,没有一点难度,谁要是敲了这个代码,就把代码发出来吧   
回复 使用道具 举报
本帖最后由 cc19930915 于 2016-5-10 00:16 编辑

Test3--ArrayList<Integer> list = new ArrayList<Integer>();在这个泛型为Integer的ArrayList中存放一个String类型的对象。

如果有更好的解决方式,你可以发出来提供参考

  1. public class Test3 {
  2. public static void main(String[] args) throws NoSuchMethodException, Exception {
  3. //创建集合
  4. ArrayList<Integer> list = new ArrayList<>();
  5. //获取字节码对象
  6. Class clazz = list.getClass();
  7. //获取方法对象
  8. Method method = clazz.getMethod("add", Object.class);
  9. //调用带有指定参数的指定对象
  10. method.invoke(list, "字符串");
  11. //输出list集合元素
  12. System.out.println(list);
  13. }

  14. }
复制代码


回复 使用道具 举报
本帖最后由 cc19930915 于 2016-5-10 00:15 编辑

Test4--有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。

如果有更好的解决方式,你可以发出来提供参考。

PS:学生类没有写。

  1. public static void main(String[] args) {
  2. //创建集合对象 传入比较器
  3. TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {
  4. //重写compara方法
  5. @Override
  6. public int compare(Student o2, Student o1) {
  7. int num = o1.getSum() - o2.getSum();
  8. num = num == 0 ? o1.getChinese() - o2.getChinese() : num;
  9. num = num == 0 ? o1.getMath() - o2.getMath() : num;
  10. num = num == 0 ? o1.getEnglish() - o2.getEnglish() : num;
  11. num = num == 0 ? o1.getName().compareTo(o2.getName()) : num;
  12. return num;
  13. }
  14. });
  15. //创建键盘录入对象
  16. Scanner sc = new Scanner(System.in);
  17. //信息提示
  18. System.out.println("|请输入学生信息,输入格式为:name,30,30,30(姓名,三门课成绩)|");
  19. System.out.println("| 注意:输入格式中的,为英文逗号,输入中文逗号无效,仅限添加五个成绩|");
  20. //判断集合元素个数是否不等于5
  21. while(set.size() != 5){
  22. //录入字符串
  23. String line = sc.nextLine();
  24. //调用添加信息方法
  25. addMessage(line,set);
  26. }
  27. //存储学生对象到指定文件
  28. storeFile(set);
  29. }
  30. /*
  31. * 存储集合元素
  32. */
  33. private static void storeFile(TreeSet<Student> set) {
  34. PrintStream ps = null;
  35. //捕获异常
  36. try {
  37. //创建打印流对象
  38. ps = new PrintStream(new FileOutputStream("stu.txt"),true);
  39. //获取迭代器
  40. Iterator<Student> it = set.iterator();
  41. //循环判断
  42. while(it.hasNext()){
  43. //将对象写到文本文件中
  44. ps.println(it.next());
  45. }
  46. } catch (IOException e) {
  47. e.printStackTrace();
  48. }finally{
  49. //释放资源
  50. ps.close();
  51. }
  52. }
  53. /*
  54. * 添加学生信息
  55. */
  56. public static void addMessage(String str,TreeSet<Student> tree){
  57. //声明姓名变量
  58. String name;
  59. //声明语文数学英语三个变量
  60. int chinese,math,english;
  61. //通过逗号分隔字符串
  62. String[] arr = str.split(",");
  63. //判断字符串数组的元素个数是否为4
  64. if(arr.length != 4){
  65. //不是4,那么就告知输入错误
  66. System.out.println("学生信息录入错误,请重新输入");
  67. //结束该方法
  68. return;
  69. //继续判断数组的元素是否有为空的
  70. }else if(arr[0] == "" || arr[1] == "" || arr[2] == "" || arr[3] == ""){
  71. //如果为为空的话,输出信息录入错误
  72. System.out.println("学生信息录入错误,请重新输入");
  73. //结束该方法
  74. return;
  75. }
  76. //捕获异常
  77. try {
  78. //将数组索引1的值赋给chinese
  79. chinese = Integer.parseInt(arr[1]);
  80. //将数组索引2的值赋给math
  81. math = Integer.parseInt(arr[2]);
  82. //将数组索引3的值赋给english
  83. english = Integer.parseInt(arr[3]);
  84. //添加学生对象
  85. tree.add(new Student(arr[0], chinese, math, english));
  86. //添加成功 信息提示
  87. System.out.println("您已成功添加,添加的信息为:" + "name:" + arr[0] + " chinese:" + chinese + " math:" + math + " english:" + english);
  88. } catch (NumberFormatException e) {
  89. //如果捕获到异常就信息提示
  90. System.out.println("学生信息中的成绩请用数字输入");
  91. //除了数字类型转换异常以外,可能还有其他的异常,所以再添加一个Exception
  92. }catch(Exception e){
  93. System.out.println("学生信息录入错误,请重新输入");
  94. }
  95. }
  96. }
复制代码

回复 使用道具 举报
Test5--定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5)。

如果有更好的解决方式,你可以发出来提供参考
  1. <FONT color=black>public class Test05 {
  2. public static void main(String[] args) throws IOException {
  3. //封装字节流对象
  4. FileInputStream fis = new FileInputStream("exercise.txt");
  5. //创建内存输出流
  6. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  7. //定义字节数组
  8. byte[] arr = new byte[5];
  9. //定义整数变量
  10. int len = 0;
  11. //循环判断 读取字节到字节数组
  12. while((len = fis.read(arr)) != -1){
  13. //将字节数组写到内存中
  14. baos.write(arr, 0, len);
  15. }
  16. //释放资源
  17. fis.close();
  18. //打印文本内容
  19. System.out.println(baos.toString());

  20. }

  21. }
  22. </FONT>
复制代码





回复 使用道具 举报
本帖最后由 cc19930915 于 2016-5-10 00:15 编辑

Test6--自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。

ps:设置行号和冒号没写,那个LineNumberReader我基本没用过,就不去模拟它了。

如果有更好的解决方式,你可以发出来提供参考


  1. public class Test6 {

  2. /**
  3. * Test6--自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
  4. * 让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
  5. * @throws IOException
  6. */
  7. public static void main(String[] args) throws IOException {
  8. FileReader fr = new FileReader("Test.java");
  9. MyBufferedReader br = new MyBufferedReader(fr);
  10. String line;
  11. while((line = br.readLine()) != null){
  12. System.out.println(line);
  13. }
  14. }

  15. }
  16. class MyBufferedReader{
  17. private Reader r;
  18. public MyBufferedReader(Reader r){
  19. this.r = r;
  20. }
  21. public String readLine() throws IOException{
  22. StringBuilder sb = new StringBuilder();
  23. int x ;
  24. while((x = r.read()) != -1){
  25. char c = (char)x;
  26. if(c == '\r'){
  27. continue;
  28. }
  29. if(c == '\n'){
  30. return sb.toString();
  31. }else{
  32. sb.append(c);
  33. }

  34. }
  35. if(sb.length() != 0){
  36. return sb.toString();
  37. }
  38. return null;
  39. }
  40. public void close() throws IOException{
  41. r.close();
  42. }
  43. }
复制代码


  1. <P> </P>
复制代码

回复 使用道具 举报
Test7--分析以下程序运行结果,说明原理。(没有分析结果不得分)

ps:自己分析。。。
  1. public class Test7 {
  2. public static void main(String args[]) {
  3. Data data = new Data();
  4. ArrayList<Data> list = new ArrayList<Data>();
  5. for (int i = 100; i < 103; i++) {
  6. data.val = i;
  7. list.add(data);
  8. }
  9. for (Data d : list) {
  10. System.out.println(d.val);
  11. }
  12. }
  13. }

  14. class Data {

  15. int val;

  16. }
复制代码




回复 使用道具 举报
本帖最后由 cc19930915 于 2016-5-10 00:14 编辑

Test8--将字符串中进行反转。abcde --> edcba

如果有更好的解决方式,你可以发出来提供参考

  1. public class Test8 {
  2. public static void main(String[] args) {
  3. String str = "abcde";
  4. char[] arr = str.toCharArray();
  5. for(int x = 0;x < arr.length / 2;x ++){
  6. char temp = arr[x];
  7. arr[x] = arr[arr.length - 1-x];
  8. arr[arr.length - 1 - x] = temp;
  9. }
  10. System.out.println(new String(arr));

  11. }

  12. }
复制代码

回复 使用道具 举报
题库啊 能分享吗 ?  我也想试试自己做下,以前的题太乱了
回复 使用道具 举报
Test9--写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印

如果有更好的解决方式,你可以发出来提供参考

  1. public class Test08 {
  2.                 public static void main(String[] args) {
  3.                         // 根据n创建一个二维数组
  4.                         int n = 4;
  5.                         int[][] arr = new int[n][n];
  6.                         // 数组添加元素
  7.                         addArr(arr);
  8.       
  9.                         // 将数组遍历出来
  10.                         for (int i = 0; i < arr.length; i++) {
  11.                 for (int j = 0; j < arr.length; j++) {
  12.                         System.out.print(arr[i][j] + "\t");
  13.                 }
  14.                 System.out.println("\n");
  15.                         }
  16.                 }

  17.                 /*
  18.                  *  二维数组赋值方法
  19.                  */
  20.                 public static void addArr(int[][] arr) {
  21.                         // 创建数组的两个索引变量
  22.                 int i = 0;
  23.                 int j = 0;
  24.                 // 通过 max 和min控制索引i,j的变化
  25.                 int max = arr.length - 1;
  26.                 int min = 0;
  27.                 // 所需要赋的值
  28.                 int num = 1;

  29.                 while (min <= max) {
  30.                 // 1、i不变j++ 向右
  31.                 while (j < max) {
  32.                         arr[i][j++] = num++;
  33.                 }
  34.                 // 2、j不变i++ 向下
  35.                 while (i < max) {
  36.                         arr[i++][j] = num++;
  37.                 }
  38.                 // 3、i不变j-- 向左
  39.                 while (j > min) {
  40.                         arr[i][j--] = num++;
  41.                 }
  42.                 // 4、j不变i-- 向上
  43.                 while (i > min) {
  44.                         arr[i--][j] = num++;
  45.                 }
  46.                 // 由于可能在n为奇数的时候无法为中心那个数赋值所以要补上这个数的赋值
  47.                 if (min == max) {
  48.                         arr[i][j] = num;
  49.                 }
  50.                 max--;
  51.                 min++;
  52.                 // 循环一圈又开始想有赋值j++
  53.                 j++;
  54.                 // 由于向上的时候最后一次赋值i多减了一次所以每次外循环都要将i补回来
  55.                         i++;
  56.                 }
  57.         }
  58. }
复制代码
回复 使用道具 举报
Test10--28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?

如果有更好的解决方式,你可以发出来提供参考


  1. public class Test9 {
  2.         public static void main(String[] args) {
  3.                 System.out.print(getNum(50));
  4.                
  5.         }
  6.         public static int getNum(int man){
  7.                 //空瓶子
  8.                 int empty_bottle = 0;
  9.                 //瓶数
  10.                 int bottle = 0;
  11.                 //需要的瓶数
  12.                 int need_bottle = 0;
  13.                 //如果人数大于喝掉的瓶数
  14.                 while(man >= bottle){
  15.                         bottle++;
  16.                         empty_bottle++;
  17.                         need_bottle++;
  18.                         if(empty_bottle == 3){
  19.                                 bottle++;
  20.                                 empty_bottle = 1;
  21.                                
  22.                         }
  23.                        
  24.                 }
  25.                 return need_bottle;
  26.         }

  27. }
复制代码
回复 使用道具 举报
本帖最后由 18735346124 于 2016-5-10 00:32 编辑
cc19930915 发表于 2016-5-9 23:12
*Test1--取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq",输出格式为:a(2)b(1)k(2)..

如 ...


import java.util.LinkedHashMap;

public class Test_1 {
          public static void main(String[] args) {
        String s = "abcdekka27qoq";
        LinkedHashMap<Character, Integer> hm = new LinkedHashMap<>(); //定义一个双列集合,键存放字符,值存放出现次数
        char[] arr = s.toCharArray();   //将字符串转换成字符数组
        for (char c : arr) {
        if (!hm.containsKey(c)) {               //如果键中不包含字符,则添加
                  hm.put(c,1);
        }else {                                 //如果包含,则将值中的数加1
               hm.put(c, hm.get(c)+1);
        }
        }
        for (Character ch : hm.keySet()) {         //遍历键的集合,
                Integer it = hm.get(ch);               //得到值
                System.out.print(ch+"("+it+")");       //输出键--值
                }
        }
}
回复 使用道具 举报
Test11--编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。

如果有更好的解决方式,你可以发出来提供参考

  1. public class Test11 {
  2.         public static void main(String[] args) {
  3.                 HashMap<String, Integer> map = new HashMap<String, Integer>();
  4.                 map.put("张三", 13);
  5.                 map.put("李四", 14);
  6.                 /*
  7.                  * 遍历方式1: 键值对
  8.                  */
  9.                 /*Set<Map.Entry<String, Integer>> set = map.entrySet();
  10.                 Iterator<Map.Entry<String, Integer>> it = set.iterator();
  11.                 while(it.hasNext()){
  12.                         Entry<String, Integer> entry = it.next();
  13.                         String key = entry.getKey();
  14.                         int value = entry.getValue();
  15.                         System.out.println(key + "=" + value);
  16.                 }*/
  17.                 /*
  18.                  * 遍历方式2:键找值
  19.                  */
  20.                 Set<String> set = map.keySet();
  21.                 for (String string : set) {
  22.                         System.out.println(string + "=" + map.get(string));
  23.                 }
  24.         }

  25. }
复制代码


回复 使用道具 举报
Test12--方法中的内部类能不能访问方法中的局部变量,为什么?


ps:不知道为什么的自己百度
回复 使用道具 举报
666666大神啊!!!!!顶!!!
回复 使用道具 举报
本帖最后由 cc19930915 于 2016-5-11 14:15 编辑

Test13--定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯

如果有更好的解决方式,你可以发出来提供参考


  1. public class DemoLight {
  2.          public static void main(String[] args) {
  3.                 Light s = Light.RED.next();
  4.                 System.out.println(s);
  5.             }

  6.         }
  7.         enum Light{
  8.             RED{
  9.                 public Light next(){
  10.                     return GRE;
  11.                 }
  12.             },GRE{
  13.                 public Light next(){
  14.                     return YEL;
  15.                 }
  16.             },YEL{
  17.                 public Light next(){
  18.                     return RED;
  19.                 }
  20.             };
  21.             public abstract Light next();
  22.         
  23.         
  24.         }
复制代码
回复 使用道具 举报
Test14--编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法

如果有更好的解决方式,你可以发出来提供参考

  1. public class Test14 {
  2.         public static void main(String[] args) throws NoSuchMethodException, Exception {
  3.                 Class cla = Demo.class;
  4.                 Method method = cla.getMethod("printStr");
  5.                 method.invoke(cla.getConstructor().newInstance());
  6.         }

  7. }
复制代码
  1. public class Demo {
  2.         String str = "你好";
  3.         public void printStr(){
  4.                 System.out.println("你好");
  5.         }
  6. }
复制代码
回复 使用道具 举报
Test15--把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出,
            例如:a:  21 次 b:  15 次 c: 15 次  把:  7 次...


如果有更好的解决方式,你可以发出来提供参考

  1. public class Test15 {
  2.         public static void main(String[] args) throws IOException {
  3.                 TreeMap<String, Integer> map = new TreeMap<>();
  4.                 BufferedReader fr = new BufferedReader(new FileReader("a.txt"));
  5.                 int x = 0;
  6.                 String line;
  7.                 while((line = fr.readLine())!= null){
  8.                         char[] arr = line.toCharArray();
  9.                         for (char d : arr) {
  10.                                 count(map, d + "");
  11.                         }
  12.                        
  13.                 }
  14.                 System.out.println(map);
  15.         }

  16.         private static void count(TreeMap<String, Integer> map, String x) {
  17.                 if(map.containsKey(x)){
  18.                         map.put(x +"", map.get(x) + 1);
  19.                 }else{
  20.                         map.put(x +"", 1);
  21.                 }
  22.         }
  23. }
复制代码
回复 使用道具 举报
Test16--编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

如果有更好的解决方式,你可以发出来提供参考

ps:直接用TreeSet就可以了其实,因为有排序,然后长度不固定。但是为了回顾一下冒泡和选择,所以。。

  1. public class Test16 {
  2.         public static void main(String[] args) {
  3.                 Scanner sc = new Scanner(System.in);
  4.                 ArrayList<String> list = new ArrayList<>();
  5.                 while(true){
  6.                         String line = sc.nextLine();
  7.                         if("end".equals(line)){
  8.                                 break;
  9.                         }
  10.                         list.add(line);
  11.                 }
  12.                 for (int i = 0; i < list.size() - 1; i++) {
  13.                         for (int j = i + 1; j < list.size(); j++) {
  14.                                 if(list.get(i).compareTo(list.get(j)) < 0){
  15.                                         swap(list,i,j);
  16.                                 }
  17.                         }
  18.                 }
  19.                 System.out.println(list);
  20.         }

  21.         private static void swap(ArrayList<String> list, int i, int j) {
  22.                 String temp = list.get(i);
  23.                 list.set(i, list.get(j));
  24.                 list.set(j, temp);
  25.         }

  26. }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马