有见过上来就写一个完整的线程池的吗?面试官一张嘴我差点尿了Q1:前面两个面试官已经提问了项目,咱们直接写一道题吧,线程池,不会c++可以用你会的语言。。。。PS:shit30min later。。。Q2:java21中的虚拟线程应用到你的项目中会有什么变化?PS:holy shit,前面java21没听清,就听到个虚拟线程,我没听这个概念,我人都傻了A:sorry面试官,我没有思考过这个问题。。。Q3:如果Redis的Pub/Sub因为某些原因没有传递到,你的caffeine会不会被读取到过期数据A:设计了很短的过期时间 + 引入消息队列重试机制Q4:如果Redission分布式锁的持有者宕机,看门狗没有续期,10000个QPS会全部达到DB上吗A:不会,因为锁无人持有,会有一个线程抢到锁,其他线程阻塞,等待会写,所以只有一个线程能到DB。PS:不知道为啥我说完又问了我一遍,感觉没说错啊,我就说的更详细了一点。。Q5:你试用Canal监听binlog实现ES和MySQL的一致性,如果Canal因为MySQL的Update太多导致Canal同步跟不上怎么办A:只想到了把Canal监听binlog的方式改为row,加速读取,然后对MySQL进行取舍(因为我问了下,MySQL主从是否一致,面试官说可能不一致),因为MYSQL主从同步有四个策略,当选择超半数同意才接受的方案时,如果Update操作太多,那么直接拒绝。还有考虑数据库分库分表,分担压力,避免所有更新请求打到少数数据库上。只想到这么多,前者回答的肯定不够,但是对Canal了解不多,没招了Q6:了解aqs吗,怎么实现一个ReentrantlockA:内部类继承aqs,针对state,队列进行设计实现公平锁或非公平锁,重写tryAccique和tryRelease,对外暴露接口Q7:你项目几个人做的,都是实验室项目吗?Q8:反问环节A:多久出结果,核心业务是什么,还有技术面吗?PS:一周内出结果,后面是hr面,业务关于支付等等没注意听,实习两个月之后有技术面本牛子0实习,bg:29,希望能通过吧。这是最后一个面试了,前面全挂了,牛友们可以看看我的其他帖子,分享了一些比较难的面经,真难绷