面试题

129 阅读4分钟

1.Spring Boot启动过程?

2.JVM内存模型分哪几个区?

  • 栈内存:栈内存存在于方法体中,定义的那些变量什么的都是栈内存,方法结束就没了,
  • 堆内存:堆内存则是使用new关键字申请出来的,堆也是垃圾收集(GC)的主阵地,空间分配:Eden空间,From Survivor空间和To Survivor空间。由于虚拟机实现了自动垃圾收集,所以在Java中,堆中new出的对象是不需要手动释放的。可以通过-Xmx-Xms控制堆的默认大小,如果在堆中再也申请不到内存,则会抛出OutOfMemoryError异常。

3.JVM内存回收发生在哪里?

SQL慢查询如何优化?

redis数据类型有哪些?

set和zset有什么区别?如何实现有序?

项目中如何实现多线程?

mysql和oracle的索引是如何实现的?

B+tree和btree的区别?

说一下对空间和栈空间?

hashmap的初识容量

讲一下hashmap的底层实现原理?

线上故障cpu使用率高如何解决?

什么是链表?

java如何实现链表?

java线程池如何创建?

  • 线程池中线程的使用率提升,减少对象的创建、销毁;
  • 线程池可以控制线程数,有效的提升服务器的使用资源,避免由于资源不足而发生宕机等问题;
  • 使用Executor,为ExcutorService,ScheduleExecutorService,Threadfacotryhe Callable类提供了一些工具方法。用于方便创建线程池。 1、newCachedThreadPool

创建一个线程池,如果线程池中的线程数量过大,它可以有效的回收多余的线程,如果线程数不足,那么它可以创建新的线程。

  • 不足:这种方式虽然可以根据业务场景自动的扩展线程数来处理我们的业务,但是最多需要多少个线程同时处理缺是我们无法控制的;
  • 优点:如果当第二个任务开始,第一个任务已经执行结束,那么第二个任务会复用第一个任务创建的线程,并不会重新创建新的线程,提高了线程的复用率; 2、newFixedThreadPool

这种方式可以指定线程池中的线程数。举个栗子,如果一间澡堂子最大只能容纳20个人同时洗澡,那么后面来的人只能在外面排队等待。如果硬往里冲,那么只会出现一种情景,摩擦摩擦...

  • 优点:两个结果综合说明,newFixedThreadPool的线程数是可以进行控制的,因此我们可以通过控制最大线程来使我们的服务器打到最大的使用率,同事又可以保证及时流量突然增大也不会占用服务器过多的资源。 3、newScheduledThreadPool

该线程池支持定时,以及周期性的任务执行,我们可以延迟任务的执行时间,也可以设置一个周期性的时间让任务重复执行。 该线程池中有以下两种延迟的方法。

4、newSingleThreadExecutor

这是一个单线程池,至始至终都由一个线程来执行。

java创建线程池有几个参数?

http三次握手四次挥手

https如何实现加密?

spring aop如何实现?

项目中用到了什么设计模式,举例说明?

说一下冒泡排序?

两个for循环的冒泡排序时间复杂度是?

1. 下面哪些语句是错误的:

A.  int a[][]=new int[][3];  

B.  int a[][]={{1,2},{1,2,3},{2,3}};  

C.  String s[][]=new String[2][];  

D.  String s[][]={{"abc","d"},{"","dd"}};

 

2. 下面哪些是合法的变量名?

A. $persons   B. TwoUsers   C. *point   D. this   E. _endline

 

3. 写一个你认为比较完美的Singleton

 

4. 某个类有两个重载方法:void m(double d)和void m(Integer i),那么m(1)会调用哪个方法?为什么?

请在下方写出答案及原因:

 

 

5. 题目:数据库中有一张如下所示的表,表名为sales。

年    季度 销售量

1991 1     11

1991 2     12

1991 3     13

1991 4     14

1992 1     21

1992 2     22

1992 3     23

1992 4     24

 

要求:写一个SQL语句查询出如下所示的结果:

年  一季度 二季度 三季度 四季度

1991 11   12    13     14

1992 21   22    23     24

 

请在下方写出SQL:

 

 

6. 生产环境java进程占用cpu、内存较高,如何定位问题?