Java基础题

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方法后本线程才进入对象锁定池准备获得对象锁进入运行状态。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,144评论 0 62
  • 集合框架: 1)特点:存储对象;长度可变;存储对象的类型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang阅读 1,300评论 0 4
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,526评论 0 3
  • 即使一个人,也想好好的走遍小北京,一切安好
    晗朵的嫁衣阅读 264评论 0 0