String相关
177.String s=new String(“abc”);创建了几个String对象。
两个或一个,”abc”对应一个对象,这个对象放在字符串常量缓冲区,常量”abc”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”abc”对象的内容来创建出一个新String对象。如果以前就用过’abc’,这句代表就不会创建”abc”自己了,直接从缓冲区拿。
187.String 和StringBuilder、StringBuffer 的区别?
相同点:
它们都可以存储和操作字符串,同时三者都使用final修饰,都属于终结类不能派生子类。
不同点:
string是只读字符串,也意味着string引用的字符串内容不能改变,而string buffer和string builder表示字符串对象可以进行修改,在修改的同时地址值不会发生改变。
线程
194.Vector和ArrayList的区别和联系
相同点:
底层都使用了数组
实习增删改的方法相似
都是长度可变的数组
都实现了list接口
不同点
vector线程安全,array list线程不安全
196.HashMap和Hashtable的区别和联系
相同点:
实现原理相同,功能相同,底层都是哈希表结构,查询速度很快
不同的:
1.hashtables 和Hash table继承和实现不同的类
2.hashtables线程安全,hashmap线程不安全
3.hashtables不允许null。而hashmap可以
204.List,Set,Map各有什么特点
-
list是有序(插入顺序)对象
-
set接口存储一组唯一,无序的对象
-
Map接口存储一组键值对象,提供key——value的映射。
225.说明类java.lang.ThreadLocal的作用和原理。
-
Threadlocal类中有一个Map,用于存储每一个线程的变量的副本
229.在多线程编程里,wait方法的调用方式是怎样的?
wait方法必须使用(synchronized)上锁的对象的对象调用,从而持有该对象的锁进入线程等待状态,直到使用该上锁的对象调用notify或者notifyAll方法,以释放持有的锁。
230.Java线程的几种状态
1.新建
当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)
例如:Thread t1=new Thread();
2.就绪
线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();
3.运行
线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。
4.死亡
当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。
自然终止:正常运行run()方法后终止
异常终止:调用stop()方法让一个线程终止运行
5.堵塞
由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。
正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。
正在等待:调用wait()方法。(调用motify()方法回到就绪状态)
被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)
239.Java线程中,sleep()和wait()区别
1.sleep是线程类(thread)的方法,作用是导致此线程暂停执行时间,给执行机会给其他线程,但是依然保持,到时会自动恢复;调用sleep方法不会释放对象锁。
2.wait方法是Object类的方法,对此调用此方法导致本线程放弃对象锁,进入等待此对象的等待锁定池。只有此对象发出notify后本线程才进入对象锁定池,准备获取对象锁进行运行状态。
242.sleep()和yield()有什么区别?
1.线程执行sleep方法后转入阻塞状态,而执行yield方法转入就绪状态
2.sleep方法声明会抛出相应的异常,而yield没有抛出声明的异常
3.sleep方法比yield方法具有更好的移植性
250.简述synchronized 和java.util.concurrent.locks.Lock的异同?
相同点:Locak能完成synchronized 的所有功能
不同点:
293.简单描述一下Servlet与JSP的的相同点和区别点。
- jsp是在HTML代码中写Java代码,框架是HTML;而servlet反过来。
- jsp使人们把显示和逻辑分隔成为可能,而servlet并没有把两者分开。
- servlet需要在web.xml配置,而jsp无需配置
- jsp主要用在视图层,而servlet只要用在控制层,负责调度。
351.Servlet API中forward() 与redirect()的区别
1.forward:是服务器内部的重定向,服务器直接访问目标地址的url的响应的内容读取出来,
而客户端并不知道,因此客户端浏览器的地址栏不会显示跳转之后的地址。由于重定向的过程中是同一个request,所以forward会把request的信息带到被定向jsp或者servlet中使用。
2.redirect:是客户端的重定向,是完全跳转,即客户端浏览器会获得跳转之后的地址,然后重新发送请求,因此浏览器会显示跳转后的地址。
352.Session域和request域什么区别?
相同之处:存放数据,传递数据
区别:
1.HTTPserveltRequest:
声明周期:一次请求之间
作用范围:所有被请求转发过来的servlet都能获取到
2.HTTPSession
生命周期:一次会话
作用范围:所有servlet都可以获取到
3.ervletContex:
生命周期:从项目开始运行到服务器关闭
作用范围:所有的servlet都可以获取到
402.JSP中的四种作用域?
1.page代表与一个页面相关的对象和属性
2.request 一个请求可能跨越多个页面,涉及多个web组件;需要在页面显示的临时数据可以置于此作用域
3.session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中
4.application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。