富途面经-一面

面试的体验是不错的，面试官一直在引导，奈何太久没有接触八股文了🤣

岗位 ：后端开发

时间：2023-05

面试时长：1 小时 24 分钟

Java

基础

String 、StringBuilder 、StringBuffer 的区别

StringBuilder 性能更好的原因是什么

Java 开发中使用过的 List 有哪些，能说一下各自的特点吗

那 ArrayList 和 LinkedList 的区别是什么

Java 开发中使用过的 Map 有哪些，能说一下各自的特点吗

HashMap 在并发场景下会存在什么问题，有什么方法可以解决呢

并发

在日常开发中在什么情况下需要使用线程池

为什么要使用线程池而不是直接新开一个新的线程呢

在日常开发当中除了使用多线程的的方式去解决并发问题之外，还会使用什么方式去编程解决并发的问题（比如说锁之类的）

Java 的 synchronized 关键字使用过吗，能说一下一般都怎么使用的吗

synchronized 如果是修饰方法可以吗，会有什么现象

Sleep () 和 Wait () 这 2 种方法的使用和区别

JVM 虚拟机

Java 虚拟机 GC 这方面你有了解过吗

在项目中使用的 GC 模型是哪个呢

数据库

MySQL 有哪些事务等级吗，每个事务等级能举个例子说明一下吗

MySQL 的锁，比如说间隙锁之类的，能介绍一下吗

索引你了解过吗

为什么主键索引查询效率比普通索引快

那唯一索引与主键索引的区别是什么

数据结构和算法

快排和堆排介绍一下

用递归的方法写一下二叉树的中序、前序遍历

项目

详细讲一下你做过的项目

项目当中为什么要使用 SpringCloud 的 OpenFegin 来调用的第三方服务

项目当中日志调用的链路是怎么做的，实战中链路怎么起到效果

MySQL 与 ProgresSQL 的区别是什么，为什么要将数据库从 MySQL 切换到 ProgresSQL

数据库切换迁移过程如何完成平滑切换的呢

对于不停止服务的条件下，如何实现平滑切换数据库

场景：调用一个接口，A 步骤是顺序执行，B 步骤是异步在后台执行记录调用日志（执行比较慢），现在如果 A 步骤执行成功返回给用户了，但是在 B 步骤执行的过程中服务挂掉了日志没有记录丢失了怎么处理