Java基础题

作者: vaneL | 来源:发表于2017-08-18 20:21 被阅读0次

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方法后本线程才进入对象锁定池准备获得对象锁进入运行状态。

相关文章

网友评论

    本文标题:Java基础题

    本文链接:https://www.haomeiwen.com/subject/ouwarxtx.html