【面经】5月16日 京东/平台运营与营销中心/一面/1h
自我介绍
项目:
有用到线程池吗?
自己实现的还是用已有的?
MySQL 和 Redis 的数据一致性的问题如何解决? 你的项目里有遇到这个问题吗?又是如何解决的?(Redis 单节点挂掉;重启脚本、Redis 集群哨兵机制)
统计 PV、UV 的时候,设计 key 的时候是怎么设计的呢?
如果一天访问的用户特别多,导致 Redis 中的存储的值太大了,你会怎么办呢?(大 key 问题,导致单线程阻塞。解决方案:用其他的数据结构,比如 bitmap、hyperloglog;大 key 拆成小 key)
项目中你遇到的比较棘手的问题,你如何解决的?现在回过头再去看,你觉得有什么可以优化的地方?(团队沟通:开会、需求对其;技术设计:前期技术调研、文档撰写)
Java:
如果让你实现一个线程池,你会怎么实现?(在我不知道线程池实现的情况下,有几个参数,线程数、阻塞队列、拒绝策略、异常处理)
哪些情况下会选择用线程池?(多任务并行执行、系统并发量较高)
线程池是多进程还是单进程?
核心线程数、最大线程数这些参数,你觉得从哪些角度去考虑这些参数选择的合理性?(CPU 密集任务、IO 密集任务、IO 操作时间长度)
面向对象几个基本特性?
一个接口能继承多个接口吗?
final 关键字修饰类,这个类有什么特点呢?
final 修饰变量,但这个变量是一个类对象,我能修改对象里面的字段吗?
MySQL:
你用到了哪些数据库?
加索引会从哪些方面考虑呢?(哪些字段要加索引、字段合不合适加索引、加什么类型的索引(单索引、联合索引))
看你写了 SQL 优化手段,能不能结合项目讲一个实际的 case?(单次提交 -> 批量提交)
批量提交的时效性你这里有考虑过吗?(数量 + 周期,结合起来考虑)
这个批量的数据放到哪里呢?缓存还是 JVM 里?(缓存)
如果宕机了,数据丢失了怎么办?(redis 持久化 + 重启脚本)
插入的数据出现了问题,比如唯一键问题,这就会导致插入的时候没及时给到用户反馈。你会怎么处理呢?也就是你怎么考虑这个容错性呢?(返回完成、异步执行而不是反馈成功;幂等校验;重试 + 超时快速失败,让用户重新操作一次)
Redis:
Redis 是单线程还是多线程呢?还是说单进程还是多进程呢?
反问:
部门现在就确定了呢?还是进去才确定呢?
业务是什么?(主要做广告)
总结:比较少的没有问项目难点的,直接就是八股,然后后面慢慢地问项目。特点是,会针对一个点深挖。
#京东##实习##面经#2025届实习&秋招面经