转转

收藏
消费生活
1000-9999人
A轮
北京
查看官网
上传简历
职位类型
全部
后端开发
产品
最新
热门
📍面试公司:转转🕐面试时间:03/05💻面试岗位:JAVA后端开发❓面试问题:1. 做一个简单的自我介绍(包含学校、技术栈、实习经历、项目职责)。2. 礼物连击场景中,两步操作是否需要保证原子性?为什么?具体怎么设计连击窗口?3. Redis Pipeline 的底层原理是什么?在项目中具体用来解决什么问题?用了哪些函数?4. 除了 Redis Pipeline,还有哪些方式可以实现命令批处理?5. Redis 和 MySQL 之间如何保证数据一致性?讲一下具体方案。6. 为什么推荐先删缓存再更新数据库,而不是先更新数据库再删缓存,也不直接更新缓存?7. 更新缓存会有什么问题?8. 项目中用到 2PC 分布式事务,性能怎么样?9. 该业务场景为什么必须要强一致性,而不是最终一致性?10. 除了 2PC,还有哪些分布式事务方案?(3PC、TCC、本地消息表、MQ 最终一致性等)11. 为什么在项目中选择 2PC,而不是其他分布式事务方案?12. 如何用责任链 + 本地缓存减少 50% 重复 RPC 调用?具体怎么做的?13. 为什么不直接把查询结果放到上下文传递,而要使用本地缓存?14. 异步线程池查询的参数是怎么设置的?依据是什么?15. 如果使用原生线程池,核心参数如何合理设置?16. 用 Java 原生线程池异步调用多服务,其中部分服务超时、异常,该如何处理?17. 为什么订单反查用本地缓存,而不用 Redis?18. Caffeine 和 Guava Cache 有什么区别?19. 项目中用到状态机框架,如果让你手写一个简单状态机,会用哪些设计模式?如何设计?20. 算法题:实现字符串转整数(只保留数字,处理正负号、非法字符、整数溢出,不能使用库函数)。21. 数据库设计题:订单属性表字段经常变动,如何设计表结构实现动态扩展、不修改原表?22. 实习/项目中遇到的最大挑战和复杂度最高的点是什么?如何解决?🙌面试感想:整场面试大约50分钟,主要根据实习经历,然后发散出来了一些八股的底层拷问,我个人觉得只有两个问题回答的不是很好,最后还是挂了,算法题也刷出来了,场景题也给出了三种方案,回想起来也就pipeline管道的底层原理没有说的很好,以及像订单部分超时的处理方式没有说到位(是跟我实习项目来的,我觉得我这个项目不会出现对应的情况,但是还是硬着头皮往下说了)除此之外,大部分问题回答的都还算比较饱满只能说好好复盘,不知道这后面还有没有机会
查看22道真题和解析
点赞 评论 收藏
分享
📍面试公司:转转🕐面试时间:03/02💻面试岗位:java后端开发❓面试问题:1. 直接引用和间接引用2. 2PC 的思想3. 分布式系统中分布式事务其他实现思路4. 分布式锁的实现方案5. Zookeeper 了解吗6. Zookeeper 如何做续期和超时释放7. 使用分布式锁还遇到过什么问题8. JVM 几种垃圾回收算法9. JVM 的内存分布是怎么样10. 会发生 OOM 的区域有哪些,举一下相应的发生场景11. 程序计数器为什么不会发生溢出12. CMS 和 G1 回收过程以及区别13. 双亲委派机制,如何破坏双亲委派14. JVM 常见调优参数及设定标准15. 类加载过程16. 线程池为什么比多线程好用17. 线程池任务提交后线程执行过程18. 连接池关闭后线程池任务会怎么样19. 如何设定线程池参数20. synchronized 和 ReentrantLock 的区别21. 详细讲一下 synchronized 的锁升级过程22. 简单介绍一下 AQS 的数据结构23. 开发选择时会选 synchronized 还是 ReentrantLock,为什么24. TCP 三次握手,为什么是三次不是两次25. MySQL 为什么选用 B+ 树26. MySQL 事务是什么,实现原理27. MySQL 隔离级别28. MVCC 是什么29. 索引失效场景30. 聚簇索引和非聚簇索引区别31. 哪个会回表,为什么回表32. 联合索引 ABC,查询 AB 是否回表、是否走索引33. 联合索引 ABC,只查 C 会怎样34. 索引跳跃扫描和索引下推35. ES 为什么快36. ES 深度聚合是什么37. 为什么 MySQL 不用倒排索引38. 订单系统超时未支付设计方案39. 定时任务调度框架对比 Spring 原生调度40. XXL-Job 处理订单超时未支付会有什么问题41. 支付系统涉及微信、支付宝等多种支付方式,如何保证用户同一笔订单只支付一次,防止重复支付42. 手写双重检查锁单例模式43. 最长连续子序列算法🙌面试感想:这场面是很考广度,每次问完一个技术实现之后,就问你有没有其他的实现方式之间的对比,是怎么样的?你会怎么选择类似这种?感觉比较考量,你日常学习过程当中有没有去做过技术选型的对比,但是还好问的东西,我基本上都答出来了,然后第二天就约二面了
发面经攒人品
点赞 评论 收藏
分享
2025-05-13 09:57
北京邮电大学 Java
问题1: 为什么会使用分库分表,到达了什么样的数据级别才会去加设计,是否对数据量有一个统计我的理解:看星哥之前写过 单表行数超 500 万行或者单表容量超过 2GB,推荐分库分表,但是面试的过程中怕被问自己写的项目会有这么大的数据量吗不要这么硬背,具体情况具体分析,有的表字段少,经常是条件等值查询,这样加个索引,一个亿也不用分表,有的字段多,还是范围查询,可能5000万就得分表,面试官问你你说是自己在学习分库分表应用到项目中,自己造了几千万的数据量问题2:基因法需要分表的一个数量和确定的一个东西(我的理解是分表的依据,例如大麦中是订单编号和用户id),但是正常的生产环境中是可能动态改变的,比如说需要动态扩容的话,怎么解决呢(例如当前有4个分表,但是现在需要扩充到8个分表),是使用双写吗?这个在扩容前就要考虑好能维持多少年内不需要再扩容。转转架构师在分库分表前,通过之前记录的数据增长量,做了256张表,能在7年内不需要再扩容,如果需要扩容的话,可以使用双写,新扩容表写的过程中,用新的分库分表算法问题3:如果在防止超卖的过程中,Redis不可用了,怎么解决我的理解:使用Redis集群和主从复制吗?因为Redis宕机的话数据库的数据也不能保证是最新的版本,所以得尽量保证Redis不宕机?肯定要使用redis集群模式,但可能会有主从延迟,导致从节点数据不是最新的,但关系不大。可以在用户生成订单后,修改数据库的座位和库存,然后用户支付后,再改数据库的座位和库存,每一步都做好验证。这样从节点的数据问题会降到最低。问题4:如果在当前的幂等验证逻辑中,有一个消息所对应的幂等标识符是不存在的,按照现有的逻辑是可以执行的,但是幂等验证之后的业务系统异常了,这个时候应该怎么处理呢(即通过了幂等的验证,但是后面的服务down掉了,比如说下游抛了一个异常出来)【没太明白应该回答什么,是指需要将幂等标识符重新进行设置吗】异常了就异常了呗,把这个请求的标识从redis中删除了,就像分布式锁时,业务异常也要执行解锁一样,让下一个请求进来正常执行,然后设置好标识位问题5:本地缓存为什么使用Caffine呢,为啥不用Guava因为caffine的性能要远高于Guava,没有其他复杂原因我的理解:查了下Caffine就是Guava改进而来的,可以这么说吗- Caffine在读写操作方面的性能更高,是基于异步的操作,将淘汰过期操作与读写进行分离- Caffine采用了一种结合 LRU、LFU的算法W-TinyLFU+,具有高命中率,低内存占用的特点
查看5道真题和解析
点赞 评论 收藏
分享
分享我的面试经验
模拟面试
真实面试体验,快速补齐短板
应聘感受
暂无应聘感受
牛客网
牛客网在线编程
牛客网题解
牛客企业服务