实习

发布时间 2023-05-29 09:29:44作者: linycat

专业技能

熟悉 Java

集合

谈谈集合

泛型

为什么使用泛型?
谈谈 <?> 与 Object
谈谈 extends 与 super
可以将 List<String> 传递给 List<Object> 吗?
数组可以使用泛型吗?
谈谈泛型类
谈谈泛型接口
谈谈泛型方法
谈谈泛型擦除
谈谈泛型的常用命名

IO

Exception

谈谈异常的处理机制
如何实现全局异常处理?

Lambda

什么是 Lambda?
谈谈使用格式
什么是语法糖?
Java 有哪些常见的语法糖?

Stream

LocalDate

为什么不使用 java.util.Date?
设计缺陷,线程不安全,比如 getYear 方法返回的是从 1900 年起经过的年数,而不是实际的年份。
System.out.println(new Date().getYear()); // 2023 - 1900 = 123
为什么不使用 java.util.Calendar?
使用繁琐,线程不安全,比如 Calendar.MONTH 是从 0 开始计算的,而不是 1。
System.out.println(Calendar.getInstance().get(Calendar.MONTH) + 1);
谈谈 java.time 包
设计合理,使用简单,线程安全,支持纳秒级别的时间精度。
LocalDate 表示日期,LocalTime 表示时间
LocalDateTime 表示日期和时间,ZonedDateTime 表示时区的日期和时间
Instant 表示时间戳,Duration 表示时间间隔,Period 表示日期间隔
DateTimeFormatter 用于日期时间的格式化
谈谈 java.time 包的常用 API
package com.linycat.java4basic.p3;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
    }

    /**
     * Date 转 LocalDateTime
     */
    public static void dateToLocalDateTime() {
        Date date = new Date();
        System.out.println("Date: " + date);
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("LocalDateTime: " + localDateTime);
    }

    /**
     * LocalDateTime 转 Date
     */
    public static void localDateTimeToDate() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("LocalDateTime: " + localDateTime);
        Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("Date: " + date);
    }

    /**
     * String 转 LocalDateTime
     */
    public static void stringToLocalDateTime() {
        String string = "2020-05-20 21:30:01";
        System.out.println("String: " + string);
        LocalDateTime localDateTime = LocalDateTime.parse(string, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("LocalDateTime: " + localDateTime);
    }

    /**
     * LocalDateTime 转 String
     */
    public static void localDateTimeToString() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("LocalDateTime: " + localDateTime);
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println("String: " + localDateTime.format(dateTimeFormatter));
    }

    /**
     * 日期相隔
     */
    public static void localDateBetween() {
        LocalDate startLocalDate = LocalDate.of(2020, 5, 20);
        LocalDate endLocalDate = LocalDate.now();
        System.out.println("比较年月日 Days: " + startLocalDate.until(endLocalDate, ChronoUnit.DAYS));
        System.out.println("仅仅比较日 Days: " + Period.between(startLocalDate, endLocalDate).getDays());
    }

    /**
     * 时间相隔
     */
    public static void localDateTimeBetween() {
        LocalDateTime startLocalDateTime = LocalDateTime.of(2020, 5, 20, 21, 30, 1);
        LocalDateTime endLocalDateTime = LocalDateTime.now();
        Duration duration = Duration.between(startLocalDateTime, endLocalDateTime);
        System.out.println("Days: " + duration.toDays() + ", Hours: " + duration.toHours() + ", Minutes: " + duration.toMinutes());
    }

    /**
     * 时间戳
     */
    public static void timeStamp() {
        Instant instant = LocalDateTime.of(2020, 5, 20, 21, 30, 1).toInstant(ZoneOffset.ofHours(8));
        System.out.println("EpochMilli: " + instant.toEpochMilli());
        System.out.println("CurrentTimeMillis: " + System.currentTimeMillis());
        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(instant.getEpochSecond(), 0, ZoneOffset.ofHours(8));
        System.out.println("LocalDateTime: " + localDateTime);
    }

    public static void otherApi() {
        // 创建 LocalDateTime 对象
        LocalDateTime dateTime = LocalDateTime.now();
        LocalDateTime specificDateTime = LocalDateTime.of(2020, 5, 20, 21, 30, 1);
        LocalDateTime parsedDateTime = LocalDateTime.parse("2020-05-20T21:30:01");
        // 获取日期和时间
        int year = dateTime.getYear();
        int month = dateTime.getMonthValue();
        int day = dateTime.getDayOfMonth();
        int hour = dateTime.getHour();
        int minute = dateTime.getMinute();
        int second = dateTime.getSecond();
        int nano = dateTime.getNano();
        DayOfWeek dayOfWeek = dateTime.getDayOfWeek();
        // 修改日期和时间
        LocalDateTime modifiedDateTimeWithYear = dateTime.withYear(2024);
        LocalDateTime modifiedDateTimeWithMonth = dateTime.withMonth(6);
        LocalDateTime modifiedDateTimeWithDayOfMonth = dateTime.withDayOfMonth(25);
        LocalDateTime modifiedDateTimeWithHour = dateTime.withHour(12);
        LocalDateTime modifiedDateTimeWithMinute = dateTime.withMinute(15);
        LocalDateTime modifiedDateTimeWithSecond = dateTime.withSecond(30);
        LocalDateTime modifiedDateTimeWithNano = dateTime.withNano(0);
        // 加减日期和时间
        LocalDateTime modifiedDateTimePlusYears = dateTime.plusYears(1);
        LocalDateTime modifiedDateTimeMinusMonths = dateTime.minusMonths(2);
        LocalDateTime modifiedDateTimePlusDays = dateTime.plusDays(7);
        LocalDateTime modifiedDateTimeMinusHours = dateTime.minusHours(3);
        LocalDateTime modifiedDateTimePlusMinutes = dateTime.plusMinutes(15);
        LocalDateTime modifiedDateTimeMinusSeconds = dateTime.minusSeconds(30);
        LocalDateTime modifiedDateTimePlusNanos = dateTime.plusNanos(500000000);
        // 比较日期和时间
        LocalDateTime dateTime1 = LocalDateTime.of(2020, 5, 20, 21, 30, 1);
        LocalDateTime dateTime2 = LocalDateTime.of(2025, 5, 20, 21, 30, 1);
        boolean isBefore = dateTime1.isBefore(dateTime2);
        boolean isAfter = dateTime1.isAfter(dateTime2);
        boolean isEqual = dateTime1.isEqual(dateTime2);
    }
}

ThreadPoolExecutor

其它

熟悉 MySQL

行表锁

索引

事务隔离

存储引擎

联表查询

MVCC

explain

其它

熟悉 Spring

生命周期

谈谈循环依赖

事务传播

IOC

AOP

BeanFactory

BeanPostProcessor

熟悉 SpringMVC

熟悉 SpringBoot

熟悉 MyBatis

熟悉 MyBatisPlus

熟悉 Redis

熟悉 RabbitMQ

熟悉 设计模式

熟悉 数据结构

熟悉 网络基础

熟悉 Git

了解 SpringCloud

了解 Nginx

能够配置负载均衡

了解 Docker

能够搭建开发环境

了解 Vue2

能够进行简单的请求回显

项目经验