2020.02.14面试题10道

1.为什么要用ORM?和JDBC有何不一样?

ORM是一种思想,就是把Object转变成数据库中的记录,或者把数据库中的记录转变成Object,我们可以用jdbc来实现这种思想,其实,如果我们的项目是严格按照oop方法编写的话,我们的jdbc程序不管是有意还是无意,就已经在实现orm的工作了。
现在有许多orm工具,他们底层调用jdbc来实现orm工作,我们直接使用这些工具,就省去了直接使用jdbc的繁琐细节,提高了开发效率,现在用的较多的orm工具是hibernate。也听说一些其他orm工具,如toplink,ojb等。

2.JDBC中PreparedStatement相比Statement的好处(重点)

一个sql命令发给服务器去执行的步骤为:语法检查,语义分析,编译成内部指令,缓存指令,执行指令等过程。好处是:提高性能,可以防止sql注入。

3.分层开发的优势

1)每一层专注于自己的功能实现,便于提高质量。
2)便于分工协作,从而提高效率
3)便于代码复用
4)便于程序开发

4.分层开发的原则

原则:
1)封装性原则:每个层次向外提供公共的统一接口,而隐藏内部的功能实现细节,其他层次不能也没有必要了解其内部细节。
2)顺序访问原则:下一层为上一层提供服务,而不使用上一层提供的服务。业务逻辑层可以访问数据访问层的功能,而数据访问层不能访问业务逻辑层。

5Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是那些类?

流是指一连串流动的自动,是以先进先出的方式发送和接收数据的通道。
当先一个流写入数据是,这个流被称为输出流,输出流可以将信息送往程序的外部,如硬盘上的文件、打印机上的文件等。
输出流:只能从中读取数据,而不能向其中写入数据;
输出流:只能像其中写入数据,而不能从中读取数据;
字节流的操作最小数据单元为8位的字节,而字符流操作的最小数据单元是16位的字符。
字节流和字符流的区分非常简单,字节流建议用于二进制数据(如图片),而字符流用于文本,他们的用法几乎是完全一样的。
字节流继承于InputStream、OutputStream,字符流继承于InputStreamReader、OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

6.字节流与字符流的区别(重点)

读写的时候一个是按字节读写,一个是按字符。
在读写文件需要对内容按行处理,比如比较特定的字符,处理某一行数据的时候一般会选择字符流。
只是读写文件,和文件内容无关的,一般选择字节流。

7.什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用?

我们有时候要将一个 java 对象变成字节流的形式传出去或者从一个字节流中恢复成一 个 java 对象,例如,要将 java 对象存储到硬盘或者传送给网络上的其他计算机,这个过程我 们可以自己写代码去把一个 java 对象变成某个格式的字节流再传输,但是,java 虚拟机本 身就提供了这种支持,我们可以调用 OutputStream 的 writeObject 方法来做,如果要让 java 帮我们做,要被传输的对象必须实现serializable接口,这样,javac编译时就会进行特殊处理, 编译的类才可以被 writeObject 方法操作,这就是所谓的序列化.需要被序列化的类必须实 现 Serializable 接口,该接口是一个 mini 接口,其中没有需要实现的方法,implements Serializable 只是为了标注该对象是可被序列化的.

8.序列化的概念和序列化ID的作用?

对象经常要通过 I/O(输入输出设备)进行传送,让你写程序传递对象,你会怎么做?把对 象的状态数据用某种格式写入到硬盘,Person->“zxx,male,28,30000”Person,既然大家 都要这么干,并且没有个统一的干法,于是,sun 公司就提出一种统一的解决方案,它会把对象 变成某个格式进行输入和输出,这种格式对程序员来说是透明(transparent)的,但是,我们 的某个类要想能被 sun 的这种方案处理,必须实现 Serializable 接口. ObjectOutputStream.writeObject(obj);//对象输出流保存对象,要使用序列化操作 Object obj = ObjectInputStream.readObject( );//对象输入流读取对象,使用反序列化操 作 序列化 id 的作用是什么呢,用以下场景来解释它的作用: 假设两年前我保存了某个类的一个对象,这两年来,我修改该类(类名保持不变) ,删除了 某个属性和增加了另外一个属性,两年后,我又去读取那个保存的对象,会有什么结果?Sun 的 jdk 无法获知你保存的对象到底是未修改前的类的对象还是修改后的类的对象.为此,一个解 决办法就是在类中增加版本号信息,每一次类的属性修改,都应该把版本号升级一下,这样,在 读取时,比较存储对象时的版本号与当前类的版本号,如果不一致,则直接报版本号不同的错!, 此处的版本号其实就是序列化 ID。

9.JavaScript变量有哪些数据类型?

JavaScript是一种弱类型语言,在声明变量是不需要值变量的类型,变量的类型有赋给变量的值来决定。
常用的基本数据类型:
1.undefined(未定义类型)
2.null(空类型)
3.number(数值类型)
4.string(字符串类型)
5.boolean(布尔类型)

10js中3中弹出式消息提醒的命令是什么?

alert("输入数据无效");//警告
confirm("确认保存吗?");//确认窗口
prompt("请在此输入你的姓名");//信息输入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值