java面试题

--------1、java基础
--------2、MVC框架基础
--------3、前端基础
--------4、数据库基础
--------5、linux基础命令
--------6、jdk1.8的新特性

1、java基础
1.1编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。

2、String、StringBuffer、StringBuilder之间的区别?
1、String表示不可修改的字符串,StringBuffer和StringBuilder可以动态构造字符数据
2、String重写了equals方法,StringBuffer和StringBuilder并没有
3、StringBuffer是线程安全的,StringBuilder是线程不安全的

final、finally、finalize的区别
final修饰变量,表示不是被修改;修饰对象表示对象的引用不可以被修改,但是对象的内容可以修改;修改方法,表示不可以被重写;修改类表示该类不能被继承
finally是异常处理语句的一种
finalize是Object类中的一个方法,在垃圾收集器执行的时候就会调用被回收对象的此方法,可以重写此方法

java集合有几种?
有三种,list,set,map
list和set是单列集合,且他们都有个上层接口是Collection。
list是有序可重复的,有ArrayList(查询快增删慢、线程不安全)、LinkedList(查询慢增删快,线程不安全)、Vector(查询快增删慢,线程安全);
set是无序不可重复的,有HashSet(通过HashCode和equals方法实现不可重复,是无序的)、TreeSet(通过CompareTo或者Compare方法保证不可重复,是有序的)
Map是双列集合,key是不可以重复的,value是可重复的,key和value是可以为null,有HashMap(无序的)和TreeMap(key是有序的)

HashMap和Hashtable的区别
(条理上还需要整理,也是先说相同点,再说不同点)
一样的:
1、HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口
2、Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
不同点:
1、Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
2、Hashtable线程安全,HashMap线程不安全
3、HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
4、HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

多线程有几种实现的方法?同步有几种实现方法?
多线程有两种实现方法:继承Theard类,实现Runnable接口
同步实现有两种:同步代码块,同步方法(使用Synchronized关键字,以及使用的是同一个锁定就可以了)

启动一个线程是用run()还是start()? .
启动一个线程使用的是start方法,是线程处于就绪状态,以后可以被调度成运行状态。而run()方法只是职称该线程所关联的代码

sleep和wait有什么区别?
1、sleep能在任何地方使用,wait只能是同步方法或代码块中使用
2、sleep是Tread线程类中的方法,而wait是Object类中的方法
3、sleep和wait都能够暂停当前线程并让出CPU,但是sleep并不会释放当前持有的锁定,到时间后会继续执行,而wait会放弃所有锁定并需要通过notify/notifyAll获取到对象锁定后才能执行
4、sleep需要捕获或者抛出异常,而wait/notify/notifyAll并不需要

单例模式怎么写?一个类Class只有一个实例存在
饿汉模式:

public class SingleTon {
	private SingleTon(){}
	private static final SingleTon singleTon = null;
	public static SingleTon getInstance(){
		if(singleTon == null){
		 singleTon = new SingleTon();
 		}
		 return singleTon;
	 }
}

饱汉模式

public class SingleTon {
	private SingleTon(){}
	private static final SingleTon singleTon = new SingleTon();
	public static SingleTon getInstance(){
		 return singleTon;
	 }
}

递归算法:

第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
package cn.itcast;

import java.util.Date;

public class A1 {

	public static void main(String [] args)
	{
		System.out.println(computeAge(8));
	}
	
	public static int computeAge(int n)
	{
		if(n==1) return 10;
		return computeAge(n-1) + 2;
	}
}

spirng是什么?
spring就是一个轻量级的IOC和AOP的开源框架
IOC:将对象的创建以及维护对象之间的关系交给Spring容器进行管理,而不是由程序猿手动的创建和维护了
AOP:将一些例如安全、日志、事务等逻辑相对独立的部分,独立出来作为切面,通过spring的配置文件,插入到目标对象的方法中,实现了方面组件和目标对象之间的解耦

spring和springBoot之间的区别

109页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值