2019秋招提前批面经|三七互娱Java服务端

有没有人在啊,想请分析下,2019秋招提前批面经|三七互娱Java服务端
最新回答
笑忘书

2026-10-18 05:23:14

三七互娱2019秋招提前批Java服务端面经核心内容总结如下:

  • 面试整体体验面试氛围轻松,面试官友好,全程以交流形式展开,多次出现互动笑声。面试前公司会提前通知安排,体验较好。

  • 技术问题覆盖范围及回答要点

    秒杀系统与SQL优化

    优化SQL执行顺序的常见方法:调整查询条件顺序、减少全表扫描、合理使用索引(如覆盖索引)、避免索引失效(如避免在索引列上使用函数或运算)。

    优化目的:减少数据库资源消耗(CPU、IO)、提升查询效率、降低响应时间,尤其在秒杀场景下需应对高并发请求。

    多线程与线程池

    线程创建的三种方式:继承Thread类、实现Runnable接口、通过Callable+FutureTask(可获取返回值)。

    创建可取消线程的方法:通过标志位(如volatile变量)控制线程执行逻辑,或使用Future.cancel(true)中断线程。

    线程池核心线程数确定原则:

    CPU密集型任务:核心线程数 = CPU核心数 + 1(减少线程切换开销)。

    IO密集型任务:核心线程数 = CPU核心数 × 2(利用线程等待IO的时间处理其他任务)。

    线程死锁原因:互斥条件、持有并等待、不可抢占、循环等待同时满足。

    字符串处理类

    StringBuilder与StringBuffer区别:

    StringBuffer线程安全(方法加synchronized),性能较低;StringBuilder非线程安全,性能更高。

    使用场景:单线程高频操作字符串用StringBuilder,多线程环境用StringBuffer。

    垃圾回收算法

    常见算法:复制算法、标记-清除、标记-整理。

    新生代垃圾回收算法:清除-复制(原因:新生代对象存活率低,复制算法效率高,且可避免内存碎片)。

    MySQL事务与隔离机制

    事务特性:ACID(原子性、一致性、隔离性、持久性)。

    隔离级别:读未提交、读已提交、可重复读、串行化(需说明不同级别下的问题,如脏读、不可重复读、幻读)。

    Python爬虫相关(根据简历提问)

    URL去重方案:

    小规模数据:使用Set集合。

    亿级数据:布隆过滤器(允许小概率误判,节省内存)。

    反爬策略:代理IP池、验证码识别(如极验)、请求头模拟、控制爬取频率。

  • 面试技巧与建议

    沟通技巧:面试是双向交流,需理解面试官问题意图,避免答非所问。例如,回答URL去重时,需根据数据规模动态调整方案(从Set到布隆过滤器)。

    心态调整:将每次面试视为复习机会,保持轻松状态,即使遇到不熟悉的问题也可坦诚交流。

    知识延伸:部分问题需结合实际场景(如秒杀系统优化),需体现对技术原理的深入理解,而非单纯背诵概念。

  • 其他细节

    面试官未提问Redis相关内容,作者略感遗憾,但整体面试体验积极。

    强调对技术社区资源(如牛客网、左神课程)的感谢,体现持续学习意识。