笔试
1、说出ArrayList、Vectory、LinkedList的存储性能和特性
2、在tomcat上发布javaweb应用时的默认目录是哪个目录?
3、举例说明如何用jquery进行表单验证?
4、如何创建数组?
5、SpringMVC简单介绍下你对springMVC的理解?
6、Mybatis的核心处理类叫什么?
7、简述spting的注解作用?
8、Mybatis基础:#{...} 和 ${...}的区别?
9、Spring中支持的bean作用域有哪些,特点是什么,默认作用域是什么?
singleton —— 该作用域将 bean 的定义的限制在每一个 Spring IoC 容器中的一个单一实例(默认)。
prototype —— 该作用域将单一 bean 的定义限制在任意数量的对象实例。
request —— 该作用域将 bean 的定义限制为 HTTP 请求。只在 web-aware Spring ApplicationContext 的上下文中有效
session —— 该作用域将 bean 的定义限制为 HTTP 会话。 只在web-aware Spring ApplicationContext的上下文中有效。
global-session —— 该作用域将 bean 的定义限制为全局 HTTP 会话。只在 web-aware Spring ApplicationContext 的上下文中有效。
10、Spring框架中单例beans是线程安全的吗?
Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。
最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。
11、bean生命周期初始化和析构的注解方式名称是什么?
12、请解释spring定时器 表达式 0 0 /30 9-17**?
朝9晚5工作时间内半小时
13、@RequestBody,@ResponseBody的作用?
@RequestBody
1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
@ResponseBody
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
14、Spring的advice通知类型有几种?分别代表什么意思?
15、Spring切入点execution(*com.xyz.service..*.*(..))的含义是什么?
在service包或其子包中定义的任意方法的执行
16、WebApplicationContext和ApplicationContext的区别是什么?
Spring中的ApplicationContexts可以被限制在不同的作用域。在web框架中,每个DispatcherServlet有它自己的WebApplicationContext,它包含了DispatcherServlet配置所需要的bean。DispatcherServlet 使用的缺省BeanFactory是XmlBeanFactory,并且DispatcherServlet在初始化时会在你的web应用的WEB-INF目录下寻找[servlet-name]-servlet.xml文件。DispatcherServlet使用的缺省值可以使用servlet初始化参数修改,
WebApplicationContext仅仅是一个拥有web应用必要功能的普通ApplicationContext。它和一个标准的ApplicationContext的不同之处在于它能够解析主题,并且它知道和那个servlet关联(通过到ServletContext的连接)。WebApplicationContext被绑定在ServletContext上,当你需要的时候,可以使用RequestContextUtils找到WebApplicationContext。
17、SpringMVC Commons-fileupload组件如何实现上传文件进度条?
1.引入环境所需要的jar包
引入上传工具类jar包
引入mvc处理json数据jar包(@requestbody&@responsebody)
2.jsp页面
3.后台的实现
18、Spring 中操作数据库的组建是什么?有什么优点?
JDBC,优点是灵活
19、Spring框架中单例beans是线程安全的吗?
Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。
最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。20、bean生命周期初始和析构的注解方式名称是什么?
@PostConstruct和@PreDestroy
21、Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
方法覆盖(重写):方法覆盖就是子类继承自父类,对父类的方法进行方法体的修改。方法覆盖必须有相同的方法名称,参数值,返回值。子类访问权限大于等于父类方法访问权限。
方法重载:就是一个类或多个类中,方法的名称相同,但参数列表不相同,返回值不受限定(可相同/可不同)举例:构造方法。
22、进程和线程的区别是什么?
线程与进程的区别归纳:
a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
c.调度和切换:线程上下文切换比进程上下文切换要快得多。
d.在多线程OS中,进程不是一个可执行的实体。
23、创建线程有几种不同的方式?
1、继承Thread类(真正意义上的线程类),是Runnable接口的实现。
2、实现Runnable接口,并重写里面的run方法。
3、使用Executor框架创建线程池。Executor框架是juc里提供的线程池的实现。
24、解释下线程的几种可用状态?
1. 新建( new ):新创建了一个线程对象。
2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。
3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。
4. 阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种:
(一). 等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放 入等待队列(waitting queue )中。
(二). 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。
(三). 其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。
当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。
5. 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。25、Iterator和ListIterator的区别是什么?
1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能
2. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
3. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
4. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。
26、hashCode()和equals()方法的重要性体现在什么地方?
1、同一个对象(没有发生过修改)无论何时调用hashCode(),得到的返回值必须一样。
2、hashCode()返回值相等,对象不一定相等,通过hashCode()和equals()必须能唯一确定一个对象。
3、一旦重写了equals(),就必须重写hashCode()。而且hashCode()生成哈希值的依据应该是equals()中用来比较是否相等的字段。
如果两个由equals()规定相等的对象生成的hashCode不等,对于HashMap来说,他们可能分别映射到不同位置,没有调用equals()比较是否相等的机会,
两个实际上相等的对象可能被插入到不同位置,出现错误。其他一些基于哈希方法的集合类可能也会有这个问题。
27、jvm虚拟机共划分几个年代,Eden区属于哪个年代?
虚拟机中的共划分为三个代:年轻代(Young Generation)、老年代(Old Generation)和持久代(Permanent Generation)。
Eden区属于年轻代
28、如何实现对象克隆?
浅克隆和深克隆
29、Java中Runnable和Callable有什么不同?
(1)Callable规定的方法是call(),Runnable规定的方法是run()。其中Runnable可以提交给Thread来包装下,直接启动一个线程来执行,而Callable则一般都是提交给ExecuteService来执行。
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
(3)call方法可以抛出异常,run方法不可以
(4)运行Callable任务可以拿到一个Future对象,c表示异步计算的结果。
30、Java中CyclicBarrier和CountDownLatch有什么不同?
CyclicBarrier:多个线程互相等待,直到到达同一个同步点,再继续一起执行。
CountDownLatch:一个或者多个线程,等待其他多个线程完成某件事情之后才能执行。