java初级面试题

java面试题

1.集合有哪些?
list(列表) 有序可重复集合,根据索引查询数据比较快,但插入删除数据会因为数据移动而速度慢。
set(集) 无序不可重复集合,集合中的对象不按特定方式排序,因此插入快而查询慢。
map(映射) 以键值对形式存储,键唯一而值可以不唯一,对map遍历时先得到键的set集合,遍历set集够得到相应的值。

2.线程池作用?
大量创建线程会过度消耗计算机的资源,对于比较简单的任务可以使用线程池,限制过度创建线程,同时提高响应速度和线程的可管理性。

3.string、stringbuffer、stringbuilder区别?
string是final修饰的类,只能存储不可变得字符串;stringbuffer是synchronized修饰的线程安全的类,是线程安全的;stringbuilder非线程安全,但在对线程要求不高时,使用stringbuilder效率较高。

4.servlet是什么,作用?
是用java编写的server端程序,它可以动态扩展server的能力,并采用请求-响应模式提供web服务(生成动态web页面)。主要用于处理客户端传来的http请求并返回响应。

5.spring bean生命周期
Spring框架中,一旦把一个Bean纳入Spring IOC容器之中,这个Bean的生命周期就会交由容器进行管理,一般担当管理角色的是BeanFactory或者ApplicationContext,认识一下Bean的生命周期活动,对更好的利用它有很大的帮助:

下面以BeanFactory为例,说明一个Bean的生命周期活动

Bean的建立, 由BeanFactory读取Bean定义文件,并生成各个实例
Setter注入,执行Bean的属性依赖注入
BeanNameAware的setBeanName(), 如果实现该接口,则执行其setBeanName方法
BeanFactoryAware的setBeanFactory(),如果实现该接口,则执行其setBeanFactory方法
BeanPostProcessor的processBeforeInitialization(),如果有关联的processor,则在Bean初始化之前都会执行这个实例的processBeforeInitialization()方法
InitializingBean的afterPropertiesSet(),如果实现了该接口,则执行其afterPropertiesSet()方法
Bean定义文件中定义init-method
BeanPostProcessors的processAfterInitialization(),如果有关联的processor,则在Bean初始化之前都会执行这个实例的processAfterInitialization()方法
DisposableBean的destroy(),在容器关闭时,如果Bean类实现了该接口,则执行它的destroy()方法
Bean定义文件中定义destroy-method,在容器关闭时,可以在Bean定义文件中使用“destory-method”定义的方法
如果使用ApplicationContext来维护一个Bean的生命周期,则基本上与上边的流程相同,只不过在执行BeanNameAware的setBeanName()后,若有Bean类实现了org.springframework.context.ApplicationContextAware接口,则执行其setApplicationContext()方法,然后再进行BeanPostProcessors的processBeforeInitialization()
实际上,ApplicationContext除了向BeanFactory那样维护容器外,还提供了更加丰富的框架功能,如Bean的消息,事件处理机制等。java初级面试题
6.springboot与spring区别

springboot是一个轻量级、简化配置和开发流程的web整合框架。与spring的区别就是springboot的特性,如下:

(1).springboot可以创建独立的spring应用程序。
(2).内嵌了如Tomcat、jetty和Undertow容器,就是说可以直接运行起来,不用部署应用。
(3).不用像spring一样配置繁琐的配置文件。
(4).可以自动配置spring。springboot将原有的xml文件改为java配置,将bean注入改为注解注入(@Autowired)的方式,并将多个xml和propoties配置浓缩在application.yml文件中。
(5).整合常用依赖(开发库,例如spring-webmvc、jackson-json、validation-api和tomcat等),提供的POM可以简化Maven配置,当我们引入核心依赖时,springboot会自动引入其它依赖。