一面
1.反射你有了解吗?讲一下你的理解?
答:反射是java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。三种方式来获取Class对象:a.使用Class类的forName静态方法。b.直接获取某一个对象的Class。c.调用某个对象的getClass方法。
2.Java内存模型你知道吗?
答:一共分为方法区、堆、虚拟机栈、本地方法栈、程序计数器五个
1).方法区为线程共享区域主要存储虚拟机加载的类信息、常量、静态变量
2).堆区为线程共享区域存对象
3).虚拟机栈线程私有区域用于存局部变量表、操作数栈、动态链接等
4).本地方法栈线程私有区域与虚拟机栈类似,只不过本地方法栈为虚拟机使用到的Native方法服务
5)程序计数器线程私有区域是字节码的行号指示器
3.StringBuilder/StringBuffer?
答:StringBuilder是非线程安全的,StringBuffer是线程安全的,大部分情况下StringBuilder的速度是快于StringBuffer的,StringBuilder的append方法是带synchronized锁的。
4.AOP和IOC你知道多少?
答:IOC是依赖注入,采用工厂模式。AOP是面向切面编程,采用代理模式。
5.类加载过程?
答:加载、验证、准备、解析、初始化
6.注解是什么?谈谈你的理解?
答:Java注解是附加在代码上的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
7.new一个对象的过程?
答:如果该对象所属的类是第一次使用那么还需要将类进行加载,然后在堆内存开辟空间,并为对象分配首地址,初始化成员属性,构造代码块的初始化,对象构造函数的初始化,将堆内存的地址赋值给栈里的引用。
二面
1.谈谈线程安全,你的理解?
答:多线程同时操作同一个共享变量不会产生不可预期的结果即为线程安全。
2.aop用过吗,怎么用?
答:创建切面、目标类、定义目标方法,编写配置类启动AOP代理功能。
3.HashMap你知道多少?ConcurrentHashMap呢?
答:HashMap的结构、put、get方法、resize方法、扩容为原来的两倍、hash的实现、一些属性值等等
4.线程池知道吗?
答:讲下4种线程池及使用场景,讲下参数,讲下拒绝策略。
5.如何实现定时任务?
答:while循环设置线程的休眠时间,timer类设置delay,ScheduledExecutorService三种方式
6.spring MVC执行流程?
答:1.用户发送请求到前端控制器DispatcherServlet
2.然后DispatcherServlet请求处理器映射器查找Handler
3.HanderMapping向Dispatcher返回Handler
4.HandlerMapping调用处理器适配器HandlerAdapter去执行Handler
5.处理器适配器去执行Handler
6.Handler执行完给处理器适配器返回ModelAndView
7.处理器适配器给DispatcherServlet返回ModelAndView
8.DispatcherServlet请求视图解析器View resolver进行视图解析
9.视图解析器向DispatcherServlet返回view
10.DispatcherServlet进行视图的渲染
11.DispatcherServlet向用户响应结果