自我介绍
你刚刚提到你有学习过Spring、SpringMVC也用过SpringBoot和SpringCloud,请你详细的说一说他们之间的关联和区别以及一些核心思想?从IoC和AOP的背景和使用场景聊起,到MVC的出现背景再到SpringBoot的出现提供了哪些便利的内容,最后提到对分布式和微服务的理解以及boot对它们的整合。
你有提到关于使用Spring框架的一个注解,那你知道了解事物一般使用什么注解吗?Transactional(这个是真的问的多,建议好好看看)。
嗯,有了解过事物注解失效的场景吗,或者说你们在项目开发的过程中是否有遇到这个场景?有的,A类里面的B方法加了注解,C方法没有加注解但是内部调用了B方法,那么从外部调用C方法的时候就会出现注解失效。
是的,那你能说一说为什么会失效吗,或者换个说法就是它的一个底层原理是什么?其实和Spring对注解的一个识别机制有关,Transactional注解其实是基于AOP实现的,对于动态代理对象来说,如果直接去调用没有注解的C方法那么不会去调用动态代理对象而是会直接使用未增强的一个对象,所以默认不会开启事务。
再说一说Spring中一个Bean的生命周期是怎么样的呢?经典背诵。
看你对锁有所了解,你说一说Java中常见的一些锁有哪些吧?synchronized、reentrantlock、cas机制还有JUC库下面的若干个常见类。
可能有点笼统,你能详细地讲一讲你提到的这些内容吗?我把synchronized和reentrantlock的基本原理和一个使用场景详细讲了一下。
看你在项目中担任负责人,项目一般都是几个人一起做的呢?4个,两个前端两个后端(屡试不爽)。
比赛项目完成之后是否会继续发布上线进行维护和运营呢?不会。
你在项目里团队协作使用的到什么工具呢?Git。
那你了解过Git的分支吗?略有了解,我们的项目其实都是在一个分支上进行开发的,不过我自己在做UCB CS162的操作系统Lab开发的时候其实有用过分支来做。
恩恩,那你设想一下现在有不同的人,然后他们各自负责不同的模块,但是互相之间又有一些代码模块上的依赖,你觉得最好的一个解决方案是什么呢?从Interface的概念开始讲起,聊到利用接口进行开发,先规定好规范而不是写具体的业务逻辑代码。
我们确实也是这么做的,不过其实还有一些问题(我记不得了),你既然是学Java的那应该会了解JVM吧?了解一些。
聊一聊OOM异常?从堆开始讲起。
堆的一个OOM其实几乎每个人都知道,你能否提供一下其他方面的呢?Emm不太清楚。
提示一下就是MetaSpace了解吗?哦,这里面其实在JDK1.8之后里面永久代已经被改为元空间了,这部分的内存默认是使用的目前主机的内存最大值,理论上来说是否OOM取决于里面存的内容。
嗯是的,你能说一说里面存储了那些内容吗?关于类的一些信息(其实具体的有点记不清了,到时候需要补一补)和运行时常量池。
对,那你能想到元空间数据溢出的情况吗?项目里面的用到的类实在是太多了,或者说运行时常量池常量没有被及时回收。
前面那个情况有可能发生但是概率不大,后面的情况几乎不太可能发生,虽然都是合理的,不过更常见的是会出现在类加载的环节,是否了解类加载器呢?ClassLoader类加载的基本流程讲了一下双亲委派机制讲了一下。
嗯其实OOM就是类加载的时候可能会产生的问题,你可以回去看一下,今天的问题大概就这么多,你有什么想问的吗?反问环节。
11.11 Update:其实还有一个算法题,就是给出一个链表和一个k,每k个节点完成一次链表反转,卡了一会,花了十分钟才写出来;接到二面通知了
#java##后端##实习#