初级Java程序员面试题(114~130企业真题)
114、编写一个Filter,需要(B)
A. 继承 Filter 类
B. 实现 Filter 接口
C. 继承 HttpFilter 类
D. 实现 HttpFilter 接口
115、有关MVC设计模式(B)描述不正确
A. 使用 Servlet 作为控制器
B. MVC 设计模式增大了维护难度
C. MVC 设计模式属于 Model 2
D. 模型对象向客户端显示应用程序界面
● Model 1:
Model 1的基础是JSP文件,它由一些相互独立的JSP文件,和其他一些Java Class 组成(不是必须的)。这些JSP从 HTTP Request中获得所需要的数据,处理业务逻辑,然后将结果通过 Response 返回前端浏览器。
● Model 2:
采用面向对象技术实现MVC模式从而扩展JSP/Servlet的模式被称为是Model 2模式。Apache Jakarta 项目中Struts是一个实现Model 2的很好的框架,它通过一些Custom Tag Lib处理表现层,用ActionFrom Bean表示数据,用自己提供的一个ActionServlet作为控制器实现页面的流转的控制功能。说的直白一些,model1即为单纯的 jsp+java,没有框架参与,通过response和request对象传送值域,而model2则使用较为流行的struts2框架(当然也可能是其他的MVC框架,例如SpringMVC)。
116、在Linux中,可以使用命令(C)加挂计算机上的非Linux文件系统
A. cat /proc/filesystems
B. ln
C. mount
D. df
117、下面关于Linux中shell的说法错误的是(D)
A. shell 是解释用户在终端键入的命令的一种中间程序
B. shell 可以读取并执行脚本文件中的命令
C. 用户可以使用参数将命令行的参数传递给 shell 脚本,从而实现在 Linux 中的交互式编程
D. 默认情况下,Linux 中创建的所有文件都具有执行权限
118、在Oracle中,当需要使用显式游标更新或删除游标中的行时,UPDATE 或 DELETE 语句必须使用(C)子句
A. WHERE CURRENT OF
B. WHERE CURSOR OF
C. FOR UPDATE
D. FOR CURSOR OF
119、在Oracle中,使用下列的语句CREATE PUBLIC SYNONYM parts FOR Scott.inventory;完成的任务是(D)
A. 将Scott.inventory 对象的访问权限赋予所有用户
B. 指定了新的对象权限
C. 指定了新的系统权限
D. 给Scott.inventory对象创建一个公用同义词 parts
120、下列说法正确的有(C)
A. class中的constructor不可忽略
B. constructor可以作为普通方法被调用
C. constructor在一个对象new时被调用
D. 一个class只能定义一个 constructor
121、下列运算符合法的是(D)
A、&&
B、<>
C、If
D、:=
122、下列哪种说法不正确(ABC)
A、实例方法可以直接调用超类的实例方法
B、实例方法可以直接调用超类的类方法
C、实例方法可以直接调用其他类的实例方法
D、实例方法可以直接调用本类的类方法
123、执行如下程序代码后,c 的值是(C)
int a = 0;
int c = 0;
do {
--c;
a = a - 1;
} while (a > 0);
A、0
B、1
C、-1
D、死循环
124、什么时候使用抽象类和接口
如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于 Java 不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
多数情况下抽象类都是共同特征的抽象,而接口是共同行为的抽象。
125、throws和throw有什么不同点?
throw和throws都是异常处理机制当中的关键字,throw是手动抛异常,throws是以声明的方式抛出异常,并且抛给调用者处理。
126、请编写一个jdbc查询任意一个数据库(如 MySQL、Oracle 等),数据库名为test,表名为user,只有一个字段。
class SqlConnectionUtil {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql;
String url = "jdbc:MySQL://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF8";
try {
Class.forName("com.MySQL.jdbc.Driver");
conn = DriverManager.getConnection(url);
stmt = conn.createStatement();
sql = "select * from user";
rs = stmt.executeQuery(sql);
while (rs.next()) {
String name = rs.getString("name");
System.out.println("姓名是:" + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
127、写一个多线程程序,四个线程对一个int 变量,2 个加 1,2 个减1,输出。
class TMain {
int j = 1;
public synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}
class T1 implements Runnable {
public void run() {
inc();
}
}
public synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
}
class T11 implements Runnable {
public void run() {
dec();
}
}
public static void main(String[] args) {
TMain t = new TMain();
T1 t1 = t.new T1();
T11 t11 = t.new T11();
for (int i = 0; i < 2; i++) {
Thread thread = new Thread(t1);
thread.start();
Thread thread1 = new Thread(t11);
thread1.start();
}
}
}
128、说出常用的10个linux操作命令,至少 5 个,并简述命令的作用。
● ls命令
-作用:显示目录内容,类似 DOS 下的 DIR
-格式:LS【options】【filename】
-常用参数:
>-a:all,不隐藏任何以"."字符开始的文件
>-l:使用较长的格式列出信息
>-r:按照文件名的逆序打印输出
>-F:加上文件类型的指示符ls -lF | grep / 过滤
● man ls 查询 ls 的帮助文件
● cat命令
-作用:显示文件内容,concatenate 的缩写,类似 dos 的 type 命令。
-格式:cat【options】【fielname】
-常用参数:
>-n:显示文件内容的行号。
>-b:类似-n,但是不对空白行进行编号。
>-s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。
● mv 命令
-作用:更改文件或者目录的名字。
-格式:mv[options]source destination
-常用参数:
>-f:强制模式,覆盖文件不提示。
>-i:交互模式,当要覆盖文件的时候给提示。
● rm 命令
-作用:删除文件命令,类似 dos 的 del 命令
-格式:rm【options】filenames
-常用参数:
>-f:强制模式,不给提示。
>-r,-R:删除目录,recursive
129、说出常见的5个linux系统日志,至少3个并做简述日志的用途。
● access-log记录 HTTP/web 的传输
● acct/pacct记录用户命令
● aculog记录 MODEM 的活动
● btmp记录失败的纪录
● lastlog记录最近几次成功登录的事件和最后一次不成功的登录
● messages从 syslog 中记录信息(有的链接到 syslog 文件)
● sudolog记录使用 sudo 发出的命令
● sulog记录使用 su 命令的使用
● syslog从 syslog 中记录信息(通常链接到 messages 文件)
● utmp记录当前登录的每个用户
● wtmp一个用户每次登录进入和退出时间的永久纪录
● xferlog记录 FTP 会话
130、创建一张员工表,表名EMPLOYEES,有四个字段,EMPLOYEE_ID: 员工表( 主键)、DEPT_ID: 部门号、EMPLOYEE_NAME:员工姓名、EMPLOYEE_SALARY:员工工资。
● 写出建表语句:
CREATE TABLE EMPLOYEES(
EMPLOYEE_ID int not null primary key,
DEPT_ID int,
EMPLOYEE_NAME char(40),
EMPLOYEE_SALARY double
);
● 检索出员工工资最高的员工姓名和工资
select * from user where employee_salary= (select max(employee_salary) from user);
● 检索出部门中员工最多的部门号和此部门员工数量
select dept_id,count(*) cno from user GROUP BY dept_id desc limit 1;