1.什么是java虚拟机?为什么java被称作是平台无关的语言
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.java支持的数据类型有哪些,什么是自动拆装箱
java中的8种基本数据类型:boolean byte char short int float double long
基本数据类型和包装类,肯定有些时候要在他们之间进行转换。
3简述值传递和引用传递的原理
引用传递时,操作的都是源数据,在方法执行中,形参和实参内容相同,指的是同一块地址值,方法执行中对引用的操作将会影响到实际对象
值传递是指在调用方法时将实际参数复制一份传递到方法中,也就是说,在调用方法时,实际参数把他的值的副本传递给对应的形式参数。
4.抽象类和接口的区别
1.抽象类中可以有一个或多个抽象方法,而接口中的方法必须都是抽象方法
2.接口最大的一个特点就是可以实现多继承,而抽象类智能继承一个(应该说java中只要是类就只能单继承
5.定义一个完整的Student类,包含字段code,name,age,类成员包括:成员变量,getter,setter,多字段的构造器,重写toString方法。
public class Student {
private String name;
private int code;
private int age;
public Student() {
}
public Student(String name, int code, int age) {
super();
this.name = name;
this.code = code;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student[姓名:"+name+"学号:"+code+"年龄:"+age+"]";
}
}
6.java集合的基本接口有哪些?并阐述他们的基本特征
Collection:代表一组对象,每一个对象都是它的子元素
Set:不包括重复元素的Collection
List:有顺序的Collection,并且可以包含重复元素
Map:可以把键(key)映射到值(value)的对象,键不能重复
7.在处理异常时,finally代码块的重要性是什么?
无论是否抛出异常,finally代码块总是会被执行。就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。
7.写一个main方法,使用全字段的构造器创建5个Student对象,并放入到一个集合中(list)中,使用迭代器遍历List,并删除一个符合条件code值的对象。
public class Test {
public static voidmain(String[] args) {
Student jack=new Student("Jack",20);
Student nancy =new Student("Nancy", 18);
Student lucy =new Student("Lucy", 14);
Student mike =new Student("Mike", "23");
List<Student> stus = new ArrayList<Student>();
stus.add(jack);
stus.add(nancy);
stus.add(lucy);
stus.add(mike);
Student joy =new Student("Joy", 15);
stus.add(joy);
Iterator<Student>it = stus.iterator();
while(it.hasNext()) {
Student stu = it.next();
System.out.println(stu);
if(stu.getName().equals("Jack")) {
it.remove();
}
}
}
8.在异常处理时,finally代码块的重要性是什么?(提示:一般在finally块中定义哪些内容)
无论是否抛出异常,finally代码块总是会被执行。就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。最后要说的是,finally代码块主要用来释放资源,比如:I/O缓冲区,数据库连接。
9.使用JDBC书写一段查询student表的代码,从控制台格式化打印输出,注意控制台打印的格式。
try { // 1. 选择数据库:加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库
conn = DriverManager.getConnection(url,user, password);
// 3. 创建数据库查询
ps =conn.prepareStatement("SELECT * FROM student WHERE name = ?;");
ps.setString(1, name);
// 4. 获取查询结果
int i =ps.executeUpdate();
System.out.println("一共执行了" +i + "条");}
catch(ClassNotFoundException e) {
System.out.println("数据库驱动没有找到");
e.printStackTrace();}
catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 5. 关闭查询和连接
try {
if (null != ps){
ps.close();
}
if (null !=conn) {
conn.close();
}
} catch (SQLExceptione) {
e.printStackTrace();
}
}
10.什么是泛型,为什么要使用泛型
泛型:本质是参数化类型。
为什么要使用?创建集合的时候,往集合里面添加数据,再次取出时,集合会忘记这数据类型,该对象的编译类型就会变成Object类型,否则如果想要变回原来的数据类型的时候,就要强制进行转换。创建集合的时候,我们就指定集合类型,避免这个过程。
JSP&Servlet部分
11.什么是Servlet?解释下Servlet的生命周期。
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet 通过调用 init () 方法进行初始化。Servlet 调用 service() 方法来处理客户端的请求。Servlet
通过调用 destroy() 方法终止(结束)。最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
12.doGet()方法和doPsot()方法有什么区别?
doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。
doPOST:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。
13.浏览器和Servlet通信使用的是什么协议?
HTTP协议,即:超文本传输协议
14.sendRedirect()和forward()方法有什么区别?
Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。对应到代码里,分别是RequestDispatcher类的forward()方法和HttpServletRequest类的sendRedirect()方法。
对于间接方式,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。
对于直接方式,客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。
15.什么是JSP?JSP有什么优点?
JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
JSP的优点:
对于用户界面的更新,其实就是由 WebServer进行的,所以给人的感觉更新很快。
所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。
客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。
16.MVC是什么意思?MVC的优点有哪些?
MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
1:耦合性低
2:重用性高
3:部署快
4:可维护性高
5:有利软件工程化管理
17.JSP中两种include的区别
在静态引入中,子页面是原封不动的把页面的信息放到了父页面中,父页面把所有页面的页面信息都收集完成后,统一的进行解析,完成页面的输出。这样,如果在不同的页面中定义了相同名称的变量,那么就会产生冲突。
但是在动态引入中,由于每一个页面都是单独的进行解析的。再交给父页面合成生成一个 HTML 页面,每个子页面和父页面中定义的 Scriptlet 是不会产生冲突的。
18.常用隐式对象有哪些,以及它们的用途
隐式对象 作用
pageContext 当前页面共享数据,还可以获取其他八个内置对象
request 一次请求访问的多个资源(转发)
session 一次会话的多个请求间
application 所有用户间共享数据
response 响应对象
page 当前页面(Servlet)的对象
out 输出对象,数据输出到页面上
config Servlet的配置对象
exception 异常对象
19.Request常见方法有哪些
公共接口类HttpServletRequest继承自ServletRequest。客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。
(1).获得请求信息
request.getRequestURL(): 浏览器发出请求时的完整URL,包括协议、主机名、端口
request.getRequestURI(): 浏览器发出请求的资源名部分,去掉了协议和主机名
request.getQueryString(): 请求行中的参数部分,只能显示以get方式发出的参数,post方式的看不到
request.getRemoteAddr(): 浏览器所处于的客户机的IP地址
request.getRemoteHost(): 浏览器所处于的客户机的主机名
request.getRemotePort(): 浏览器所处于的客户机使用的网络端口
request.getLocalAddr(): 服务器的IP地址
request.getLocalName(): 服务器的主机名
request.getMethod(): 得到客户机请求方式一般是GET或者POST
(2).获取参数
request.getParameter(): 用于获取单值的参数
request.getParameterValues(): 用于获取具有多值的参数。
request.getParameterMap(): 用于遍历所有的参数,并返回Map类型。
(3).获取头部信息
request.getHeader() 获取浏览器传递过来的头信息。
比如getHeader(“user-agent”) 可以获取浏览器的基本资料,这样就能判断是firefox、IE、chrome、或者是safari浏览器
request.getHeaderNames() 获取浏览器所有的头信息名称,根据头信息名称就能遍历出所有的头信息
20.页面间对象传递的方法
page,request,session,application