秋招京东科技后端一面(含后续)

背景信息:

美团实习,笔试全ak

总结:

15min实习+15min八股(结合简历上的Spring项目),无手撕

(已经意向,后续面经都会更新)

详细:

先自我介绍,然后把重点引到暑期实习上,自然而然的问实习

---实习---

1.给我讲讲你暑期实习着手于的系统,看看你对系统的理解

答:略(因人而异)

2.讲讲你实习中遇到的最大的技术挑战?

答:略(因人而异)

---八股---

3.那在美团的实习里,你主要用了哪些Java或Spring的技术你觉得有些技术深度的,咱们可以详细聊聊

答:我在这里通过一个需求说了Java中的LiteFlow,感兴趣的兄弟可以去查查看;

4.那这个LiteFlow的使用,是不是涉及到Java的设计模式,可不可以讲一下

答:LiteFlow的使用类似于设计模式中的责任链模式,将各个阶段的业务流程解耦,新增只需要写新代码插入到链中,修改特定业务流程也只需要改特定代码,符合开闭原则,便于后续维护;

5.明白了,那你对Spring AOP应该比较了解(简历上有项目),能详细说下吗?

答:AOP就是面向切面编程,可以看做把我们的核心业务代码环切,在运行前、运行时、或者运行后于切面织入特定通用逻辑功能,可以把核心业务代码和一些通用代码解耦,通过AOP在运行时织入程序中,减少对业务核心代码的侵入性,比如一些日志管理和事务管理等的通用功能代码都可以通过AOP织入;我最近在学习Spring AI,其中也通过AOP实现运行前织入,实现携带前后文同大模型交互;Spring AOP的实现依赖的是代理模式,通过原生JDK动态代理或CGLIB代理在运行时进行逻辑织入;

6.那AOP中有哪些核心概念?

答:Pointcut,比如我之前说的运行前、运行时、运行后,定义应该在程序的哪个运行点织入;Advice,即我在织入点织入的具体逻辑;Aspect,是pointcut和advice的结合体,表示一个横切关注的点;

7.那我再问一下关于Spring Bean的生命周期管理是怎样的?

答:第一个是定义阶段,比如我那个项目中,就要先通过BeanDefination先定义好相关的类名属性以及构造器依赖等;第二步是创建阶段,通过set注入或构造器注入去创建该Bean的实例;第三步是初始化阶段,通过定义阶段定义好的初始化方法,对Bean进行相关的注入完成初始化;第四个阶段就是Bean使用完成后的销毁阶段,如果定义了相关销毁方法,在销毁时也会执行;

8.创建一个Java对象,他在JVM里整个生命周期会经历几个区域?

答:首先这个Java类的类信息会存储在方法区上;该对象创建在堆上,如果按垃圾回收分代算法的角度来看,还会存在于堆上的新生代区或老年区;如果他被某些方法引用,栈中会有相关指针指向该对象;

9.那现在假设有这么一种情况,你运行的这个服务,机器的CPU和内存都飙高了,你会怎么去排查?

答:首先每个服务应该都会有相应的日志和埋点,我会先排查日志,检查哪里出现的异常日志最多,定位问题的源头;如果排查日志找不到问题,排查JVM,看看堆上是不是频繁的GC导致内存飙高,排查栈中是不是有线程死循环或阻塞导致CPU飙高;

10.最后一个技术问题,数据库中有一种叫回表查询,什么是回表查询,如何避免?

答:数据库的索引结构,数据都是存储在一级索引的B+树下,而二级索引里面存储的是一级索引,使用二级索引进行查询,就要查到一级索引后再去查数据,就叫回表查询;为了避免回表造成额外的IO开销,可以编制索引时使用覆盖索引,或者查询时优化查询的SQL;

---反问---

11.问了业务组具体做的业务

#后端##面经##京东##发面经攒人品#
全部评论

相关推荐

评论
5
5
分享

创作者周榜

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