Java程序员面试知识点总结:并发、数据库、SpringCloud与Redis

需积分: 5 0 下载量 93 浏览量 更新于2024-09-05 收藏 4KB TXT 举报
"Java程序员面试问题汇总" 在Java编程领域,面试官经常关注的问题涵盖了并发、数据类型、类库和框架等多个方面。以下是一些重要的知识点: 1. **并发控制**: - `synchronized` 关键字用于实现线程同步,确保同一时间只有一个线程能访问特定代码块或方法,防止数据不一致。 - CAS(Compare and Swap)是一种无锁算法,用于原子性地更新变量,避免了`synchronized`的开销,但可能会导致自旋锁。 2. **数值计算与精度**: - `BigDecimal` 类用于进行高精度的浮点数运算,避免了浮点数计算时可能出现的精度问题。Java.math包提供了`BigDecimal`的API,如`add()`, `subtract()`, `divide()`等。 3. **线程安全的集合**: - `Collections.synchronizedList()` 方法可以将一个普通的`List`转换为线程安全的列表,但需要注意的是,这个同步化只对整个列表操作有效,对迭代器的操作需要手动同步。 - `Atomic` 类如`AtomicInteger`和`AtomicReference`提供了原子性的操作,适用于单个变量的并发更新。 4. **Spring Cloud组件**: - Eureka 是一个服务注册与发现的组件,用于管理微服务实例。 - Ribbon 是一个客户端负载均衡器,配合Eureka进行服务调用。 - Hystrix 提供断路器模式,防止服务雪崩。 - Zuul 是边缘服务和 API 网关,处理路由、过滤和安全等任务。 - SpringCloudConfig 支持配置中心,动态更新应用配置。 5. **数据库相关**: - MySQL 数据库的存储引擎包括:InnoDB(支持事务和行级锁定)、MyIsam(不支持事务,但读取速度快)、Blackhole(丢弃所有写入数据)和MEMORY(数据存储在内存中)。 - MySQL的默认存储引擎从早期的MyIsam转变为InnoDB,以提供事务处理能力。 6. **Spring Boot与Spring Cloud**: - Spring Boot 简化了Spring应用的初始搭建以及开发过程,它自动配置了许多常用功能,使得开发者无需编写大量配置代码。 - Spring Cloud 基于Spring Boot实现,为构建分布式系统提供了工具集,如服务发现、配置中心、断路器、路由、微代理等。 7. **Redis缓存管理**: - 在使用Redis时,可以通过`expire`命令设置过期时间,例如`jedisClient.expire(key, timeout)`。 - 如果出现Redis未正常工作的情况,可能需要检查网络连接、配置和命令执行。 8. **MyBatis操作**: - MyBatis是一个优秀的持久层框架,允许将SQL语句绑定到Mapper接口的方法上。 - 为了实现线程安全,MyBatis中的`SqlSession`通常需要在每个线程或方法内部创建并关闭,避免多个线程共享同一个`SqlSession`。 9. **线程与多线程**: - 创建线程的三种方式:直接继承`Thread`类并重写`run()`,实现`Runnable`接口并调用`Thread.start()`,以及使用`ExecutorService`和`FutureTask`来提交任务。 10. **消息队列(MQ)**: - MQ的核心概念包括:Exchange(交换机,根据路由规则分发消息),Queue(队列,接收并存储消息),Binding(绑定,将Exchange和Queue关联起来)。 - 消息确认机制如ACK(Acknowledgement)确保消息被正确处理,避免消息丢失。 以上只是Java面试中涉及的一部分关键知识点,实际面试中还会涵盖更多如设计模式、异常处理、IO流、网络编程等方面的内容。对于Java程序员来说,深入理解这些概念并能够灵活运用是十分重要的。