今阶段面试笔试常见问题总结

本人第一篇CSDN博客:

1.String与StringBuff 的比较

1)String的联合+方法与StringBuff的append方法的区别:String的+运算符在进行字符串运算时,首先将当前的字符串对象转换为StringBuff 类型,调用其append方法,最后再将生成的StringBuff 对象通过其toString 方法转换为String类型的字符串,所以其效率要低。但是在可读性上,还是String的连接运算符要高。
2)StringBuff是线程安全的String是线程是飞安全的
3)String是不可以修改的字符串对象,而StringBuff是可以修改的。

2.今天面试官问我Spring中的AOP 是什么吗,我大概的回答类似于过滤器的切面切面编程吧,回来特地查了下aop,过滤器,拦截器的区别与联系。

Filter技术是Servlet2.3新增加的功能,Servlet2.3是sun公司于2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则。在众多参与者的共同努力下,Servlet2.3比以往功能都强大了很多,而且性能也有了提高。那么Filter有什么功能呢?Filter可以用来设置字符集、控制权限、控制转向等等。简单点说:就是定义在访问某对象之前和访问之后要做的事情。

拦截器是在Struts2中出现的概念。 Struts2与Struts1相比,去掉了很多概念:ForwardAction,ActionMapping,ActionForm,Action的继承也变的可有可无(如果不声明拦截器等Struts2中特有的东西)。但是去掉了,不代表没有,只是在使用的时候,不会看到这些类的存在。若是你细细对比,在Struts2中你会找到他们的身影的。但是Struts2多了拦截器的概念,这个概念类似于Filter,Struts2的架构其实就是基于拦截器的。在Struts2中,还有一个概念:拦截器链(interceptor-stack)。有关于上次文件的、多选、静态参数、国际化等等好多个默认拦截器,当然也可以自己手动写拦截器。

Filter和拦截器有什么区别和联系?
二者都是运用了AOP的思想,都让系统变的可配置。
1.拦截器是基于java的反射机制,而过滤器是基于函数毁掉。
2.拦截器不依赖servlet容器,过滤器依赖于servlet容器。
3.拦截器只能对action起作用,而过滤器可以对几乎所有的请求起作用(可以保护资源)
4.拦截器可以访问action上下文,、堆栈里面的对象,而过滤器不可以。
执行顺序:过滤
-拦截-Action处理-拦截后-过滤后。
通过上面的对比,可以看出,如果不访问Action里面的东西,那么拦截器可以做的,Filter都能做。在选择上,我更加倾向于Filter,因为用了拦截器,就带入侵入性,如果换一个别的MVC框架,这些拦截器就不能用了,而Filter不会。

3.对于Tomcat容器熟悉吗,编译好的项目放在Tomcat 哪个文件加下面?

答:webapps.

4.Servlet的生命周期。这个题目基本基本面试JAVA开发都会问到。

· 1初始化阶段 调用init()方法
2
响应客户请求阶段  调用service()方法
3
终止阶段  调用destroy()方法

5.被问到数据库SQL 语句时,问我怎么实现分组,但是脑子短路,说了一大堆关于分页的。虽然但是脑子中立马出现了group by,但是就是不敢说,以前都是说分组查询,突然问一句分组竟然不知道什么意思了。

6.request 与session的区别。

两个生命周期不一样,request的生命周期只在数据提交,提交以后即释放,session则是浏览器关闭才释放 所以一般一些用户信息类的内容都会存在session里,比如购物车内信息,或者用户登录的各种身份验证信息,这样不会因为跳转页面而丢失这些信息

7.public,private,protected,缺省的区别。

1、public修饰词,表示成员是公开的,所有其他类都可以访问;
2、private修饰词,表示成员是私有的,只有自身可以访问;   
3、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。   
4、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访 问,访问权限是包级访问权限;  

8.转发与重定向

1)从地址栏显示来说 

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.。

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2)从数据共享来说 
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3)从运用地方来说 
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4)从效率来说 
forward:高.
redirect:低.
本质区别:解释一句话,转发是服务器行为,重定向是客户端行为。

9. 静态方法是不能调用非静态的成员和方法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值