黑马程序员面试题

更新时间:2023-11-29 09:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1、(黑马点招面试题):有类似这样的字符串:\请按照要求,依次完成以下试题。

(1)以逗号作为分隔符,把已知的字符串分成一个String类型的数组,数组中的每一个元素类似于\这样的字符串

(2)把数组中的每一个元素以\作为分隔符,把\左边的元素作为key,右边的元素作为value,封装到Map中,Map中的key和value都是Object类型。

(3)把map中的key封装的Set中,并把Set中的元素输出。 (4)把map中的value封装到Collection中,把Collection中的元素输出。 2、(黑马点招面试题):现有如下两个已知条件: 在F盘有一个文件:a.txt ,该文件内容如下: test.Person,id:5 test.Student,id:6 (1)读取a.txt中为每一行,把每一行放入一个变量中 (2)用\分隔符把变量变成一个String类型的数组。 (3)读取数据中的第一个元素,利用java反射机制创建对象。

3、编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

4、编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt。

5、编写一个类A,增加一个实力方法showString,用于打印一条字符串,在编写一个类TestA ,作为客户端,用键盘输入一个字符串,改字符 串就是类A的全名,使用反射机制创建该类的对象,并调用该对象中的方法showString。

6、键盘录入5个数据,存储到一个数组中,取最大值和最小值。

7、取出一个字符串中字母出现的次数。如:字符串:\,输出格式为:a(2)b(1)k(2)...

8、向泛型为Integer的ArrayList中添加一个String类型的元素

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

11、编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

12、一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为\的字符串元素,请用代码实现。

13、编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法。

14、编写一个程序,获取10个1至20的随机数,要求随机数不能重复。

15、声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,每一个线程为数组添加3个数据即可。

16、使用带缓冲功能的字节流复制文件。

17、求三位数的质数,只能被 本身和1整除,倒序输出 18、用Math.random生成1,2,3,4,5,6,7,8,9,10 19、键盘录入5个数,存储到一个数组中,取最大值和最小值 20、通过反射创建一个对象,并且运行其中的私有方法 21、九九乘法表

22、冒泡排序 23、懒汉式

24、1-100 中个位和十位不含 7 的数 25、从文本中读取在控制台显示

package com.itheima;

import java.util.Collection; import java.util.HashMap;

import java.util.IdentityHashMap; import java.util.Map; import java.util.Set; /* * 1、有类似这样的字符串:\请按照要求,依次完成以下试题。 * (1)以逗号作为分隔符,把已知的字符串分成一个String类型的数组,数组中的每一个元素类似于\这样的字符串

* (2)把数组中的每一个元素以\作为分隔符,把\左边的元素作为key,右边的元素作为value,封装到Map中,Map中的key和value都是Object类型。

* (3)把map中的key封装到Set中,并把Set中的元素输出。

* (4)把map中的value封装到Collection中,把Collection中的元素输出。 *

* 思路:

* 一定要明确的是:我们学的Map集合键是不可以重复的,所以我们做这个题的时候就要考虑可以重复键的Map集合。IdentityHashMap

* 考点:1.正则 2.Map集合 3*.最重要的是要明确这个题的最重要的一点,IdentityHashMap作为Map集合键可以重复。

* 要知道,所有的题都是很简单的,不要想的太复杂,多问老师和百度。 */

public class ExamTest1 { public static void main(String[] args) { String string = \定义一个字符串 Map map = new IdentityHashMap();// 创建Map集合

String[] str = string.split(\将字符串以\分割,用一个字符串str数组接收 // 遍历str数组并将数组中的元素用\分割(使用了正则表达式内容),用str2接收。

for (int a = 0; a < str.length; a++) { // 创建一个字符串数组str2 String[] str2 = str[a].split(\ // 遍历str2数组,将分割后的内容存入到map集合中 map.put(str2[0], str2[1]);

} Set set = map.keySet(); // 打印set 获取键 System.out.println(set); Collection col =map.values(); // 打印col 获取值 System.out.println(col); } }

package com.itheima;

import java.io.BufferedReader; import java.io.FileReader; /*

* 2、现有如下两个已知条件:

* 在F盘有一个文件:a.txt ,该文件内容如下: * test.Person,id:5 * test.Student,id:6 *

* (1)读取a.txt中为每一行,把每一行放入一个变量中 * (2)用\分隔符把变量变成一个String类型的数组。

* (3)读取数据中的第一个元素,利用java反射机制创建对象。 */

public class ExamTest2 { public static void main(String[] args) throws Exception { // 创建一个高效输入流,指向F盘下的a.txt文件 BufferedReader br = new BufferedReader(new FileReader(\ // 读取第一行 String str1 = br.readLine(); // 读取第二行 String str2 = br.readLine(); // System.out.println(str1); // System.out.println(str2); // 分别用字符串数组接收用\隔开的两部分 String[] strs1 = str1.split(\ String[] strs2 = str2.split(\ //创建字节码对象 Class c = Class.forName(strs1[0]);

// c.getConstructor().newInstance(); //用字节码文件创建对象 Object obj = c.newInstance(); } }

package com.itheima;

import java.util.Comparator; import java.util.Iterator; import java.util.Scanner; import java.util.TreeSet;

//3、编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

// 问乐飞去吧,思路对了,但是结果没有对 public class ExamTest3 { public static void main(String[] args) { TreeSet ts = new TreeSet<>(new Comparator() { @Override public int compare(String s1, String s2) { return -(s1.compareTo(s2)); } }); while (true) { Scanner sc = new Scanner(System.in); String string = sc.nextLine(); if (string.equals(\ Iterator it = ts.iterator(); while (it.hasNext()) { System.out.println(it.next()); } break; } ts.add(string); } } }

package com.itheima;

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File;

import java.io.FileReader; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException;

//4、编写一个程序,把这个目录下的所有的带.java文件都拷贝到另一个目录总,拷贝成功后,把后缀名是.java的改成.txt /*

* 思路 * 1、创建输入流对象,遍历目录,通过匿名内部类拿出。符合规则的文件 * 2、通过高效字符流复制文件 * 3、将.java改成.txt *

* 注意:如果是多级目录的话用递归,最好在过滤器方法中用 ,这是要注意,递归调用的方法一定要try..catch 不可以抛异常,原因是他爹没有,你懂得! */

public class ExamTest4 { public static void main(String[] args) throws IOException { // 封装d:\\\\java这个目录 File startFile = new File(\ // 获取该目录下的所有满足条件的数组 File[] files = startFile.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return new File(dir, name).isFile() && name.endsWith(\ } }); // 判断目的地是否存在,不存在就建立 File endFile = new File(\ if (!endFile.exists()) { endFile.mkdir(); } // 遍历文件数组 for (File f : files) { String name = f.getName(); // 得到文件名 File newFile = new File(endFile, name);// 将路径和文件名拼接 BufferedReader br = new BufferedReader(new FileReader(f));

+ me.getValue()); } } }

package com.itheima;

import java.io.BufferedReader; import java.io.IOException;

import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; /*

题目:编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。 分析:

1.字符串本身提供的比较性为字典顺序,可以使用工具类Collections.reverse()方法将原来的比较性反序。

但也可以自定一个比较器,让集合自身必备比较性;

2.键盘录入的是字节流,操作的是字符流,可以使用转换流,并加入缓冲区技术,提高效率;

3.录入的字符串存储到ArrayList集合中;

4.使用Collections工具类给ArrayList中元素排序 5.打印ArrayList集合中的元素 步骤:

1.List list = new ArrayList();

2.BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); 3.list.add(line);

4.Collections.sort(list, Collections.reverseOrder()); 5.Iterator it = list.iterator(); while(it.hasNext()){

System.out.println(it.next()); } */

public class ExamTest11 { public static void main(String[] args) { // 1、定义一个ArrayList集合

List list = new ArrayList();

// 键盘录入字符串,转换流,缓冲区

System.out.println(\请输入一些字符或者字符串, end 结束!\

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; try {

while ((line = bufr.readLine()) != null) { if (\ break;

// 往ArrayList集合中添加元素 list.add(line); }

} catch (IOException e) {

throw new RuntimeException(\异常\ }

// 给ArrayList排序,字典倒序

Collections.sort(list, Collections.reverseOrder()); // 打印集合

Iterator it = list.iterator(); while(it.hasNext()){

System.out.println(it.next()); } } }

package com.itheima;

import java.util.ArrayList; import java.util.Iterator; import java.util.List; /*

* 3、 一个ArrayList对象aList中存有若干个字符串元素,

* 现欲遍历该ArrayList对象,删除其中所有值为\的字符串元素, * 请用代码实现。 * */

@SuppressWarnings(\public class ExamTest12 { public static void main(String[] args) { List aList = new ArrayList(); aList.add(\社区\

aList.add(\ aList.add(\黑马程序员\ aList.add(\黑马论坛\ aList.add(\黑马程序员——安卓\ aList.add(\黑马程序员——云计算\ aList.add(\ aList.add(\我准备去黑马训练营了\ // 通过普通的角标遍历,删除。要避免并发修改异常 for (int a = 0; a < aList.size(); a++) { if (aList.get(a).equals(\ aList.remove(a); } } System.out.println(aList); } }

package com.itheima;

import java.lang.reflect.Method; /*

* 6、编写一个类,增加一个实例方法用于打印一条字符串。 * 并使用反射手段创建该类的对象, 并调用该对象中的方法。 * */

//对象的打印方法 class Println { public void println(String str) { System.out.println(str); } }

public class ExamTest13 { public static void main(String[] args) throws Exception { Class c = Class.forName(\通过反射的方式获取该类的字节码文件 Method method = c.getMethod(\获取字节码对象对应的方法,并指定参数类型。 method.invoke(c.newInstance(), \王荣荣好难看呀 O(∩_∩)O哈哈~\运行对象中的方法,并传入参数。 }

}

package com.itheima;

import java.util.Random; import java.util.TreeSet; /*

*编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 *

*思路: * 1.定义一个集合,用于存储随机数 * 2.产生随机数,并存储进集合中。 * 3.对集合的长度进行判断。 *步骤: * 1.由于随机数不能重复,所以使用Set集合。为了保证值的唯一,所以使用HashSet集合. * 2.通过Set集合的add方法,将生成的随机数存储进HashSet集合。 * 3.通过Set集合的size方法对集合的长度进行判断,如果产生的随机数达到10个,那么将退出循环。 * */

public class ExamTest14 { public static void main(String[] args) { // 存储Integer的Set集合 TreeSet set = new TreeSet(); // 判断集合的长度,如果符合了一定的长度,那么循环结束 while (set.size() < 10) { // 产生1~20之间的随机数 int i = new Random().nextInt(20) + 1; // 添加进Set集合中 set.add(i); } // 打印下集合的元素 System.out.println(set); } }

package com.itheima;

import java.util.Arrays; import java.util.Random;

//声明一个共享数组,起两个线程,

//两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据, //每一个线程为数组添加3个数据即可。 public class ExamTest15 {

//写一个类实现Runnable接口,创建两个Thread对象传入该类 //多线程操作共享数组需要同步synchronize public static void main(String[] args){ FillArray fa = new FillArray(); Thread t1 = new Thread(fa); Thread t2 = new Thread(fa); t1.start(); t2.start(); } }

class FillArray implements Runnable{ //定义共享数组 int[] arr = new int[6]; //创建random类的r对象 Random r = new Random(); //简单初始化 int count = 0; public void run() { // 同步代码块 synchronized(r){ //控制长度 while(count

private static Student s = null; // 注意 在多线程程序中容易出现安全问题,所以我们写的时候最好加上synchronized public static synchronized Student getStudent() { if (s == null) { s = new Student(); } return s; } }

package com.itheima;

//1-100 中个位和十位不含 7 的数 public class ExamTest24 { public static void main(String[] args) { for (int a = 0; a < 100; a++) { int ge = a % 10; //个位 int shi = a / 10; //十位 if (!(ge == 7 || shi == 7)) { System.out.println(a); } } } }

package com.itheima;

import java.io.BufferedReader; import java.io.FileReader;

import java.io.IOException;

//从文本中读取在控制台显示 ,(比较简单可以不看) public class ExamTest25 { public static void main(String[] args) { // 封装数据源 BufferedReader br = null; try { br = new BufferedReader(new FileReader(\ String line = null; while ((line = br.readLine()) != null) { System.out.println(new String(line)); } } catch (Exception e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } }

一、 从键盘随机输入一些字符串,输入:end 结束,把这些字符串存入到ArrayLIst

中,删除其中所有值为“abc”的字符串元素, 再遍历输出该集合 二、 编写一个类,增加一个实例方法用于打印一条字符串,并使用反射手段创建该

类的对象,并条用该对象的方法

三、 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数

并输出

四、 定义一个字符串“Hello heima 2014”,记录这个字符串中每个字母出现的次数,

输出格式为a(1)b(2)```` 五、 定义一个文件输入流,条用read(byte[] b)方法,将a.txt文件中的所有的内容

打印(byte[] 数组大小为5)。 六、

七、 编写程序,打印1~100内的整数,但包含7的要跳过,如17 27··

八、 编写一个延迟加载的单例模式

九、 有五个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘录

入学生的信息,输入格式:name,30,30,30(姓名,三科成绩) 然后把输入的学生信息按总分从高到低的顺序写入到名称“stu.txt”文件中 十、 定义一个包含私有成员变量和函数的类,再定义一个内部类,在内部类函数中

访问外部成员变量,并调用外部函数,在外部函数中创建内部类对象,调用内部类函数。

十一、 数组去除重复元素

十二、 自定义枚举week用于表示星期,mon,tue, wed,```要求每个枚举值都有

tolocalString方法,用于获得枚举所表示的星期的中文格式,星期一、星期二、····

十三、 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对

象,然后遍历并打印出各个元素key value

十四、 已知文件a.txt文件中的内容“sfafsdf”请编写程序读取文本信息,并按自然排

序输出到b.txt中

十五、 编写程序,获得10到20的随机数,要求随机数不能重复,并将这些数存入到

List集合中,并输出

编写程序,将制定目录下的.java文件拷贝到另一个目录下,并把后缀改为.txt

十六、 什么情况下适合用UDP协议,什么适合用TCP协议

十七、 写一个方法,计算一个Int类型数组中每个元素的综合,和最大值、最小值

本文来源:https://www.bwwdw.com/article/mmjt.html

Top