校招面经-京东Java后端二面

1、Java面向对象具有封装、继承、多态三大核心特性。封装通过访问修饰符隐藏对象内部细节,仅暴露必要接口;继承允许子类复用父类属性和方法,实现代码复用和层次化扩展;多态分为编译时重载和运行时重写,使程序能够通过统一接口处理不同对象,提升灵活性和可扩展性。
2、重载发生在同一类中,方法名相同但参数列表不同,与返回值和访问修饰符无关,编译时绑定;重写是子类覆盖父类方法,方法名、参数列表和返回类型必须相同,访问权限不能更严格,不能抛出新的检查异常,运行时动态绑定。
3、线程池核心参数包括:核心线程数、最大线程数、空闲存活时间、时间单位、阻塞队列、线程工厂、拒绝策略。ThreadLocal底层使用ThreadLocalMap存储数据,其Key是弱引用的ThreadLocal对象,Value是强引用的实际存储值,每个线程独立拥有此Map实现数据隔离,需注意内存泄漏问题。
4、使用线程池实现1~100累加时,首先创建固定大小的线程池,然后将累加任务拆分为多个子任务,通过线程池提交实现了Callable接口的每个子任务,收集返回的Future对象后,遍历这些Future并累加其阻塞获取的中间结果,最终关闭线程池并输出总和。整个过程利用线程池并行处理子任务,通过分治策略提升计算效率,同时确保资源合理回收。
5、B+树非叶子节点仅存储键,叶子节点包含全部数据且形成有序链表。相比B树:1. 查询更稳定:所有数据都在叶子节点,查询路径长度一致;2. 范围查询高效:叶子节点链表直接遍历,无需回溯;3. 磁盘I/O更低:节点存储更多键,树更矮胖;4. 全表扫描更快:叶子节点链表顺序遍历即可。
6、失效场景:1. 违反最左前缀原则;2. 对索引列使用函数或表达式;3. 类型隐式转换;4. 模糊查询以通配符开头;5. OR条件包含非索引列。优化方法:1. 按高频查询顺序建联合索引;2. 避免索引列运算;3. 用覆盖索引减少回表;4. 数据量大时用分区表;5. 定期分析索引使用率并删除冗余索引。
7、通过EXPLAIN命令查看SQL执行计划,关注key字段显示使用的索引名,type字段为ref/range表示有效索引扫描;若为ALL则是全表扫描。额外检查Extra字段:Using index、Using filesort
全部评论

相关推荐

01-08 16:25
门头沟学院 Java
1、实习介绍2、介绍-下HashMap。(扩容机制、寻址、为什么扩容是二倍)。3、如果说当前有1000个k-v结构数据放入HashMap中,最终HashMap中是什么情况。(数组桶2048个)4、HashMap线程安全吗?哪些是线程安全的hash结构?5、介绍一下concurrentHashMap线程安全实现的原理?(1.8之前、之后)6、list和set集合的区别?7、对list遍历想到几种遍历方式?(按下标、语法糖:、选代器)ĩ降最.8、如果对于list中的元素遍历过程中进行删除满足一些条件的元素,你会怎么做?9、线程池的有几个参数?10、线程池的拒绝策略?默认的是哪种?11、线程池的线程工厂有哪几种?默认的是哪种?12、三个线程顺序打印a,b,c,有哪几种方式实现?13、MySQL的分库分表有哪些方式?如何分库?主键设置?路由id?14、MySQL集群的搭建方式?(答了主从同步,binglog、relaylog、哨兵模式)15、redis主库挂了之后无法承接写操作,这期间的写操作的有效性和一致性如何来保证?16、对于索引来说,字段的选择,组合索引的使用。(答重复度小的,联合索引的部分失效)17、组合索引支持范围查询吗?三个字段第二个字段是时间字段,时间字段进行范围查询会生效吗?18、从持久缓存中把数据加载到redts中的加载策略,如果让你来设计你有什么思路。19、redis中分布式锁的实现?(黑马点评开始吟唱)20、OLAP和OATP了解过吗?(???)21、事务了解过吗?这是本地事务,分布式事务了解过吗?22、事务如何开启?23、在A方法上调用B方法,B方法上使用了transaction注解,B中的事务会生效吗?24、介绍一下单例模式?(答spring的bean默认单例,比较prototype状态是非单例的)25、spring中用到的设计模式?26、消息队列有用过吗?知道是干什么的吗?(了解过,知道有kafka、mq,举例点评里面的秒杀优化)手撕:5.最长回文子串
查看25道真题和解析
点赞 评论 收藏
分享
评论
1
11
分享

创作者周榜

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