目录
一、简单讲下 Java 的跨平台原理
二、装箱与拆箱
三、实现一个拷贝文件的工具类使用字节流还是字符流
四、介绍下线程池
五、JSP和 Servlet 有哪些相同点和不同点
六、简单介绍一下关系数据库三范式
七、Mysql 数据库的默认的最大连接数
八、说一下 Mysql 和 Oracle 的分页
九、简单讲一下数据库的触发器的使用场景
十、简单讲一下数据库的存储过程的使用场景
十一、简单介绍一下 Activiti
十二、编写一个 Servlet
一、简单讲下 Java 的跨平台原理
由于各个操作系统(Windows,Linux等)支持的指令集不是完全一致的。就会让我们程序在不同的操作系统上要执行不同的程序代码。Java 开发了适用于不同操作系统及位数的 Java 虚拟机来屏蔽系统之间的差异,提供统一的接口(Java API)。对于 Java 开发者而言,只需要在不同的操作系统上安装对应的 Java 虚拟机即可。这时我们的程序只需要遵循 Java 规范,就可以在所有的操作系统上运行 Java 代码。如果我们需要将系统部署到不同的环境时,只需要在系统上安装对应版本的 Java 虚拟机(JVM)即可。
二、装箱与拆箱
装箱:把基本数据类型转换成对应的包装类型(Integer i = 1:自动装箱,源码中通过 Integer.valueOf(1)方法进行装箱)。
拆箱:把包装类型转换为基本数据类型(int j = i:自动拆箱,手动拆箱:int j = i.intVaule()也是自动拆箱的源码中所使用的方法)。
为什么有了基本数据类型,还需要包装类型:因为Java是面向对象的语言,而基本数据类型不具备现象对象的特性(null等)。
三、实现一个拷贝文件的工具类使用字节流还是字符流
我们拷贝的文件不确定是只包含字符流,有可以能有字节流(图片、声音、图像等),为考虑到通用性,要使用字节流。
四、介绍下线程池
JDK5 中增加了并发库,为 Java 线程的管理和使用提供了强大的便利性。java.util.current 包中提供了对线程的优化和管理的各项操作,该包提供了线程的运行,线程池的创建,线程声明周期的控制。
Java 通过 Executors提供四个静态方法创建四种线程池,分别是:
【1】newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则创建新线程。
【2】newFixedThreadPool:创建一个定长线程池,可以控制最大线程并发数,超出的线程会在队列中等待。
【3】newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行。
【4】newSingleThreadExecutor:创建一个单线程的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO,LIFO,优先级)执行。