2021-01-10 15:03:58
京东零售社招Java一面面经总结如下:
一、面试流程与问题概述面试岗位为京东-达达的Java后端开发,面试流程包含自我介绍、项目介绍及技术问题问答,整体氛围轻松,面试官态度友好。技术问题覆盖JVM、数据冲突解决、JDK特性、HashMap原理、索引优化、ES查询优化及线程池使用等核心Java后端知识点。
二、具体问题及解答思路1. 代码上线导致JVM重启,缓存中数据丢失时怎么处理?若桶为空,直接插入新节点。
若桶非空(链表或红黑树),遍历链表或树,根据equals()方法判断是否覆盖已有值,否则添加到链表尾部或树中。
查询WHERE A=1 AND B=2可命中索引。
查询WHERE B=2无法命中索引,因缺少最左列A。
游标分页(Scroll):适用于大数据量导出,保持游标上下文,但无法跳页。
搜索后分页(Search After):基于上一页最后一条记录的排序字段值进行分页,支持实时数据。
业务优化:限制最大页数或改用“上一页/下一页”导航,避免用户直接跳转至深页。
合理设计字段类型(如keyword替代text用于精确匹配)。
使用分词器(如IK)提高中文搜索准确性。
避免wildcard查询,改用match或term查询。
使用bool查询组合多个条件,减少嵌套查询。
corePoolSize:核心线程数。
maximumPoolSize:最大线程数。
keepAliveTime:空闲线程存活时间。
workQueue:任务队列(如LinkedBlockingQueue)。
复习JVM、集合类、并发编程等核心知识点。
梳理项目中的技术难点及解决方案(如缓存策略、分布式锁)。
熟悉ES、MySQL等中间件的优化技巧。
练习手写代码(如HashMap的put逻辑、乐观锁实现)。