1.拷贝文件,一般使用字符流,还是字节流?
采用字节流,原因是字符是根据字符复制,字节是根据二进制进行复制,比如音频文件的复制就需要字节流复制。
2.线程的几种实现方式?
- 通过继承Thread类实现。
- 通过实现Runnable接口
继承的扩展性不强,java支持单继承。
怎么启动线程?怎么区分?
调用Thread thread=new Thread(继承了thread对象/实现了Runnable)
直接调用thread. start(),
启用线程使用start()方法,调用后执行的是run方法。
区分可以使用thread.setName("名称");
这是一种规范,在创建线程以后都需要创建名称。
3.有没有使用过线程并发库?
多线程使用的是Java.util.current包,这个包是对线程的管理/优化。
java通过Executors提供四个线程池,分别为:
- NewCatchedThreadPool:创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无回收,则创建新的线程。
- NewFixThredPool:
- newSchedulThreadPool:
- newSingleThreadExecutor:
线程池的作用:
- 限定线程的作用,不会导致由于线程过多导致系统变慢/崩溃
- 线程池不需要每次都去创建或销毁,节约资源
- 相应时间快
4.什么是设计模式?常用的设计模式有哪些?
什么是设计模式:就是前人总结的,处理某种问题的一种方法。
单例模式(懒汉模式/饿汉模式:):
- 构造私有方法,只能让自己的类创建
- 在自己的类中创建一个单实例(懒汉模式是需要时才创建,饿汉模式就是一开始初始化就加载)
- 提供获取该实例对象的一个方法。
SpringIOC:使用的是工厂模式
SpringAOP:是用了动态代理模式
5、讲一下get/post的需求问题
- 共同点:都是通过http请求完成不同的操作
- 不同点:get会把参数放在浏览器中,post会放在http请求的包体中,get限制请求长度,不安全。post不会因为地址长度,而限制传输数据的长度,更安全。
- get:一般用于获取/查询信息
- post:一般用来做插入/添加
6、说一下你对servlet的理解
是用java编写的服务端的程序,这些servlet都需要实现servlet的接口,主要是交互式的浏览修改数据。继承Httpservlet,重写doPost/doGet.完成用户相应的操作。
简单说一下servlet的周期?
启动时加载servle,容器调用init,请求达到时运行service,结束时调用destory。
加载sevlet.class-->实例化sevlet-->init-->servlet(service)--servlet容器关闭调用destory。
7、jsp的内置对象?作用?
- request:客户端请求
- response:回传数据
- pageContext:网页的属性在这里管理
- session: 与请求回话周期有关
- application Servlet: 正在执行的全局变量
- out: 输出文件,内容
- config: servlet的配置
- page jsp:网页本身
- exception: 网页异常
四大作用域:
pageContext/request/response/application这些可以从jstl中获取数据。
8、说一下cookie和session的区别
共同点:session和cookie都是回话跟踪。
不同点:
- cookie通过客户端记录信息确认身份。session是通过服务端确认用户信息,但是session依赖于cookie
- session在一定的时间保存在服务端当访问增多时占内存,考虑减轻性能是用cookie
- 单个cookie不能超过4k数据,浏览器也限制保存个数
购物车放在cookie中,个人信息是放在session中。
但是禁用时可以是用cookie+数据库方式。
9.MVC各个实现部分
Mode:javabean
view:html/jsp
controller:Servlet/action/controller
10、讲解一下关系型数据库三范式?
- 所谓第一范式是每一列数据都是不可以分割的,同一列中不可以有多个值,就是实体类的属性不可以是多个值,不能有重复属性。
- 第二范式:要求数据库中的每个实例必须可以被唯一区分(主键)。
- 第三范式:就是外键。要求数据库表中不包含已在其他表中已包含的非主关键字信息。
11.事务的基本ACID特性?
事务是并发控制的基本单位,是用户定义的一个操作序列,这些要么全做,要么不做,是一个不可分割的单位。
- 原子性:操作事务不可分割
- 一致性:要么成功要么失败,回滚
- 隔离性:一个事务开启后,不i能受其他事务干扰
- 持久性:事务开始后,就不可以终止。
12、mysql默认最大的连接数?
为什么需要最大连接数?
特定服务器上面的数据库需要支持一定数目的同时连接,在数据库有个默认配置连接数。
默认是100,在max_connection=100.
13、mysql的分页?oracle的分页?
- mysql是limit
- oracle:要使用三层嵌套查询:
14、触发器的是用场景?
触发器:需要有触发条件:当条件满足做自动操作?
15、数据库连接池的作用?
和线程池的作用差不多。