Q1:介绍一下自己
XXXXXX
Q2:什么是Servlet?
Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。过程为:
1.客户端发送请求至服务端。
2.服务端将请求信息发送至Servlet;
3.Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4.服务器将响应返回给客户端。
一个Servlet就是Java中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展web服务器的应用程序。
Q3:Servlet的生命周期。(详细)
1、客户端请求该Servlet;
2、加载Servlet类到内存;
3、实例化并调用init()方法初始化该Servlet;
4、service()(根据请求方法不同调用doGet()或者doPost());
5、destroy();
6、加载和实例化Servlet。这项操作一般是动态执行的。然而Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。
Q3:JSP与Servlet的区别?
1、jsp编译后就变成了Servlet。(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2、jsp侧重于视图,Servlet主要用于控制逻辑。
3、Servlet中没有内置对象,jsp中的内置对象必须通过HttpServletResponse对象,HttpServletRequest对象以及HttpServlet对象得到。
4、Servlet的应用逻辑实在Java文件中,并且完全从表示层中的HTML中分离出来。
5、jsp是由Java和HTML组合成一个扩展名为.jsp的文件。
6、Servlet更多的是类似于一个Controller,用来做控制。
Q4:String是怎样存值的?
char数组存值。
Q5:String与StringBuilder与StringBuffer的区别?
1、String类是字符串常量,StringBuilder和StringBuffer是字符串变量。
2、因为String是由final修饰的,所以String对象不可更改,值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样会造成内存空间的浪费。
3、当对字符串进行修改时,需要使用StringBuffer和StringBuilder类。这两个类的对象能够被多次修改而不产生新的对象。
4、StringBuilder速度快但是线程不安全,因此在Java5中StringBuffer被提出,StringBuffer方法中加有synchronized实现同步保证了线程安全。
(1)字符串修改上的区别。
(2)初始化上的区别,String可以为控制,后者都可以,直接报错。
总结:a、如果操作少量的数据用String;b、多线程操作字符串缓冲区下操作大量数据用StringBuffe;c、单线程操作字符串缓冲区下操作大量数据用StringBuilder;
Q6:讲讲hashset。
Q7:hashMap怎样取值?
1、for循环遍历获取
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "jack");
map.put("age", 13);
//分别获取键和值
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("entry中key的值:" + entry.getKey() + "entry中value的值:" + entry.getValue());
}
//获取值
for (Object obj : map.values()) {
System.out.println("map中的值:" + obj);
}
2、用迭代器获取
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "jack");
map.put("age", 13);
//获取值
Collection<Object> values = map.values();
Iterator<Object> iterator = values.iterator();
while (iterator.hasNext()){
System.out.println("map中的值:"+iterator.next());
}
//获取键和值
Set<Map.Entry<String, Object>> entries = map.entrySet();
Iterator<Map.Entry<String, Object>> entryIterator = entries.iterator();
while (entryIterator.hasNext()){
System.out.println("entries中的键为:"+entryIterator.next().getKey()+"\nentries中的值为:"+entryIterator.next().getValue());
}
知识点:hashMap中获取值的方式有两种:直接获取键值对的集合,然后从集合中获取值;直接获取值;
Map类中的entyrSet()获取键值对,返回类型为Map.Entry<String,Object>;然后getKey(),getValue()分别获取键值;
Map类中的keySet()获取键,返回类型为Set<String>;
Map类中的values()获取值,返回类型为Collections<Object>;
Q8:hashset与hashmap的区别。