面试复盘 | 转转Java后端一二三面

转转的面试体验总体来说还是不错的,面试官比较友善,流程也比较快,第一次约面还会打电话跟你确认面试时间,后面的话基本在三天内会有下一面的邮件。

9.14 一面(35min)

一面面试官简单了解了下项目之后,就开始问基础的东西了。

  1. HTTP的状态码都有哪些,499、503/502/504知道吗

    说了常见的20x、30x、40x之后,面试官突然问了499,可我怎么也想不到有学过这个状态码,只能说不知道。后面查了之后,发现499是Nginx的一个状态码,意思是“client has closed connection”,原因可能是因为服务器端处理的时间过长,导致客户端主动关闭了。
    502=>作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
    503=>(学校的网站经常出现这个。。)由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。注意:503 状态码的存在并不意味着服务器在过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接。
    504=>作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI 标识出的服务器,例如 HTTP、FTP、LDAP)或者辅助服务器(例如 DNS)收到响应。

  2. 说一下java的内存回收算法

    扯了新生代和老年代的标记复制和标记整理;以及CMS的收集过程,提了一嘴使用增量更新的方式来解决“对象消失”的问题,果然面试官问了下面那个问题

  3. 说一下并发标记过程的三色标记法,说下你知道的G1以及G1是使用哪种算法来修复标记变动(原始快照)

    答案在《深入理解JVM》,里面的图示画的很清晰,但最好自己提炼总结一下

  4. MySQL的索引底层数据结构

  5. InnoDB和Mysiam的区别

  6. MySQL的ACID实现原理

  7. Redis的数据结构和实现方式

    说了五种基本数据结构string/list/set/zset/map。再说了压缩列表是list和map的实现方式之一,而zset会使用跳表来使得插入元素能按照score有序存放,同时使用map来保存value和score的映射。

  8. 对CAP的理解,说下AP和CP

  9. Nacos支持CP吗

    不知道,因为一直认为服务注册中心应当是AP的,所以没太关注CP相关的组件。。查了之后发现Nacos可以通过配置文件切换AP和CP模式,默认是AP。但是Nacos的CP并不是严格的,因为当集群中的leader节点更新完本地的服务实例数据之后,会把数据同步到集群中的其它节点。而在这个过程当中,集群中的所有节点都是能够提供查询请求的,所以在数据没有同步完全之前,向不同的服务器发送查询请求,可能会得到不同的服务实例列表。

  10. 写一下快排,说下冒泡和选择排序的区别

  11. 了解哪些设计模式,写一下单例模式

二面(35min)

二面面试官从发量看得出是个大佬,问项目的内容多一些,主要还是围绕项目相关的技术栈项目因人而异,就不写出来了。

  1. 讲讲项目难点。实习感觉和学校做项目有什么不同。为什么采用这种解决方案。

  2. 如果判断一个整数是2的n次方?

    感觉面试官想考察你的想象力。我回答了位运算的解法(n & (n-1))后,面试官说不考虑效率的话,还有什么其他解法。 因为面试官说数是一个int类型,所以我们可以建一个bitmap,用来存储所有0~2^31-1的正整数,所需内存大小是256M,提前把对应的所有的2的n次方的位置置为1。最后我们再到bitmap中找到要判断的这个数的所在位置,如果为1,则说明是2的n次方。

  3. 8个人,一次比赛只能有两个人,比赛结果具有传递性,即A赢B,B赢C,那A赢C,要得到前2名需要的最少比赛次数。

    一开始当成赛马问题的变种去做,后来面试官提示,才知道可以看成求前k个数,所以时间复杂度是O(n * log K)。那最理想的情况就是进行一轮切分就行了,所以我当时回答是7次。欢迎评论区大佬指正。

  4. http是客户端还是服务端主动关闭连接?

    如果没开启Keep-Alive,那么服务端在传输完一次请求的数据后会主动关闭。开启了的话,保持连接的时间长短是由服务端的配置决定,通常配置都是在几十秒左右。所以应该是服务端主动关闭的?

  5. http是在TCP还是HTTP保持长连接的

    这个问题不知道如何回答比较好。个人觉得因为HTTP长连接本质是连接复用,服务端不会主动关闭TCP连接,那么TCP连接就需要保活,而TCP保活应该依赖于TCP的Keep-Alive机制,所以应当是在TCP层保持长连接?

HR面

HR问了一些比赛、学校的个人经历,实习经历的收获呀等等。HR姐姐会认真听你回答,在你说话时一直有反馈,体验良好。
PS:HR面完隔天就收到面试通过的短信,效率点赞

讨论

想和大家讨论下

  1. http是客户端还是服务端主动关闭连接?
  2. http是在TCP还是HTTP保持长连接的?

总结

转转的面试问题想要回答好也并不容易,面试官会根据你回答的点再去延展提问。同时就个人的最近一些面试经历发现,中小厂的一面大多时候是考察你的计算机基础,二面才会对你的项目深挖和问一些智力题。如果笔试表现不好,可能还会在面试中送你多几道题,所以在基础八股文这块还是要好好去掌握的。

#面试复盘##面经##转转##Java#
全部评论
二面和楼主问题一样😂一个面试官估计
点赞 回复 分享
发布于 2021-10-12 22:44
兄弟,你是今天面完hr?你现在的应聘状态是什么?
点赞 回复 分享
发布于 2021-10-12 22:27

相关推荐

📍面试公司:转转🕐面试时间: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. 最长连续子序列算法🙌面试感想:这场面是很考广度,每次问完一个技术实现之后,就问你有没有其他的实现方式之间的对比,是怎么样的?你会怎么选择类似这种?感觉比较考量,你日常学习过程当中有没有去做过技术选型的对比,但是还好问的东西,我基本上都答出来了,然后第二天就约二面了
发面经攒人品
点赞 评论 收藏
分享
一、基础与中间件Q1:线程池的参数一般怎么设置?依据是什么?A:主要看任务是 IO 密集型还是 CPU 密集型。IO 密集型可设核心线程数为 2N(N 为 CPU 核数),CPU 密集型设为 N+1;最大线程数和队列长度根据业务负载调整,拒绝策略按场景选择(如丢弃或由提交线程执行)。✅ 思路正确,但未明确“N 是 CPU 核数”,且拒绝策略表述可更规范。Q2:G1 垃圾回收器的设计原理是什么?A:先初始标记 root 对象,再并发标记,然后重新标记修正,最后回收被标记对象。优化可调大堆内存减少 GC 频率。⚠️ 流程大致对,但未提 G1 核心机制(Region 分区、Remembered Set、Mixed GC),术语不够准确。Q3:MySQL 可重复读(RR)下如何避免幻读?A:InnoDB 通过 MVCC 和加锁机制防止幻读。✅ 方向正确,但未说明具体是 Next-Key Lock(记录锁 + 间隙锁) 实现。Q4:SQL 走了索引还是很慢,怎么优化?A:先看执行计划是否真走索引(避免隐式转换、最左匹配失效);若数据量大,考虑分库分表;还可加缓存,用消息队列更新缓存。✅ 思路完整,覆盖排查 → 架构 → 缓存三层优化。Q5:如何保证缓存(Redis)和数据库的一致性?A:更新数据库后删除缓存;读时若缓存为空,再查 DB 并回填。实习中也用过“写 DB 后更新缓存”。⚠️ 未明确推荐方案是 “先更新 DB,再删缓存”(Cache-Aside 模式),后者易引发脏读。Q6:Redis 缓存雪崩怎么解决?A:给缓存设置随机过期时间;热点 key 更新时加锁,只让一个线程重建缓存,其他等待。✅ 回答清晰,覆盖主流方案(过期打散 + 互斥重建)。Q7:Kafka 如何保证消息不丢失、不重复消费?A:不丢:靠副本机制和磁盘持久化(默认保留 7 天);不重:业务层做幂等,比如用达人 ID 去重。✅ 工程实践优秀,结合 Kafka 特性与业务兜底。Q8:Spring AOP 如何实现方法耗时统计?A:自定义注解,在切面中记录方法执行前后时间,计算差值。✅ 完全正确,简洁实用。二、项目与实习Q9:请讲一段你实习中做得比较关键的项目。Q10:项目中有用到事务吗?如何保证一致性?三、AI 与开放设计Q11:MCP 是什么?A:MCP 是一种协议,统一封装 AI 调用外部工具的能力(如查天气),类似 USB 接口,便于插拔扩展。✅ 理解准确,类比形象。Q12:如果让你用 AI 优化教务系统,你会怎么做?A:针对教师排课,AI 可自动分析课程依赖关系,生成多套排课方案并给出推荐理由,减轻老师负担。✅ 抓住核心痛点(排课复杂),有业务思考;可补充更多场景(如智能选课、毕业审核自动化)。四、行为与规划Q13:你未来的职业规划是什么?A:坚定走后端方向,前期深耕业务与技术栈,后期考虑往技术深度或管理发展。✅ 方向清晰;⚠️ 可更具体(如“希望深入分布式系统或云原生架构”)。Q14:你有什么想问我们的?A:询问部门具体负责哪个产品(学习通/学工/教务/校园信息化),以及校招流程。✅ 体现主动性和岗位关注。
查看14道真题和解析
点赞 评论 收藏
分享
评论
1
20
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务