`

Java面试基础(一)

 
阅读更多
1、面向对象的特征有哪些方面:

A:抽象

B:继承

C:封装

D:多态

2、Java基本的数据类型:

    Java基本数据类型包括:byte、short、int、long、float、double、boolean、char
    String不是基本的数据类型,是对象。
    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类。

3、Java基本类型与引用类型的区别:

Java 提供两种不同的类型:引用类型原始类型(或内置类型)。另外,Java 还为每个原始类型提供了封装类(Wrapper)。下面是java里面的原始类型和对应的封装类:
   A: boolean-----Boolean 
   B: char--------Character 
   C: byte--------Byte 
   D: short-------Short 
   E: int---------Integer 
   F: long--------Long 
   G: float-------Float 
   H: double------Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关

4、String 和StringBuffer的区别:

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffer来动态构造字符数据。
--------------------------------------------------------------------------------
String   s;每次对s进行赋值操作是都将生成一个新的String实例;
StingBuffer sb;sb则不然,它始终是同一个实例;
所以在经常动态的改变字符串的值时用StingBuffer效率比较高,java生成一个实例的代价较大。

5、说出ArrayList,Vector, LinkedList的存储性能和特性

1)ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢;
2)Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差;
3)LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

6、Collection 和 Collections的区别。

Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

7、HashMap和Hashtable的区别。

1).HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

2).HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。

3).HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4).HashTable使用Enumeration,HashMap使用Iterator。

5).HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6).哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
     int hash = key.hashCode();
     int index = (hash & 0x7FFFFFFF) % tab.length;

而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = indexFor(hash, table.length);
static int hash(Object x) {
  int h = x.hashCode();

  h += ~(h << 9);
  h ^= (h >>> 14);
  h += (h << 4);
  h ^= (h >>> 10);
  return h;
}
static int indexFor(int h, int length) {
  return h & (length-1);
}

8、final, finally, finalize的区别:

1)final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
2)finally是异常处理语句结构的一部分,表示总是执行。
3)finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

9、String, StringBuffer StringBuilder 的区别。

1)String 的长度是不可变的;
2)StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer 的toString()方法;线程安全;
3)StringBuilder是从JDK 5 开始,为StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

10、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
分享到:
评论

相关推荐

    java面试基础

    本文将基于标题"java面试基础"以及提供的标签"源码"和"工具",结合压缩包中的文档名称,对Java面试中的核心知识点进行深入探讨。 首先,Java语言的基础知识是面试者必须掌握的。这包括但不限于变量、数据类型、控制...

    java面试基础知识点总结

    java面试基础知识点总结

    java面试基础知识点

    介绍Java求职面试过程过程中的相关知识点,分为java基础,web,框架等基础知识

    Java面试笔记 225道Java面试题JAVA面试基础知识点总结Java数据结构题笔试WORD资料汇总(19个).zip

    Java面试笔记 225道Java面试题JAVA面试基础知识点总结Java数据结构题 JAVA笔试面试WORD资料汇总(19个): 2014年最新Java笔试题及答案.docx 225道Java面试题 学会了Java面试随你问.docx Ant和Maven的作用是什么?两者...

    JAVA面试基础题软件

    【JAVA面试基础题软件】是一款专门针对JAVA程序员面试设计的学习工具,它包含了多套精心整理的JAVA面试基础题目,旨在帮助用户巩固JAVA编程基础知识,并在面试前进行有效的强化练习。这款软件涵盖了JAVA语言的核心...

    java 面试常见题-基础部分 java 面试常见题-基础部分 java 面试常见题-基础部分

    java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 ...

    Java面试题基础篇

    Java 面试题基础篇是面向Java开发人员的一份详细的面试题库,涵盖了 Java 的基础知识点,包括面向对象编程、变量作用域、事件委托机制、垃圾回收机制、序列化、排序算法、继承、多态、内部类、Collection 框架等。...

    java面试基础-基础

    java面试基础-基础

    java面试题,Java面试基础知识,Java面试基础常见问题,包括:浅拷贝和深拷贝例子,包装类型的缓存池,对象调用等

    java面试题,Java面试基础知识,Java面试基础常见问题,包括:浅拷贝和深拷贝例子,包装类型的缓存池,对象调用等。

    2024 Java面试宝典合集

    这份"2024 Java面试宝典合集"无疑是准备Java求职面试者的宝贵资源。它涵盖了多个关键领域,包括Spring框架、并发编程、Java核心知识以及面试策略等。下面我们将详细探讨这些知识点。 1. **Spring Boot面试题**:...

    java面试题视频讲解

    java面试基础题视频讲解,讲解基础原理,补充java基础知识

    Java面试基础知识.doc

    "Java面试基础知识" Java 面试基础知识是 Java 开发者在面试时需要了解的基础知识点。以下是 Java 面试基础知识的重要知识点: 1. Java 的接口和 C++的虚类的雷同和不合处 Java 的接口和 C++ 的虚类有相似之处,...

    java面试题集锦 java面试题集锦

    以下是对标题和描述中涉及的一些常见Java面试题的详细解释: 1. **JDK 和 JRE 的区别** JDK(Java Development Kit)是用于开发和调试Java程序的完整工具集,包括JRE(Java Runtime Environment)、编译器(javac...

    java面试基础机试题

    以上知识点在"Java面试基础机试题"中可能都有所体现,通过解答这些题目,可以全面检验并提升Java开发者的基础技能和问题解决能力。在准备面试时,不仅需要理解这些概念,还要能够灵活运用,解决实际问题。

    Java面试基础版面试题

    Java面试基础版面试题

    java面试宝典2018版

    总的来说,《Java面试宝典2018版》是一本全面而深入的指南,它将帮助Java开发者系统复习技术要点,提升专业素养,从而在面试中展现出色的技术能力。通过深入阅读并实践书中的知识,你将能够更好地应对各种面试挑战,...

    2023黑马面试宝典-Java面试宝典大全-java面试宝典黑马

    Java面试宝典是Java程序员求职面试的重要参考资料,它涵盖了Java编程语言的核心概念、高级特性、设计模式、并发处理、框架应用、数据库交互等多个方面。以下将详细解析这些关键知识点: 1. **Java基础**:面试中,...

    2018 java 面试知识点

    最近的java 面试知识点, 比较全的java基础知识面试知识,linux

    java面试基础+高级

    什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”

Global site tag (gtag.js) - Google Analytics