JAVA面试所问到的问题

由于一直都在面试找工作,所以在面试的过程中,遇到的公司不同,所做的要求也都不一样,技术面问到的问题也都不尽一致。所以在此记录一下每一次面试所会遇到的问题,方便自己总结经验。

  • 基础类最重要
  • 线程多次遇到
  • 框架一直都问

基础知识

JAVA的八大基础类型

种类 类型
整型 byte、short、int、long
浮点型 float、double
逻辑型 boolean
字符型 char

其中它们按照字节位数来划分

位数 类型
8位 byte
16位 short、char
32位 int、float
64位 long、double
其他 boolean(true、false)

面向对象的三大特征

特征:多态、封装和继承

  • 其中在多次面试中都有问到多态的例子

  • 多态性:允许不同对象对于同一个消息做出不同的行为方式

  • 多态的实现方式有:接口的实现、继承父类对方法重写、同一方法内的方法重载

String、StringBuffer和StringBuilder的区别

这也是一个经常会被问到的问题,对于三者的比较一直都会在面试中出现,现在对他们的区别做一个简单的总结

  • String对象是不可变的,StringBuffer和StringBuilder是可变的对象,所以在对他们进行改变的时候,String其实是生成了一个新的对象,通过指针来指向新的对象,而其他两个是对对象本身进行操作,并没有产生新的对象。
  • StringBuffer和StringBuilder的区别:StringBuffer是线程安全的,StringBuilder是线程不安全的。StringBuffer中的方法加了同步锁,所以牺牲了速度保证线程安全。

int和Integer的区别

JAVA为了编程的方便,引入基本的数据类型,如以上所说的八大基本类型,同时为了能够把这些基本的数据类型当作是对象来使用,同时也为每一个基本数据类型封包装了包装类型。

  • 基本数据类型:byte、short、int、long、float、double、char、boolean
  • 相对应的包装类型:Byte、Short、Integer、Long、Float、Double、Charater
  • 为什么引入包装类型:在进行类型转换的时候要用到对象引用方法(下次更新添加各种类型相互之间的转换)
  • 给出两个Integer对象的值,比较他们返回的结果是否相等,例如以下代码。
public class Test {  
    public static void main(String[] args) {  
        Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;  
        System.out.println(f1 == f2);  
        System.out.println(f3 == f4);  
    }  
} 

以上输出的结果为第一个为true,第二个为false。由于int整型的取值范围为-128到127之间,所以在这之间的数值是直接通过引用Integer取值池中的值,而超过这个范围的会new一个Integer对象,而两个值虽然一样,但是他们的地址不一样,所以返回结果为false。

=和equals的区别

比较类型和比较值是否相同,无非就是比较两种:基本数据的比较和引用对象的比较。

  • 基本数据类型存储在内存中的栈中,而对象引用是栈只存储引用类型的地址,而本身的值是存储在堆中的。
  • ==对于基本数据类型比较的是他们两个变量本身的值是否相等,而对于引用对象比较的是两个变量存储在栈中的地址是否一致。
  • equals表示的是两个变量是否是对同一个对象的引用,也就是比较他们存储在堆中的内容。
  • equals比较返回为true的两个对象==不一定返回true

post和get的区别

区别是面试的时候最经常遇到的问题了,一下子就能看出一个人的基本

发布了15 篇原创文章 · 获赞 4 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览