transient和volatile是java关键字吗?
- transient是变量修饰符。标记为transient的变量在对象存储时,这些变量不会被持久化。
- volatile也是变量修饰符。每次线程访问时,都从共享内存中重读变量的值;当变量发生变化时,线程将变量写回到共享内存。在任何时候两个不同线程总是可以看到某个成员变量的同一个值。
抽象类和接口有什么区别?
- 抽象类是指声明方法而不去实现方法的类。不能创建abstract类的实例。
- 接口中所有的方法都是抽象的,没有方法体。接口只可以定义static final成员变量。
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
- 可以继承接口
- 可以实现接口
- 可以继承实体类,要求实体类拥有子类可访问到的构造器。
能说一下java的反射机制吗?
- Java反射机制是在运行状态中,是指可以动态获取信息以及动态调用对象方法。主要功能有:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
请说一下MVC架构?
- MVC:首先控制器C接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型M用业务逻辑来处理用户的请求并返回数据,最后控制器C用相应的视图格式化模型返回的数据,并通过表示层V呈现给用户。
请说一下final,finally和finalize的区别?
- final:关键字修饰符。不能有子类(一个类不能既是abstract又是final);final的变量和方法在使用不被改变。【final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。】
- finally:异常处理时提供finally块来执行任何清除操作。
- finalize:方法名。使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
请说一下HTTP请示的基本过程
HTTP传输的基本过程:
1. 客户端连接一个主机
2. 服务器接收连接
3. 客户端请求一个文件,
4. 服务器发送一个应答
ArrayList和Vector的区别?
- 同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
- 数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
- Vector可以设置容量增长的参数,而ArrayList不可以。
HashMap和Hashtable的区别?
- public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map - HashMap是非synchronized,而HashTable在默认的情况下是synchronized。
HashMap实现同步的方法:
1) Map m = Collections.synchronizeMap(hashMap);
2) Java 5以后提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
- HashMap允许一个 null 键和多个 null 值。,HashTable则不行,key和value都不允许出现null值。
- Hashtable、HashMap都使用了 Iterator迭代器,HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTable的enumerator迭代器不是fail-fast的。
- HashTable直接使用对象的hashCode,而HashMap则需要重新计算hash值。
- HashTable中hash数组默认大小是11,增加的方式是 old*2+1;HashMap中hash数组的默认大小是16。
&和&&的区别
- &是位运算符,表示按位与运算
- &&是逻辑运算符,表示逻辑与(and)
Collection 和 Collections的区别
- Collection是集合类的父接口,继承与他的接口主要有Set 和List.
- Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
- short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
- short s1 = 1; s1 += 1;(可以正确编译)
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
- 重载Overloading是一个类中多态性的一种表现。
- 重写Overriding是父类与子类之间多态性的一种表。
- Overloaded的方法是可以改变返回值的类型:当方法参数列表不同时已经符合重载,因此也可以改变返回值类型;但如果方法参数列表一样时不可以改变返回值类型。
sleep() 和 wait() 有什么区别?
- sleep是Thread的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
- wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify/notifyAll方法后本线程才进入对象锁定池准备获得对象锁进入运行状态。