JAVA面试题总结

JSP面试题

1..JSP有哪些内置对象和动作,他们的作用分别是什么?

(1)什么是内置对象?

在jsp开发中,会频繁使用到一些对象

。例如HttpSession,ServletContext,ServletContext,HttpServletRequet。如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!,这些创建好的对象就叫内置对象!!!!

举例:

servlet:

HttpSession session = request.getSession(true); (需要开发者做)

jsp:

tomcat服务器: HttpSession session = request.getSession(true);(不需要开发者做)

开发者做的: session.getId();

2.九大内置对象都有哪些?

内置对象名          类型        范围

request   HttpServletRequest  请求范围

response      HttpServletResponse  标准输出流

config        ServletConfig。  Servlet配置信息对象

application        ServletContext  应用范围

session        HttpSession  会话范围

exception        Throwable  异常引用(isErrorPage=“true”)

page            Object(this)      很少用

out            JspWriter          响应对象

pageContext    PageContext    页面范围

1、HttpServletRequest 的 request 对象

作用:代表请求对象,用来接收客户端通过http 协议连接传输到服务器端的数据。

2、HttpServletResponse 的response 对象

作用:代表响应对象,用来向客户端发送数据。

3、JspWriter 的 out 对象

作用:主要用于向客户端发送数据。其中JspWriter 是out 的基类。

4、HttpSession 的session 对象

作用:主要用于来分别保存每个用户的个人信息,与请求关联的对话。会话状态的维持是每个web 应用开发者都必须面对的问题。

5、ServletContext 的application 对象

作用:主要用于保存用户信息,代码片断的运行环境。它是一个共享的内置对象。即一个容器中多个用户共享一个application 对象,故其保存的信息被所有的用户所共享。

6、PageContext 的PageContext 对象

作用:管理网页的属性,为jsp 页面包装页面的上下文,管理对属于jsp 中特殊可见部分中

已经命名对象的访问。它的创建和初始化的工作都是由容器来自动完成的。

7、ServletConfig 的Config 对象

作用:代码片断配置对象,表示对servlet 的配置。

8、Object 的page(相当于this) 对象

作用:处理jsp 网页,是object 类的一个实例。即它也是jsp 的本身,只有在jsp 的页面范

围之内它才是合法的。

9、Exception

2..JSP的执行原理?

-浏览器上访问的路径虽然是以.jsp结尾,访问的是某个jsp文件,其实底层执行的是jsp对应的java程序

-Tomcat服务器负责将.jsp文件翻译生成.java源文件,并且将java源文件编译生成.class字节码文件

-访问jsp,其实底层还是执行了.class文件中的程序

-Tomcat服务器内置了一个JSP翻译引擎,专门负责翻译JSP文件,编译java源文件

-index.jsp会被翻译生成index_jsp.java,编译生成index_jsp.class

-index_jsp这个类继承了HttpJspBase,而HTTPJsBase继承了HttpServlet

-jsp就是Servlet,只不过职责不同,JSP的强项做页面展示

3.3 Jsp中的四个域对象

四个域对象:

pageContext      page域

request          request域

session          session域

application      context域

1)域对象作用:

保存数据  和 获取数据 ,用于数据共享。

2)域对象方法:

setAttribute("name",Object) 保存数据

getAttribute("name")  获取数据

removeAttribute("name") 清除数据

3)域对象作用范围:

page域: 只能在当前jsp页面中使用(当前页面)

request域: 只能在同一个请求中使用(转发)

session域: 只能在同一个会话(session对象)中使用(私有的)

context域: 只能在同一个web应用中使用。(全局的)

顺序: page域 -> request域 -> session域- > context域(application域)

关于异常的的面试题

java异常结构继承图

throwable形容词,可抛出的,继承与objcet,所有的异常都是可抛出的,

StackOverFlowError 栈内存溢出

1.java中的异常和error有什么区别?(必考)

所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 有两个重要的子类:Exception(异常)和 Error(错误),

Exception(异常)是应用程序中可能的可预测、可处理,可恢复的。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误,如:空值对象引用、除数为零或数组越界(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。)异常又分为两类:一个是编译时异常一个是运行时异常。在我们代码级别上,所有runtimeException的子类都是运行时异常,所有Exception的直接子类都是编译时异常,在语法上规定,编译时异常要求程序员在编写阶段必须处理,如果不处理的话,编译都无法通过。如果异常时runtimeException,那么程序猿在编写阶段对它不需要处理 ,和现实世界对比,编译时异常发生几率是比较高的,运行时异常发生几率是比较低的。

Error(错误)表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如:StackOverFlowError 栈内存溢出。或者 当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。.java.lang.Error:  Throwable的子类,用于标记严重错误。应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。

3.编译时异常和运行时异常的区别:

在我们代码级别上,所有runtimeException的子类都是运行时异常,所有Exception的直接子类都是编译时异常,在语法上规定,编译时异常要求程序员在编写阶段必须处理,如果不处理的话,编译都无法通过。如果异常时runtimeException,那么程序猿在编写阶段对它不需要处理 ,和现实世界对比,编译时异常发生几率是比较高的,运行时异常发生几率是比较低的。

2.1 处理异常的两种方式

1. 声明抛出

2 捕捉 try……catch……

3.下面程序的执行结果.(异常的必考题)

public static void main(String[] args){

int i = m1();

System.out.println(i); //10

}

public static int m1(){

int i = 10;

try{

return i;

}finally{

i++;

System.out.println("m1的i=" + i); //11

}


//以上代码的执行原理(还有一个考点就是++运算符号单独使用,不参与运算操作,运算符前置后置结果是一致的,当参与运算,前置a++,先使用变量原有值参与运算操作,运算操作完成后,变量a的值自增或者自减1)

/*

int i = 10;

try{

int temp = i;

return temp;

}finally{

i++;

System.out.println("m1的i=" + i); //11

}

4.JAVA异常处理中一个try后必须得有一个catch块吗?在什么情况下使用try cacth finally语句。请举例说明:

(1)catch 可以有多个,也可以没有,每个catch可以处理一个特定的异常

finally可以没有,也可以只有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使你在try块内用return返回了,在返回前,finally总是要执行,这以便让你有机会能够在异常处理最后做一些清理工作。如关闭数据库连接等等。

在语法上你有一个try后有一个finally块也是能通过编译的也是正确的,所以try后只有catch(){}或只有finally{}或者两者都有都是可以的。但如果后面没有catch块也没有finally块而只有try那是编译不过去的是不正确的。

(2)

举例:有可能抛出异常时,比如你编写了一个程序,要读取某一个文件中的内容,但是这个文件有可能存在,也有可能不存在,那就是一种异常,在编程时是无法预料的,还有就是线程在wait或sleep时也会抛出异常

try catch是程序语言本身提供的一种异常处理机制,你大多数写的代码都是要调用底层的api,而这些api的作者在开发api时,很清楚api在使用的过程中会有哪些非正常情况发生,因此他要通知api的调用者,至于对于这种非正常情况怎么处理,就交给了api的调用者

你是写代码的,你要调用api,因此你就是api的调用者,你也应该处理api本身存在的非正常情况,那你怎么处理这些非正常状况,这就是你提到的try catch的作用了,它就是干这事的。至于api会有哪些非正常情况发生,需要查api的帮助文档;这些非正常状况怎么处理,这又取决于问题逻辑了,跟实际需求有关系。

举例代码:

try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容

//程序执行到此处发生了FileNotFoundException类型的异常.

//JVM会自动创建一个FileNotFoundException类型的对象,将该对象的内存地址赋值给catch语句块中的e变量.

FileInputStream fis = new FileInputStream("abc");

//上面的代码出现了异常,try语句块的代码不再继续执行,直接进入catch语句块中执行。

System.out.println("TTTTTTT");

fis.read();

}

catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行

System.out.println("读取的文件不存在!");

//FileNotFoundException将Object中的toString方法重写。

System.out.println(e); //java.io.FileNotFoundException: abc (系统找不到指定的文件。)

}

finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }

网络编程面试题

简单介绍TCP和UDP的不同之处以及各自的适用范围?

UDP是User Datagram Protocol 的简称,称为用户数据报协议

UDP是无连接通信协议,即在数据传输时,数据的发送端盒接收端不建立逻辑连接。简单来说,当一台计算机向另一台计算机发送数据时,发送端不会确认接收端是否存在,就会发送数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频和普通数据的传输,例如视频会议都是用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

但时在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议,UDP的交换过程如下图所示

以上归纳:(1)将数据及源和目的封装成数据包,不需要建立连接。(2)每个数据报的大小限制在64K内(3)因无连接,是不可靠协议 (4)不需要建立连接,速度快


TCP是Transmission Control Protocol 的简称,称为传输控制协议。

TCP协,议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务器发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手:客户端向服务器发出连接请求,等待服务器确认,第二次握手,服务器向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接,

由于TCP协议的面向连接特性,它可以保证传输数据的安全性,所以是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。

以上归纳:(1)建立连接,形成传输数据的通道。(2)在连接中进行大数据量传输 (3)通过三次握手完成连接,是可靠协议 (4)必须建立连接,效率会稍低

TCP和UDP的区别

TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象。区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据。



而TCP通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。

在JDK中提供了两个类用于实现TCP程序,一个ServerSocket类,用于表示服务器度端,一个socket类,用于表示客户端。

通信时,首先创建代表服务器端的ServerSocket对象,该对象相当于开启了一个服务,并等待客户端的连接,然后创建代表客户端的socket对象向服务器端发送连接请求,服务器端响应请求,两者建立连接开始通信。(了解即可)

IP地址:用来唯一表示我们自己的电脑的,是一个网络标示

端口号:用来区别当前电脑中的应用程序的。

IP地址 :(1)网络中设备的标识。(2)不易记忆,可用主机名 (3)本地回环地址:127.0.0.1 主机名:localhost

端口号:(1)用于识别进程的逻辑地址,不同的进程的标识。(2)有效端口:0~65535,其中0~1024系统使用或者保留端口。(了解即可)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,559评论 1 114
  • 基本数据类型nullstringnumberBooleanundefined基本数据类型,理论上不应该存在属性和方...
    daisx阅读 225评论 0 1
  • 以此纪念我用One Note书写的第一篇。
    德国留声机阅读 207评论 1 0
  • 我前世的这一脚。让我灰呀灰(飞),眼看落入悬崖!那个女人一个新娘抱揽我入怀。这个女人没打灯。 黎明的曙光照亮了她,...
    雨射零丁阅读 228评论 0 0