【程序源代码】java 每日高频面试题【day3】

201 阅读3分钟

“ 关键字: java 学习 每日 高频 面试题 每日高频面试题 ,一起冲进大厂"\

\

导读:

    大家好,我是程序源代码,算算入行的时候我已算入行10以上的老兵了,毕业在北京北漂8年,13年回到省会石家庄,一直就在河北这块土地上生活着。现在人了快到了中年,感觉现在生活压力都比较多大。梦想着有一天能进入大厂,实现一个大厂梦。其实我感觉大家应该和我一样,都想有进入大厂工作毕竟生活需要理想,还需要苟且(挣高工资),其实现在大厂并不是特别容易进,作为一名好多年的Java选手,其实我感觉进入大厂,首先要把自己的技术和面试这两个重要点做好。

    最近这几天我一直在看java相关的基础,也在看一些面试相关的资源和视频,其实感觉不管什么技术面试,其实基础是很重要的。现在正好暑假了,天气炎热,作为宅男的我本来就不想出去,所以还不如呆在家里,静下心来好好准备下基础的面试。所以这个暑假(虽然我没有暑假)我准备用60天时间,把Java面试中的面试题看一看,从头复习一遍。计划是每天1-3题的形式学一遍(希望自己能坚持下来)。

   主要涵盖的知识点我简单列了一下,计划从这些方面出发进行学:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL数据库、Redis缓存、RabbitMQ消息队列、Linux操作技巧等。

\

01

int 和integer的区别?

java是面向对象的编程语言,为了编程方便java引入了基本数据类型(8种:byte/short/int/long/float/double/boolean/char)。但为了操作这8种数据类型java从5开始引入了对应的包装类型,通过自动拆箱、装箱实现每种类型间的转换。

public class Main<intger> {

   public static void main(String[] args) {

       int a = 1;
       Integer b = new Integer(1);
       Integer c = 1;
       
       System.out.println(a==b);//true
       System.out.println(c==b);//flase
       System.out.println(a==c);//true
  }
}

02

ArrayList 和 LinkedList的区别是什么?

ArrayList :基于动态数组,它需要连接内存存储。它比较适合于下标访问,它一般会声明一个固定长度。

LinkedList:基于链表。它可以分散存储到内存。它比较适合于数据插入和删除。不适合于查询。遍历必须使用iterator不能使用for循环。因为for时它是从头到尾进行一一遍历的,这个状态下非常消耗性能。同时它在插入对象时需要创建大量的node对象。

一般在实际使用时建议使用ArrayList ;因为ArrayList** 可以通过固定长度,同时结合使用尾部插入法,提高插入性能。**

03

线程的创建方法有几种?

1、继承Tread 创建线程实例,同时调用start()方法来启动线程。

****//定义一个继承Thread类的子类

class SomeThead extends Thraad
{
public void run(){}

}

 //构造子类的一个对象:

 SomeThread oneThread = new SomeThread();   

 //启动线程:\

 oneThread.start();

2、实现runnable 接口,但实现接口只是创建了一个可执行的任务,还需要一个线程对象才能启动线程。\

class SomeRunnable implements Runnable
{
public void run()
{
//do something here
}
}

//创建一个类对象:

Runnable oneRunnable = new SomeRunnable();

//由Runnable创建一个Thread对象:

Thread oneThread = new Thread(oneRunnable);

//启动线程:

 oneThread.start();

3、实现callable接口\

Callable接口(也只有一个方法)定义如下:

public interface Callable   
{   
V call() throws Exception;   

//创建实现Callable接口的类SomeCallable(略);

//创建一个类对象:

Callable oneCallable = new SomeCallable()

//由Callable创建一个FutureTask对象:

//FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了Future和Runnable接口。

FutureTask oneTask = new FutureTask(oneCallable);

//由FutureTask创建一个Thread对象:

Thread oneThread = new Thread(oneTask);

//启动线程:

oneThread.start();