蚂蚁金服Java开发工程师一面面经
面试时间好紧凑鼠鼠落泪
- 用到分布式事务吗?为什么选择这种方案,有其他方案吗?
- 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。常见的解决方案包括2PC(两阶段提交)、TCC(Try-Confirm-Cancel)、本地消息表、最大努力通知和Saga事务等。
- JDK6、7、8分别提供了哪些新特性?
- JDK6:脚本语言支持、JDBC 4.0、编译器API等。
- JDK7:Switch对字符串的支持、try-with-resources语句、二进制字面量等。
- JDK8:Lambda表达式、Stream API、默认方法等。
- HTTPS的原理和工作流程?
- HTTPS通过SSL/TLS协议对数据进行加密,确保数据传输的安全性。工作流程包括客户端发起HTTPS请求、服务器返回证书、客户端验证证书、生成对称密钥并加密传输等步骤。
- 讲讲Java JMM(Java内存模型)和volatile的实现原理?
- Java内存模型规定了线程和主内存之间的交互规则。volatile关键字保证了变量的可见性和有序性,但不保证原子性。
- 讲一讲7层网络模型,TCP为什么要三次握手?
- 7层网络模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。TCP三次握手是为了建立可靠的连接,确保双方的接收和发送能力正常。
- 说说线程池的工作原理?
- 线程池通过复用线程来提高性能,避免频繁创建和销毁线程。核心组件包括线程池管理器、工作队列和线程工厂等。
- 你们数据库的高可用是怎么实现的?
- 数据库高可用通常通过主从复制、读写分离、心跳检测和自动故障转移等机制实现。
- 读写分离的场景下,怎么保证从数据库读到最新的数据?
- 可以通过延迟队列、读写一致性策略和数据同步机制来保证从数据库读到最新的数据。
- 如何保证MySQL数据不丢失?
- 通过使用事务、日志(如binlog)、备份和高可用架构等手段来保证数据不丢失。
- 高并发下如何设计秒杀系统?
- 秒杀系统需要考虑限流、缓存、异步处理和数据库优化等方面。常见的设计包括使用Redis缓存、消息队列和分布式锁等。
- 秒杀系统需要考虑限流、缓存、异步处理和数据库优化等方面。常见的设计包括使用Redis缓存、消息队列和分布式锁等。
这次面试让我对分布式系统和高并发处理有了更深的理解,希望这些经验能对大家有所帮助。
#软件开发笔面经##牛客创作赏金赛#