收集面试题

一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
String在Java中是final的类,所以不可变;StringBuffer是同步的,StringBuilder是不同步的。后2者可以通过append改变引用指向的 对象。而String则做不到,String只能通过在内存中添加新的对象,将引用指向该新对象。

二、VECTOR,ARRAYLIST, LINKEDLIST的区别是什么?
Vector是同步的,而后2者是非同步的。因此Vector的性能很差,而ArrayList类似于数组,获得索引快,插入数据效率低; LinkedList是双向链表,按序号索引数据需要进行向前或向后遍历 但 插入比较快。

三、HASHTABLE, HASGMAP,TreeMap区别
Hashtable是同步的,而HashMap是不同步的。TreeMap必须实现排序的规则。(以下为搜索答案)


Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多 只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能 会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力.
Hashtable 与 HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable, 因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比 HashMap慢。
TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录 是排过序的。

四、ConcurrentMap和HashMap的区别
http://mooncui.iteye.com/blog/380884

五、Tomcat,apache,jboss的区别
http://nneverwei.iteye.com/blog/494266

六、GET POST区别
Get方式发送的请求,请求的内容会附带显示在浏览器地址栏,长度受浏览器限制;Post方式发送的请求,内容没有长度限制,对于 密码之类的表单信息最好用post来发送。同时点击超链接,在地址栏直接发送请求的方式,以及表单的默认提交方式为Get,Post需 要显式指名表单提交的method为post。

http://www.cnblogs.com/wxf0701/archive/2008/08/17/1269798.html

七、SESSION, COOKIE区别
Session为服务器端的技术,而Cookie是客户端通过浏览器来保存少量的用户信息。Session的能在多次请求/响应中有效,但是一旦 关闭浏览器,Session将失效,而Cookie则会根据setMaxAge函数来控制有效时间,0则立即删除该Cookie,<0保存在内存中,>0则 保存在磁盘文件上。

http://yahaitt.iteye.com/blog/145820

八、Servlet的生命周期
init -> service -> destroy
init和destroy只会执行一次,而service会根据请求多次调用

九、HTTP 报文包含内容
Content-type, ip地址,端口,主机信息,请求类型,请求内容等。

十、Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入
PreparedStatement可以利用setter方法来防止sql注入,而Statement也不行。

十一、redirect, foward区别
redirect为重定向,重定向的地址可以任意,可以是服务器内部的页面,也可以是任意的网站,请求的地址会显示在浏览器地址栏。 而forward是转发的意思,即一次任务还没有处理完毕,将任务转发给另一web组建继续完成任务,forward会共享 request/response,而请求的地址不会显示在地址栏。

十二、关于JAVA内存模型,一个对象(两个属性,四个方法)实例化100次,现在内存中的存储状态,几个对象,几个属性,几个方法。

十三、谈谈Hibernate的理解,一级和二级缓存的作用,在项目中Hibernate都是怎么使用缓存的
十四、反射讲一讲,主要是概念,都在哪需要反射机制,反射的性能,如何优化
十五、谈谈Hibernate与Ibatis的区别,哪个性能会更高一些
十六、对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理
十七、线程同步,并发操作怎么控制
十八、描述struts的工作流程。
十九、Tomcat的session处理,如果让你实现一个tomcatserver,如何实现session机制
二十、关于Cache(Ehcache,Memcached)
二一、sql的优化相关问题
二二、oracle中 rownum与rowid的理解,一千条记录我查200到300的记录怎么查?
二三、如何分析ORACLE的执行计划?
二四、 DB中索引原理,种类,使用索引的好处和问题是什么?
二五、JVM垃圾回收实现原理。垃圾回收的线程优先级。
二六、jvm 最大内存设置。设置的原理。结合垃圾回收讲讲。

1. java中 hashcode相同, equal一定相同嘛

答: 不一定,因为hashcode,equal方法可以重写



2 . 理解spring么,它的AOP实现是基于什么原理,bean的初始化过程是那些(涉及具体的源代码),在bean factory初始化前 ,运行中,初始化后想做些事情。该怎么做?
答: spring的AOP基于cglib,对代码做混淆。 bean初始化的时候,首先读取XML配置文件,解析完成Bean的组装,由BeanFactory组装生成Bean, 可以指定是单例或者new instance, 具体可以参看我以前的博文

http://blog.csdn.net/nanjingjiangbiao/article/details/7173098



3 struts1和strus2的区别,strust2关于 ThredLocal是什么,strus2初始化部分的原理是什么。
答: 1是基于sevlert的MVC,2是基于filter。1中Action,Form分离, 2中合并在Action中。 1中Action是单例,非线程安全。 2中Action每个http request thread一个new instance.

ThreadLocal是线程变量, 将该变量副本存入当前线程的栈中,从语法级实现线程隔离。


4. 多线程用过么?

答: 不如问线程如何同步或者协同。 Java的异步包中提供, 同步阀。 线程之间通信, 一般可以通过共享变量做到。 如果大型的话, 可以用消费者生产者模式。 线程池, Java的异步包也提供API, 只需要将线程包装成FutureTask就可。


5关于jvm,它是什么样的结构?,他的Gc算法是什么,什么情况下会 out of memory?

答: 基于栈的编译器实现。 GC算法一般来说是回溯引用树,然后找到没有引用的节点,将其移入old gen, 这是 young GC, 在old gen已经全满的情况, 执行full gc。 out of memory发生在没有空间开辟内存, 不光出现在heap中, 方法区中也会。

6.连接池原理,连接池commit 后连接是否关闭。

答: JDBC协议本身定义了 con pool, WebApp初期化之后, 代码底层, 在当前JVM上创立一个ObjectMap, 每个Object中包装了对数据库的tcp连接,帐号密码等。

con pool一开始是空的, 当有新con 要求的时候, 才会在conn pool中增加object。 conn pool中的conn不会被关闭, 但过一段时间会进入休眠状态, 即钝化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值