笔试习题总结

一、JSP中静态include指令与动态include指令

1、使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<!-- 静态 -->
<%@include file="scriptlet.jsp" %>
<!-- 动态 -->
<jsp:include page="scriptlet.jsp" />
</body>
</html>

2、区别

  1. 表达式的支持
    • 静态导入(include指令)通过file属性指定被包含的文件,且file属性不支持任何表达式
    • 动态导入(include动作)通过page属性指定被包含的文件,且page属性支持JSP表达式
  2. 编译方式
    • 使用静态导入(include指令)时,被包含的文件内容会原封不动的插入到包含页中,然后JSP编译器再将成后的文件最终编译成一个Java文件
    • 使用动态导入(include动作)包含文件时,当该标识被执行时,程序会将请求转发(不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译
  3. 命名冲突
    • 静态导入使用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含、包含文件中不能有重名的变量或方法
    • 动态导入使用include动作包含文件时,由于每个文件是单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不相冲突的
  4. 导入方式
    • 静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet,因此被导入页面甚至不需要是一个完整的页面
    • 动态导入则在Servlet中使用include方法来引入被导入页面的内容
  5. 编译指令
    • 静态导入时被导入页面的编译指令会起作用
    • 动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容

二、Java基本语法

1、抽象类与接口的区别

抽象类

特点:

1.抽象类中可以构造方法

2.抽象类中可以存在普通属性,方法,静态属性和方法。

3.抽象类中可以存在抽象方法。

4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。

5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。

接口

1.在接口中只有方法的声明,没有方法体。

2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上

public static final

3.在接口中的方法,永远都被public来修饰。

4.接口中没有构造方法,也不能实例化接口的对象。

5.接口可以实现多继承

6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。

2、关于final的重要知识点;

  1. final关键字可以用于成员变量、本地变量、方法以及类。
  2. final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
  3. 不能够对final变量再次赋值。final方法不能被重写。final类不能被继承。
  4. 本地变量必须在声明时赋值。
  5. 在匿名类中所有变量都必须是final变量。
  6. 没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。

3、数据类型转换

当使用 +、-、*、/、%、运算操作是,遵循如下规则:

  • 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型。
  • 如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型
  • 如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型
  • 否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。

另外在Java中,给double类型的幅值直接写小数就可以,给float类型的幅值则需要加一个f:

1
2
float f=3.0f;
double d=3.0;
1
2
3
4
5
6
int a=1/3;//结果为int型,不需要转换
float b=1/3.0f;//int与float操作,int转换为float型,结果也为float型
float c=(float) (1/3.0);//int与double操作,int转换为double型,结果也为double型,所以必须强制转换为flaot
double d=1/3;//结果为int,自动转换为double
double e=1/3.0f;//结果为float,自动转换为double
double f=1/3.0;//结果为double,不需要转换

4、方法的重写(override)两同两小一大原则:

  • 方法名相同,参数类型相同
  • 子类返回类型小于等于父类方法返回类型
  • 子类抛出异常小于等于父类方法抛出异常
  • 子类访问权限大于等于父类方法访问权限

5、重载

重载的概念是:

方法名称相同,参数个数、次序、类型不同

因此重载对返回值类型没有要求,可以相同,也可以不同

但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值类型不同,则无法构成重载

6、操作符优先级

优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ – 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 \ 从左向右
11 && 从左向右
12 \ \ 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= \ = ^= ~= <<= >>= >>>= 从右向左

三、虚拟机参数配置

-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3,其最小内存值和Survivor区总大小分别是()答案:10240m,2048m

  • -Xmx10240m:JVM最大可用内存为10240M。
  • -Xms10240m:JVM初始内存为10240M
  • -Xmn5120m:代表新生代
  • -XXSurvivorRatio=3:代表Eden:Survivor = 3。Eden:Survivor=3:1

计算Survivor大小, Eden:Survivor = 3,总大小为5120,3x+x+x=5120 x=1024

四、磁盘

1、磁道,扇区,柱面和磁头数

  1. 磁道:

    当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。一张1.44MB的3.5英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。

  2. 扇区:

    磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。1.44MB3.5英寸的软盘,每个磁道分为18个扇区。

  3. 柱面:

    硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量

硬盘的容量=柱面数*磁头数*扇区数*512B。

2、簇

“簇”是DOS进行分配的最小单位。当创建一个很小的文件时,如是一个字节,则它在磁盘上并不是只占一个字节的空间,而是占有整个一簇。DOS视不同的存储介质(如软盘,硬盘),不同容量的硬盘,簇的大小也不一样。簇的大小可在称为磁盘参数块(BPB)中获取。簇的概念仅适用于数据区。

  1. 簇是DOS进行分配的最小单位。 扇区是磁盘最小的物理存储单元。前者是逻辑上的概念
  2. 每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。
  3. 不同的存储介质,不同容量的硬盘,不同的DOS版本,簇的大小也不一样。
  4. 簇的概念仅适用于数据区。
  5. 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍 ;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。