面试对象是武汉的招银云创,整个过程长达47分钟,技术考察的强度可谓严苛,面试体验如同一场八股盛宴,难度颇高,感觉自己全程被“吊打”。

难道现在的面试强度这么高吗?

接下来,我将分享一些在面试过程中的技术问题。

  1. 如何确保你的流程引擎与业务代码之间的解耦?你采用了哪些架构设计或设计模式?具体是如何抽象出业务功能的?
  2. 在流程审批结束后,通常调用方法A,现在需要调用方法B或其他多个方法,你会如何设计这个需求?(请从设计模式或动态注入的角度分析)我提到了策略模式,但面试官指出这不够解耦,接着提到了责任链模式。实际上,这里考查的是观察者模式,但当时我没有想到。
  3. 简述Spring Cloud的Eureka及其服务探活机制。抱歉,我对此不太了解。
  4. 请谈谈代理模式。在哪些场景下会使用代理模式?在业务层面如何使用?(面试官不让我提及Spring框架下的AOP或声明式事务的代理模式)
  5. 关于索引的原理,你可以按版本说明,不同版本之间有什么区别?(我第一次听说这个问题,疑惑是否是在询问自适应哈希索引,但我只了解过,记不太牢,所以不敢作答)
  6. 你了解索引的类型以及检索机制吗?
  7. 请列举联合索引失效的场景。例如,联合索引(a,b,c)在b=null的情况下,a=xx and b=xx or c=xx,会生效吗?
  8. 你能解释一下clone方法的原理吗?为什么是浅拷贝?(我只知道这是浅拷贝,具体原理不清楚)
  9. 为什么Redis可以支持高并发而采用单线程?
  10. 针对千万级数据表,查询效率低下,怎样进行优化?
  11. 分库分表的设计思路是什么?你是否有相关经验?(我的回答显得很八股,面试官看出来了)
  12. 请解释数据库的explain,包含哪些字段,各字段的含义是什么,重点关注哪些部分?(面试官补充说rows也很重要,后续也是如此,rows显示MYSQL执行查询的行数,数值越大越不好。但是,我不理解,数据量大不就导致rows更大吗?)
  13. 说说ConcurrentHashMap,是否遇到过线程不安全的场景?或者哪个API是线程不安全的?(我了解到ConcurrentHashMap的线程安全是指其每个方法的单独调用(即原子操作)是线程安全的,但整体互斥性并不受控。)我很困惑,那么ConcurrentHashMap的线程安全有什么实际意义?
  14. 线程有哪些状态?
  15. 哪个API可以将线程从就绪状态转换为运行状态?(我回答了start,实际上是initial转就绪,面试官说是run方法,我感到自信受挫)
  16. 哪个API使线程从运行状态变为阻塞状态?
  17. 如何唤醒线程?notify与notifyAll有何区别?
  18. sleep与wait的区别是什么?start与run之间又有什么差异?
  19. 双向链表有哪些类?(我提到了linkedHashMap,面试官说这是单向的,我质疑他是否听错了,AQS也有使用,但不清楚当时因紧张是否忘词)
  20. 你擅长哪些技术栈?我对Spring没什么好说的,只能说它是一个框架。(我并没有真正擅长的,可以说Spring和SpringBoot熟悉)
  21. SpringBoot相较于Spring有哪些区别?
  22. 事务在Spring中的实现。
  23. 事务失效的场景。
  24. 请说明ORM框架中MyBatis的缓存机制。(对此我并不了解)
  25. spring-core的核心组件是什么?(我没有研究过)
  26. 解释MVCC。