avatar

晋路Java笔试题

1.中文乱码问题

1.1.JSP中输出中文乱码的问题

1
<%@ page language="java" contentType="text/html; charset = UTF-8" pageEncoding = "UTF-8" %>

1.2.获取表单提交的数据时的中文乱码

1
request.setCharacterEncoding("UTF-8")

1.3.URL中的中文问题

1
URLDecoder.decode("chinese string", "UTF-8")

1.4.数据库访问时的乱码问题

1
jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

2.什么是Spring MVC,Spring MVC的优缺点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Model(模型) View(视图) Controller(控制器)
MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开,Spring MVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架
优点:
1.耦合性低
2.重用性高
3.部署快
4.可维护性高
5.有利软件工程化管理
分层,结构清晰,耦合性低,大型项目代码的复用性得到极大的提高,开发人员分工明确,提高了开发的效率,维护方便,降低了维护成本
缺点:
1.没有明确的定义
2.不适合小型,中等规模的应用程序
3.增加系统结构和实现的复杂性
4.视图与控制器间的过于紧密的连接
5.视图对模型数据的低效率访问
6.一般高级的界面工具或构造器不支持模式
简单的小型项目,使用MVC设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用

3.什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?

1
2
3
4
5
6
7
8
9
10
三层架构(3-tier application) 通常意义上的copy三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)

区分层次的目的即为了"高内聚,低耦合"的思想

优点:
  1、开发人员可以只关注整个结构中的其中某一层
  2、可以很容易的用新的实现来替换原有层次的实现
  3、可以降低层与层之间的依赖
  4、有利于标准化
  5、有利于各层逻辑的复用

4.请问软件开发中的设计模式你会使用哪些?

1
单例模式,DAO模式,模板方法,工厂模式,委托代理模式,MVC模式等

5.请问类与对象有什么区别?

1
2
3
4
5
6
7
8
9
10
1.定义不同
类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起
对象是具有类型的变量
类和对象是面向对象编程技术中的最基本的概念
2.范畴不同
类是一个抽象的概念,它不存在于现实中的时间、空间里,类知识为所有的对象定义了抽象的属性与行为
对象是类的一个具体,它是一个实实在在存在的东西
3.状态不同
类是一个静态的概念,类本身不携带任何数据;当没有为类创建任何数据时,类本身不存在于内存空间
对象是一个动态的概念,每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为,属性可以随着它自己的行为而发生改变

6.请问abstract class和interface有什么区别?

1
2
3
4
5
6
1.抽象类可以有构造方法,接口中不能有构造方法
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法
4.抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型

7.请写出Java API中常用的5个包,并个举两个类加以说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.java.lang: 语言包,内含Java语言的核心类库
String: 引用类型的字符串
Integer: int的封装类
2.java.sql: 该包提供了使用Java语言访问并处理存储在数据源(通常是一个关系型数据库)中的数据API
SQLException: 当访问数据出现问题时抛出的异常
DriverManager: 负责管理JDBC驱动程序,使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接
3.java.util: 该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)
ArrayList: 单列动态数组集合
HashMap: 基于哈希表(散列表),实现Map接口的双列集合
4.java.io: 输入/输出流包,内含标准输入/输出流类及文件操作类库
InputStream: 字节输入流,用来将文件中的数据读取到java程序中
OutputStream: 字节输出流,用来将文件或者字符串输出到新的文件中
5.java.net: 网络包,内含网络编程有关的类库
InetAddress: Java对IP地址的封装,几乎所有的Java网络相关的类都和它有关系
Socket: 是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递

8.什么是ssh整合?

1
2
3
4
Struts(表示层) + Spring(业务层) + Hibernate(持久层)
1.Struts: 是一个表示层框架,主要作用是界面展示,接受请求,分发请求;在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发
2.Hibernate: 是一个持久层框架,它只负责与关系数据的操作
3.Sping: 是一个业务层框架,是一个整合的框架,能够很好地粘合表示层和持久层

9.Overload和Override的区别

1
2
3
1.Overload是重载的意思,Override是覆盖的意思,也就是重写
2.重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)
3.重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现

10.final,finally,finalize的区别

1
2
3
1.在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)
2.finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下(这句话其实存在一定的问题)
3.Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等

11.&和&&的区别

1
2
3
1.&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true;否则,只要有一方为false,则结果为false
2.&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式
3.&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位

12.Collection和Collections的区别

1
2
3
1.Collection: 是集合类的上层接口;本身是一个Interface,里面包含了一些集合的基本操作;Collection接口是Set接口和List接口的父接口
2.Collections: 是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作;本身是一个包装类
3.Collection 表示一组对象,这些对象也称为collection的元素;一些 collection 允许有重复的元素,而另一些则不允许;一些collection 是有序的,而另一些则是无序的

13.Math.round(11.5)等于多少?Math.round(-11.5)等于多少?

1
2
返回的值是long类型的,规律是四舍五入(负数的小数位大于5会变小,小于等于5会变大)
12和-11

14.sleep()和wait()有什么区别

1
2
1.sleep()方法是使线程停止一段时间的方法,在sleep()时间间隔期满后,线程不一定立即恢复执行;这是因为在那个时刻,其他线程可能正在运行,而且没有被调度为放弃执行,除非醒来的线程具有更高的优先级或者正在运行的线程因为其他原因而阻塞
2.wait()方法是线程交互时,如果线程对一个同步的对象发出一个wait()方法调用,该线程会暂停执行,被调用的对象进入等待状态,直到被唤醒或者等待的时间到

数据库部分

15.查询成绩表里面,假如考试就3门,语文、数学、英语,查询一下五年级2班的数学平均分是多少?五年级3班的综合大排名是多少(假如五年级有10个班,3班在这10个班里面排行第几?)

1
2
select avg(数学成绩) from 成绩表 where 班级 = 五年级2班;
select avg(成绩), @curRank := @curRank + 1 排名 from 成绩表,(select @curRank := 0) q where 班级 = 五年3order by 班级

16.查询学生表中谁的身高最高

1
select max(身高), 学生姓名 from 学生表;

17.存储过程和函数的区别

1
2
3
1.存储过程实现的功能要复杂一些,而函数的针对性更强
2.存储过程可以返回多个值,函数只能有一个返回值
3.存储过程一般独立的来执行,而函数可以作为其他SQL语句的组成部分来出现

18.事务是什么?

1
一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务

19.什么是游标,什么时候能够使用?

1
2
游标: 数据库中的指针
循环时使用

20.什么是触发器?如何建立一个自增量的字段(整数字段)?

1
2
触发器(TRIGGER)是由事件来触发某个操作;这些事件包括INSERT语句、UPDATE语句和DELETE语句,当数据库系统执行这些事件时,会激活促发其执行相应的操作
auto_increment = 1

程序设计

21.使用两种方法将一个字符串反转

1
2
1.通过StringBuilder或StringBuffer的reverse方法进行反转
2.通过字符串的拼接进行反转

22.有这么一个表,里面有一个字段a,字段类型是字符串,但是实际上里面填充的内容全是数字,写一个查询,查询所有内容,按该字段降序排列

1
select * from aa order by a desc;
文章作者: 123
文章链接: https://gao5805123.github.io/123/2020/05/25/%E6%99%8B%E8%B7%AFJava%E7%AC%94%E8%AF%95%E9%A2%98/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123
打赏
  • 微信
    微信
  • 支付宝
    支付宝