1.JDK 和 JRE 有什么区别?
答:jre叫作Java运行环境,他主要包含jvm(虚拟机)和Java中的一些基本的类库;jdk的中文名叫作Java的开发工具包,是Java开发的核心,里面集成了jre环境和其他类库。
2.java 中操作字符串都有哪些类?它们之间有什么区别?
答:Java中字符串的类主要有三类,分别是String、StringBuffer、StringBuilder。
它们之间的区别是:String类的底层是final修饰的字符数组,一旦被创建就不能改变。
StringBuffer和StringBuilder都是字符串变量,是可以改变的对象。但StringBuilder是线程非安全的,StringBuffer是线程安全的。
3.接口和抽象类有什么区别?
答:接口不能有私有的方法和变量,而抽象类可以有私有的方法和变量;接口不能有方法的实现,而抽象类可以有方法的实现;接口强调规范、标准,而抽象类则侧重于所属关系;抽象类的实现类(子类)不能超过父类(抽象类)的访问范围;接口成员变量默认被public static final修饰,必须赋初始值,而抽象类的成员变量被default修饰。
4. 如何决定使用 HashMap 还是 TreeMap?
答:TreeMap的key是按照升序排列,底层结构是基于红黑树,适用于自然顺序查找;
HashMap底层是数组+链表的方式,链表主要用红黑树的数据结构,适用于对数据增加、删除、修改;
5.如何实现数组和List 之间的转换?
答:可以通过JDK中的Arrays.asList将数组转换成list。
例子:
String[] strs = new String[] {"aa", "bb", "cc"};
List<String> list = Arrays.asList(strs);
6.Mybatis 的类别名的配置方式有几种?
答:有3种方式
方式一:通过在Configuration.xml里面使用typeAliases标签 package name指定类的全限定路径,默认为类名首字母小写的类名。
例子:
<typeAliases>
<package name="org.xatu.demo.entity"/>
</typeAliases>
方式二:也是在Configuration.xml使用typeAliases标签 type指定类的全限定路径,alias为我们指定的别名。
例子:
<typeAliases>
<typeAlias type="org.xatu.demo.entity" alias="Entity"/>
</typeAliases>
方式三:通过注解方式@Alias("Entity")
7.Array和ArrayList有何区别?
答:从存储内容上看,Array数组可以包含八大基本类型和引用类型,并且只能存放同种类型的数据,ArrayList只能包含引用类型;从存储空间上来说的,Array每次创建的空间是固定的,ArrayList的 空间是动态扩展的。
8.线程和进程的区别?
答:总的来说的话,进程是资源分配的最小单位,线程是CPU调度的最小单位。线程是在进程下运行的,一个进程包含多个线程。
9.创建线程有哪几种方式?
答:三种方式创建线程
方式一:继承Thread类,重写该类的run方法
方式二:实现runnable接口的实现类,重写该类的run方法
方式三:实现Callable接口的实现类,并实现call()方法
10.线程有哪些状态?
答:新建状态(new)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead)。
11.什么是死锁?怎么防止死锁?
答:两个或两个以上的进程竞争同一系统资源造成了一种阻塞的现象,叫作死锁。
防止死锁:线程设置优先级、超时放弃
12.在Mybatis的核心配置文件中绑定接口有哪些方法?
答:主要是分为2种方式,xml配置和注解方式。在方法放上@Select、@Update这些注解,需要在xml配置文件里的namespace必须指定接口的全限定名。