java基础面试题

来源:互联网 发布:png转ico软件 编辑:程序博客网 时间:2024/06/06 06:36
1.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
String对象是不可变对象,每次修改都相当于生成新的对象。StringBuffer是可变对象,每次修改都针对其本身。
StringBuffer跟StringBuilder基本类似,但StringBuffer是线程安全的,StringBuilder是非线程安全的,效率上比StringBuffer高。
StringBuffer使用时最好指定容量,这样会比不指定容量快30%-40%,甚至比不指定容量的StringBuilder还快。


2.Vector,ArrayList, LinkedList的区别是什么?
Vector跟ArrayList都是基于数组的线性表,但Vector是线程安全的,ArrayList是非线程安全的,效率上比Vector高。
LinkedList是基于链表的线性表,是非线程安全的,在set和get操作上,ArrayList的效率高于LinkedList。
而在add和remove操作上,LinkedList占优。
linkedlist比arraylist更占内存,因为linkedlist每个节点上还要存储对前后两个节点的引用。


3.HashMap,Hashtable的区别?
HashMap和Hashtable都实现了Map接口,但Hashtable是线程安全的,HashMap是非线程安全的,所以效率比Hashtable高。
还有HashMap的key和value值可以为null,而Hashtable的key和value值不能为null。


4、ConcurrentHashMap和Hashtable的区别?

两者均应用于多线程中,是线程安全的,但当HashTable增大到一定程度时,其性能会急剧下降。因为迭代时会被锁很长时间。
而ConcurrentHashMap则通过引入分割来保证锁的个数不会很大。
简而言之就是HashTable会锁住真个map,而ConcurrentHashMap则只需要锁住map的一个部分。


5.Tomcat,Apache,Jboss的区别?

Tomcat是Servlet容器,用于解析jsp,servlet,是一个轻量级高效的容器,但不支持EJB。
Apache是http服务器,类似于IIS可以用来建立虚拟站点,编译处理静态页面。支持SSL技术,支持多个虚拟机功能。
Jboss是应用服务器,运行EJB的JavaEE应用服务器,遵循JavaEE规范,能够提供更多平台支持和更多集成功能,如数据库连接,JCA。
其对servlet的支持是通过集成其他servlet容器来实现的。如tomcat。


6.get,post的区别?

①get请求用来从服务器上获得资源,而post是用来向服务器提交数据; 
②get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用"?"连接,而各个变量之间使用"&"连接;post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向URL; 
③get传输的数据要受到URL长度限制(1024字节);而post可以传输大量的数据,上传文件通常要使用post方式; 
④使用get时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应用使用post; 
⑤get使用MIME类型application/x-www-form-urlencoded的URL编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是"%20"。
⑤对于get方式,服务区端用request.QueryString获取变量值,对于post方式,服务器端用request.Form获取提交的数据。
  
7.session和cookie的区别?
cookie数据保存在客户端,不安全,存储的数据量有限。
session数据保存在服务器,有特定的sessionID标识,存储的数据量大,安全性高。占用服务器资源。
单个cookie保持的数据不超过4k,很多浏览器都限制要给站点最多保存20个cookie。


8.servlet的生命周期?

1,实例化一个Servlet,并且调用init()初始化
2,调用service()方法,根据具体的请求调用doget()或者dopost()或者其他
3,卸载webApp之前,先调用destroy(),销毁示例,释放相应的资源;


9、Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入?
PreparedStatement预编译SQL语句,性能更好。无须拼接SQL语句,编程更简单,可以防止SQL注入,安全性更好。
SQL注入指通过SQL命令插入到web表单提交,或输入域名,或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令。


10、redirect与forward的区别?
redirect服务器根据逻辑,发送一个状态码,告诉浏览器去请求那个地址,因此可以从浏览器中看到跳转后的链接地址。
forword是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,
浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect不能共享数据,forward转发页面和转发到页面可以贡献request中的数据。redirect用于注销,forward用于登陆。forward效率高于redirect。



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 耳钉容易掉怎么办 皮球鱼产卵了怎么办 孩子在家太孤独怎么办 宝宝老是挠头是怎么办 猫脸花浇水多了怎么办 夏天钓鲫鱼小杂鱼闹窝怎么办 家里养花生虫子怎么办 生鸡蛋拌饭怎么办 出柜家里人会怎么办 百灵鸟怕人撞笼怎么办 乌鸫雏鸟撞笼返生怎么办 泥石流来了怎么办教案 墙壁插座不通电怎么办 当前目录不能用怎么办 海鲜过敏怎么办没有药 哺乳后胸变小怎么办 有脑出血前兆该怎么办 体检发现甲状腺结节怎么办 月子里宝宝感冒怎么办 10天新生儿感冒怎么办 20天新生儿感冒怎么办 新生儿20天鼻塞怎么办 25天新生儿感冒怎么办 42天新生儿感冒怎么办 上呼吸道感染怎么办比较好 小猫咪太调皮怎么办 水晶彩泥弄到衣服上怎么办 进境动植物检疫许可怎么办 跳舞不会听拍子怎么办 税盘丢了注销公司怎么办 认缴资金不到位怎么办 同一单元有凶宅怎么办 有地皮没房产证怎么办 社保资金被侵吞怎么办? 集体计件手脚慢怎么办 发票当月没用完怎么办 非工业用地怎么办环评 商标注册途中英文错误怎么办 孩子的英文不好怎么办 高盛英文不好怎么办 去美国英文不好怎么办