1、java8的新特性
重复注解:java5中相同的注解在同一个位置,只能生命一次,java8引入的重复注解可以在同一个位置生命多次。
扩展注解的支持:java的注解广泛的很,甚至连方法的异常也可以添加。
optional:引入Optional类来放置空指针异常,Optional类实际上是一个容器,可以保存类型T,或者空值。
Base64:在java8中,Base64编码成为了java类库的标准,同时还提供了对URL,mime友好的编码器玉解码器。
2、java中创建线程的三种方式
a、继承Thread类创建线程类
(1)定义一个Thread的子类,重写run方法。
(2)调用start方法启动线程
public class FirstThreadTest extends Thread{
int i = 0;
//重写run方法,run方法的方法体就是现场执行体
public void run()
{
for(;i<100;i++){
System.out.println(getName()+" "+i);
}
}
public static void main(String[] args)
{
for(int i = 0;i< 100;i++)
{
System.out.println(Thread.currentThread().getName()+" : "+i);
if(i==20)
{
new FirstThreadTest().start();
new FirstThreadTest().start();
}
}
}
b、通过创建Runnable接口创建线程类
(1)重写run()方法
(2)创建Runnable实现类的实例,还是调用Thread的start()方法进行启动
RunnableThreadTest rtt = new RunnableThreadTest();
new Thread(rtt,"新线程1").start();
new Thread(rtt,"新线程2").start();
c、通过Callable和Future创建线程
(1)创建Callable接口的实现类,并实现call()
4、springMvc的执行流程
a、客户端发出一个请求到达web.xml 然后由dispatchservlet根据mapping映射配置去找队形的handel,handel封装了处理业务的逻辑代码。处理完后返回一个modelAndview给dispatchservlet。
5、对ajax的理解
a、ajax异步请求,局部刷新页面
6、外部类与内部类的调用
a、内部类可以直接调用外部类包括private的成员变量,this.关键之调用即可
b、外部类调用内部类需要建立内部类对象
7、多线程
a、进程是一个独立运行环境,线程可以看做是进程的一个任务,qq是一个进程,qq窗口是一个线程。
8、AOP与IOC的概念
a、IOC:控制反转,创建对象的方式优原来的在代码中,转变为了在容器中创建。
b、AOP:面向切面编程
9、Arraylist与LinkedList的区别
a、前者是数组结构,后者是链表结构,获取特定元素的时候,ArrayList比较快,他通过数组下标直接获取,而linkedlist则需要移动指针。删除元素的时候,linkedlist比较快。
10、类加载的过程
a、遇到一个新的类时,首先会到方法区去找class文件,如果没有找到就会去硬盘中找class文件,找到后就会返回,将class文件加载到方法区中,在类加载的时候,静态的成员变零会被分配到方法去的静态区域,非静态分配非静态区域。当所有的静态代码执行完,类加载才算完成。
11、事物的特性
a、原子性:是指在一个事物中,妖魔全部执行成功,要么全部失败滚回
b、一致性:事物执行之前和执行之后都处于一致性状态
c、持久性:事物多数据的操作是永久性
d、隔离性:当事物正在对数据操作时,另一个事物不可以对数据进行操作,也就是多个并发事物之间相互隔离。
12、匿名内部类
a、匿名内部类是没有名字的内部类,不能继承其他类,但一个内部类可以作为一个接口,由另外一个内部类实现。
14、&和&&的区别、
&是位运算符,&&是逻辑运算符,表示逻辑与and
15、Collection和Collections的区别
Collection是集合类的上级接口,继承他的几口只要有Set和list,Collections是针对集合类的一个帮助类,他提供的一系列静态方法实现对各种集合的搜索,排序,线程安全化操作。
16、数组和String
a、数组没有length()方法,有length这个属性,String有length()
17、Set不能重复,那么使用什么方法类区别重复与否呢
iterator
18、
1)构造器不能被继承,所以不可以被重写,可以被重载
2)String类是final类,所以不可被继承
3)两个对象值相同(x.equals(y)==true),他的hash code也相同
4)Java编程语言只有值传递
5)一个char占16个字节,所以放一个中文是没有问题的
6)String和StringBuffer的区别:
String的长度是不可变的,StringBuffer可以
7)谈final,finally,finalize的区别:
final:如果一个类被声明成final,意味着它不能派生出新的子类,不能作为父类被继承,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
finally:
finalize:
8)instanceof作用是什么?
他首先是比较运算符,判断某个对象是否属于某个类,返回结果是boolean.
9)break和continue
break:跳出循环体
continue:忽略本次循环,进行下次循环
10)数组的长度和赋值不能同时进行
11)switch语句能否作用在byte上,能否作用在long上或者String上?
在switch(value)中,value只能是整形表达式或枚举常量,其中,整形表达式可以是int或者Internet类型。因为byte,short,char可以隐式的转换为int,所以这些类型都可以作为switch的值;但是long,String不可以转换为整型
12)Java中Runnable和Callable有什么不同
Runnable从JDK1.0开始就有了,Callable是在JDK1.5才有的
区别:Callable的call()方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能
13)Servlet生命周期
a、web容器加载servlet,开始生命周期
b、调用init()初始化
c、调用service(),该方法会根据请求的不同调用不同的do**()
d、结束服务时,调用destory()
14)forward()和redirect()
forward():服务器内部的重定向,地址栏不变
redirect():地址栏改变
15)java中error和exception的区别
相同点:Error和exception类的父类都是throwable类
区别:error类一般是指与虚拟机有关的问题系统崩溃,内存空间不足
Exception类表示程序可以处理的异常。
16)Session cookie的区别
session的数据是放在服务器上,cookie则放在客户浏览器上
17)wait()和sleep()的区别
sleep来自Thread类,wait来自Object类
调用sleep()方法的过程中,线程不会释放对象锁,而调用wait方法会释放对象锁。
sleep睡眠后不出让系统资源,wait出让系统资环,其他线程可以占用CPU
sleep(milliseconds)需要指定一个睡眠的时间,时间到的话会自动唤醒
18) JAVA中堆和栈的区别
a、堆是用来存放有new创建的对象和数组
b、基本数据类型变量和对象的引用都是在栈分配的
19)HashTable线程不安全,HashMap线程安全