一、 接口和抽象类的区别是什么?
相同点:
都不能被实例化,位于继承树的顶端,是用于被其他类继承或者实现的;
都可以包含抽象方法,子类都必须要实现抽象方法;
在实际的开发中,都是接口先行,一般都是先定义接口,然后开发人员实现接口,完成具体方法的实现。
抽象类是个半成品,可以作为一个模板去使用。
不同点:
抽象类中可以定义普通方法,但是接口中都是抽象方法和静态变量;
在抽象类是可以定义静态方法的,接口中不能定义静态方法的;
在抽象中可以定义构造器的,但是在接口中是不存在构造器这个概念的;
一个类最多只能有一个直接的父类或者抽象类,但是可以有多个接口的实现。
二、 什么是值传递和引用传递?
值传递,是对于基本数据类型的变量而言的。传递的是该变量的一个副本,改变副本并不影响原变量
引用传递,是对于对象型变量而言的。传递的是该变量地址的一个副本,并不是该对象本身,指向的值是同一个值,所以根据副本地址改变的值会影响原来的值。
三、线程有几种,你喜欢哪种,为什么?
(1)继承Thread类
(2)实现runnable接口
(3)应用程序可以使用executor框架创建线程池
我喜欢实现runnable接口,因为java不支持多继承,实现接口就避免了在继承thread类后还需要继承别的类的情况。
四、什么是数据库的连接池?
数据库连接是一种有限的昂贵的资源,数据库连接影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
五、Servlet是什么?
Servlet是在 Web 容器中有浏览器访问地址的特殊 Java 类,一般充当的就是控制器的角色。
六、简述一下servlet的生命周期。
Servlet 加载—>实例化—>服务—>销毁。
在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。destroy()方法仅执行一次,在服务器端停止且卸载Servlet时执行该方法。
七、doPost()和doGet()方法的区别。
(1)通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;而post方式没有数据大小的限制,理论上传送多少数据都可以。
(2)通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的;而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。
(3)通过Get方式提交的数据安全性不高,而Post方式的更加安全。
八、 HTTP响应的结构是什么?
HTTP响应由三个部分组成:
状态码(StatusCode):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。
HTTP头部(HTTPHeader):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。
主体(Body):它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。
九、Cookie是什么?说说cookie和session的区别
Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。
区别:
1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。
2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
3.cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。
4.cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。
5.两个都可以用来存私密的东西,同样也都有有效期的说法,区别在于session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。
十、Jsp的隐含对象是什么?有哪几个?
(1)out 来源于java.io.Writer类,它用于发送输出流到客户端。
(2)request 来源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。
(3)response 来源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端。
(4)pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
(5)session 来源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。
(6)application 来源于javax.servlet.ServletContext。
(7)config 来源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。
(8)page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。
(9)exception 用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。