Skip to content

2023 07 12

Java基础

  1. Java基本数据类型有哪些?分别占多少字节存储?
    1. char 占2字节,因为表示的是UTF-16编码的字符
    2. 对应包装类的BYTES字段写了占几个字节,如Integer.BYTES
  2. Java中的权限修饰符有哪些?权限范围分别是什么?
  3. Java中的线程有哪几种创建方式?
    1. 4种
  4. Java中的反射作用是什么?
  5. Java中的异常分为哪几种?
  6. 讲一下你对静态代码块的理解?
    1. 只会执行一次;在类加载的时候执行;基本上是做一些初始化工作
  7. java有哪些锁?共享锁是什么?CAS?乐观锁和悲观锁?synchronied的底层原理?锁升级?死锁怎么形成的?如何破解死锁?
  8. String StringBuilder StringBuffer三者之间的区别
  9. HashTable和HashMap的区别
    1. https://blog.csdn.net/u011441473/article/details/122536939
  10. 假设线程有一个线程池,线程池当中有个线程,7个线程执行失败,3个线程执行成功,请问怎么获取线程的返回值

408相关

  1. 线程之间的通信有哪几种方式?
  2. 讲一下计算机网络中OSI的七层模型?
  3. 链表增删快,那如何提高其查询效率,有没有什么想法?
    1. LinkedHashMap
  4. B+树了解吗?B+树如何范围查询?B+树退化的极端情况是什么?
  5. 跳表了解吗?
  6. 大顶堆、小顶堆了解吗?
  7. LRU算法了解吗?你会如何实现它?这个算法可以应用在哪些场景下?
  8. TCP为什么是三次握手?两次行不行?多次行不行?
  9. TCP的安全性是如何实现的?两台服务器之间可以同时建立多条TCP链接吗?怎么实现的?
    1. 校验,序号,确认,重传
  10. 客服端输入一个网址后,是如何拿到想要的数据的,是怎样在网络中传输的?
  11. cookie和session

数据库相关

  1. MySQL数据库有几种数据引擎?
    1. SHOW ENGINES;
  2. 谈谈你对数据库事务的了解?除了数据库事务可以保证原子性之外,在代码的应用层能不能实现?
    1. 锁机制:使用锁来保证代码块的原子性。可以使用互斥锁(mutex)或其他类型的锁,确保在某个时间点只有一个线程可以执行关键代码段。这样可以防止并发访问导致的数据不一致性。
    2. 事务管理器:在应用层实现一个简单的事务管理器来保证一系列操作的原子性。事务管理器可以定义一个操作序列,并在执行操作之前创建一个保存点(savepoint)。如果其中任何一个操作失败,可以回滚到保存点,撤销之前的所有操作。这需要针对应用程序的特定需求自行实现。
  3. 两个MySQL数据库中的数据,能够保持事务吗?
    1. 可以,使用2PC或者TCC
  4. innoDB有什么特性?为什么要选择innoDB作为引擎?
  5. 泛讲一下你对Redis的理解?
  6. 如何处理 Redis缓存 与 数据库 数据一致性问题?
    1. 读写双写(Read-Through and Write-Through):在访问Redis缓存和数据库时,使用读写双写的模式。当读取数据时,首先从Redis缓存中查询,如果未命中,则从数据库中获取,并将数据存储到Redis缓存中,以供下一次查询使用。在写入数据时,首先将数据写入数据库,然后更新或删除Redis缓存中相应的数据。这样可以保证读取时的高性能和数据的一致性。
    2. 当数据库中的数据发生变化时,及时更新Redis缓存,以避免数据不一致
  7. Redis集群了解吗?如何处理宕机的情况?Redis的同步策略?
  8. MyBatis用到了哪些设计模式
    1. 建造者模式(SqlSessionFactoryBuilder)
    2. 工厂模式(SqlSessionFactory)
    3. 单例模式(LogFactory)
    4. 适配器模式(Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现)
  9. MyBatis用到了哪些Java的机制
    1. 反射、注解
  10. 索引失效的场景
    1. 不使用索引列:当查询条件中没有使用到索引列时,MySQL无法使用索引来加速查询,导致索引失效。
    2. 使用函数或表达式:当查询条件中使用了函数或表达式,会导致索引失效。因为MySQL无法直接在索引上执行函数或表达式,它必须先计算函数或表达式的结果,然后再应用索引。例如,对于索引列date,如果查询条件是WHERE YEAR(date) = 2022,那么索引将失效。
    3. 数据类型不匹配:当查询条件中的数据类型与索引列的数据类型不匹配时,索引将失效。例如,如果索引列是整型,而查询条件是字符串类型,那么索引将无法使用。
    4. 模糊查询以通配符开头:当使用模糊查询(如LIKE)并以通配符(如%)开头时,索引将失效。
    5. 数据量过小:当表中的数据量非常小(通常是几个记录),MySQL优化器可能会决定不使用索引,而选择全表扫描,因为全表扫描的代价更低。

Spring相关

  1. 谈一谈Spring AOP?有哪些应用场景?如何实现的

    1. Spring AOP通过在程序运行期间动态地将额外的行为(称为切面)织入到目标对象的方法中,实现了横切关注点的模块化和重用。

      应用场景: Spring AOP在以下场景中常被使用:

      1. 日志记录:通过AOP,在方法执行前后记录日志,可以避免在每个方法中都手动添加日志记录的代码。
      2. 事务管理:通过AOP,在方法执行前后添加事务处理逻辑,例如开启事务、提交事务、回滚事务等,以保证数据的一致性和完整性。
      3. 安全性检查:通过AOP,在方法执行前后进行权限验证或安全性检查,确保只有具备相应权限的用户能够执行敏感操作。
      4. 性能监控:通过AOP,在方法执行前后记录方法的执行时间,以便对系统性能进行监控和优化。
      5. 缓存管理:通过AOP,在方法执行前检查缓存,如果缓存中存在数据,则直接返回缓存结果,避免执行昂贵的计算或数据库查询。

      实验方式:JDK动态代理或者CGLIB代理

其他

  1. 设计模式的好处有什么?用和不用设计模式有什么本质区别吗?
  2. 实现长地址请求到服务端,然后服务端重定向短地址给客户端,如何实现长短地址的互相映射?
  3. 我现在有10份数据,有1000个线程来争抢,你要怎么处理?
    1. 使用同步机制保证数据的一致性,比如加锁,或者使用线程安全的数据结构来存储数据
  4. 分布式是什么?为什么要分布式?分布式又会有哪些问题?分布式系统是如何实现事物的?