后端笔试:写出你知道的20个Java类库并给出一个你熟悉的类方法使用?

37 阅读3分钟

现在后端想找个好岗位真心有点压力,这样的面试题,让我怎么作答?直接放弃!!!~~~,回来想了想,查了查,我开发所用到的类库及工具类,还真不少,但是一个也没记住,此刻,痛哭不已!

现在如果让我写,我准备好了?随手撸几个吧。

  1. java.lang 包:提供了 Java 语言的基本类型、基本操作和基本对象,包括 String、Integer、Boolean 等类。示例:
String str = "Hello World";
Integer integerObj = new Integer(123);
boolean bool = true;
  1. java.util 包:提供了各种实用工具类,包括集合框架、时间日期处理、随机数生成等等。示例:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

Date date = new Date();

Random random = new Random();
System.out.println(random.nextInt(100));
  1. java.io 包:提供了文件输入输出和处理相关的类,包括文件读写、流处理等。示例:
File file = new File("abc.txt");
file.createNewFile();

FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
fis.read(buffer);
fis.close();
  1. java.net 包:提供了网络编程相关的类和接口,包括 Socket、ServerSocket 等。示例:
Socket socket = new Socket("www.baidu.com", 80);
OutputStream os = socket.getOutputStream();
os.write("GET / HTTP/1.1\r\n\r\n".getBytes());
os.flush();
socket.close();
  1. java.awt 和 javax.swing 包:提供了图形用户界面(GUI)编程相关的类和接口。示例:
JFrame frame = new JFrame("My Frame");
frame.setSize(600, 400);
frame.setVisible(true);
  1. java.math 包:提供了高精度数学运算相关的类和接口,包括 BigInteger、BigDecimal 等。示例:
BigInteger bigInt1 = new BigInteger("12345678901234567890");
BigInteger bigInt2 = new BigInteger("98765432109876543210");
System.out.println(bigInt1.add(bigInt2));
  1. java.nio 包:提供了非阻塞 I/O 操作相关的类和接口,可以提高网络通信的效率。示例:
SocketChannel channel = SocketChannel.open(new InetSocketAddress("www.baidu.com", 80));
channel.configureBlocking(false);
ByteBuffer buffer = ByteBuffer.allocate(1024);
int len = channel.read(buffer);
channel.close();
  1. java.sql 包:提供了 JDBC(Java 数据库连接)相关的类和接口,可以访问和操作数据库。示例:
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "password");

// 执行查询
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user");

// 处理结果集
while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
}

// 关闭资源
rs.close();
stmt.close();
conn.close();
  1. java.util.concurrent 包:提供了并发编程相关的类和接口,包括线程池、锁、并发集合等。示例:
// 创建一个线程池
ExecutorService executor = Executors.newFixedThreadPool(10);

// 提交任务
Future<Integer> future = executor.submit(() -> {
    Thread.sleep(1000);
    return 1 + 2;
});

// 获取任务执行结果
int result = future.get();

// 关闭线程池
executor.shutdown();
  1. java.util.regex 包:提供了正则表达式相关的类和接口,可以进行文本匹配和替换。示例:
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("a1b2c3");
while (matcher.find()) {
    System.out.println(matcher.group());
}
  1. java.text 包:提供了文本格式化相关的类和接口,可以进行数字、日期等的格式化。示例:
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(nf.format(1234.56));

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(new Date()));
  1. java.util.logging 包:提供了日志记录相关的类和接口,可以进行日志记录和管理。示例:
Logger logger = Logger.getLogger("MyLogger");
logger.setLevel(Level.INFO);

FileHandler fh = new FileHandler("mylog.log");
fh.setFormatter(new SimpleFormatter());
logger.addHandler(fh);

logger.info("Hello World!");
  1. java.beans 包:提供了 JavaBean 相关的类和接口,可以进行对象属性的获取和设置。示例:
public class Person {
    private String name;
    private int age;

    // getter 和 setter 方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

Person person = new Person();
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

for (PropertyDescriptor pd : propertyDescriptors) {
    if (pd.getPropertyType() == String.class) {
        pd.getWriteMethod().invoke(person, "张三");
    } else if (pd.getPropertyType() == int.class) {
        pd.getWriteMethod().invoke(person, 18);
    }
}
  1. java.security 包:提供了安全相关的类和接口,包括加密、解密、数字签名等。示例:
// 加密数据
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec("1234567890123456".getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec("1234567890123456".getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
byte[] encryptedData = cipher.doFinal("Hello World".getBytes());

// 解密数据
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
byte[] decryptedData = cipher.doFinal(encryptedData);
String str = new String(decryptedData);
  1. java.time 包:提供了日期时间相关的类和接口,可以进行日期时间的操作和计算。示例:
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();

System.out.println(date.toString());
System.out.println(time.toString());
  1. java.util.zip 包:提供了压缩和解压相关的类和接口,包括 ZipFile、ZipEntry 等。示例:
// 压缩文件
FileOutputStream fos = new FileOutputStream("test.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
zos.putNextEntry(new ZipEntry("abc.txt"));
byte[] data = "Hello World".getBytes();
zos.write(data, 0, data.length);
zos.closeEntry();
zos.close();
fos.close();

// 解压文件
ZipInputStream zis = new ZipInputStream(new FileInputStream("test.zip"));
ZipEntry entry = null;
while ((entry = zis.getNextEntry()) != null) {
    String name = entry.getName();
    System.out.println(name);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = -1;
    while ((len = zis.read(buffer)) != -1) {
        bos.write(buffer, 0, len);
    }
    byte[] data = bos.toByteArray();
    bos.close();
}
zis.close();
  1. java.rmi 包:提供了远程方法调用(RMI)相关的类和接口,可以进行 Java 程序之间的远程通信。示例:
public interface HelloService extends Remote {
    String sayHello(String name) throws RemoteException;
}

public class HelloServiceImpl implements HelloService {
    public String sayHello(String name) throws RemoteException {
        return "Hello, " + name + "!";
    }
}

// 注册服务
LocateRegistry.createRegistry(1099);
Naming.rebind("rmi://localhost/hello", new HelloServiceImpl());

// 调用服务
HelloService helloService = (HelloService) Naming.lookup("rmi://localhost/hello");
String result = helloService.sayHello("张三");
System.out.println(result);
  1. java.awt.image 和 javax.imageio 包:提供了图像处理相关的类和接口,可以进行图像的处理和操作。示例:
// 读取图片
BufferedImage image = ImageIO.read(new File("test.jpg"));

// 缩放图片
AffineTransform transform = AffineTransform.getScaleInstance(0.5, 0.5);
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
BufferedImage scaledImage = op.filter(image, null);

// 写入图片
ImageIO.write(scaledImage, "jpg", new File("test_scaled.jpg"));
  1. javax.xml.bind 包:提供了 XML 数据绑定相关的类和接口,可以将 XML 数据和 Java 对象进行绑定。示例:
@XmlRootElement(name = "person")
public class Person {
    @XmlElement(name = "name")
    private String name;
    @XmlElement(name = "age")
    private int age;

    // getter 和 setter 方法
}

// 解析 XML 数据
JAXBContext context = JAXBContext.newInstance(Person.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Person person = (Person) unmarshaller.unmarshal(new File("person.xml"));

// 生成 XML 数据
JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(person, new File("person.xml"));
  1. javax.servlet 包:提供了 Servlet 相关的类和接口,可以进行 Web 应用程序的开发。示例:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello, World!</h1>");
        out.println("</body></html>");
    }
}

// 部署 Web 应用程序
Tomcat tomcat = new Tomcat();
Context context = tomcat.addContext("", new File(".").getAbsolutePath());
Tomcat.addServlet(context, "hello", new HelloServlet());
context.addServletMappingDecoded("/hello", "hello");
tomcat.start();
tomcat.getServer().await();