Java面试题基础篇01 (问题和答案)


自己整理Java必须要掌握基础高频面试题,自己复习使用,也本着开源精神,希望对大家有帮助 谢谢大家支持!
1.面向对象的特征: 封装、继承、多态性、抽象
2.修饰符public,private,protected,以及不写(默认)时的区别

在这里插入图片描述

3.Java中的基本数据类型

8个: byte、short、int、long、float、double、char、boolean
String 不是基本数据类型

4.int和Integer有什么区别

Integer是int的包装类,int则是java的一种基本数据类型;
Integer变量必须实例化后才能使用,而int变量不需要;
Integer的默认值是null,int的默认值是0。

5.String 是被 final修饰,不可被继承,不能修改
6.String和StringBuilder、StringBuffer的区别?
String:不可变;
StringBuffer:可变、效率低、线程安全;
StringBuilder:可变、效率高、线程不安全;
7.“==” 和 equals()的区别

==是指对内存地址进行比较
equals是判断两个变量值是不是相同

8.final,finally和finalize的区别

final可以修饰类,不能被继承;修饰方法,不能被重写;修饰变量,只能赋值一次。
finally是try语句中的一个语句体,不能单独使用,用来释放资源
finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

9. ArrayList和Vector的区别

Vector是线程安全的,而ArrayList是线程异步的,是不安全的。
Vector增长率为目前数组长度的100%,而ArrayList增长率为目前数组长度的50%。

10.HashMap和HashTable的区别

Hashtable是线程安全的,同步的;而hashMap是线程不安全不同步的
HashMap允许存在一个null的key,多个null的value;而hashtable的key和value都不允许为null

11.创建线程有哪几种方式?

继承Thread类型重写run 方法
实现Runnable接口,并重写里面的run方法
实现Callable接口通过FutureTask包装器来创建Thread线程
应用程序可以使用Executor框架来创建线程池。

12.sleep方法和wait方法有什么区别

sleep()方法必须传入参数,参数就是休眠时间,时间到了就会自动醒来。
wait()方法可以传入参数也可以不传入参数,传入参数就是在参数结束的时间后开始等待,不穿如参数就是直接等待。

sleep方法时间到,线程处于临时阻塞状态或者运行状态。
wait方法如果没有被设置时间,就必须要通过notify或者notifyAll来唤醒。

线程执行到sleep,不会释放锁。
线程执行到wait,会释放锁。

13.start()方法和run()方法有什么区别?

通过调用线程类的start()方法来启动一个线程,使线程处于就绪状态,即可以被JVM来调度执行,在调度过程中,JVM通过调用线程类的run()方法来完成实际的业务逻辑,当run()方法结束后,此线程就会终止。
如果直接调用线程类的run()方法,会被当作一个普通的函数调用,程序中仍然只有主线程这一个线程。即start()方法能够异步的调用run()方法,但是直接调用run()方法却是同步的,无法达到多线程的目的。
因此,只用通过调用线程类的start()方法才能达到多线程的目的。

14.Servlet 的生命周期

1)初始化阶段
   当客户端向 Servlet 容器发出 HTTP 请求要求访问 Servlet 时,Servlet 容器首先会解析请求,检查内存中是否已经有了该 Servlet 对象,如果有,则直接使用该 Servlet 对象,如果没有,则创建 Servlet 实例对象,然后通过调用 init() 方法实现 Servlet 的初始化工作。需要注意的是,在 Servlet 的整个生命周期内,它的 init() 方法只能被调用一次。
2)运行阶段
  这是 Servlet 生命周期中最重要的阶段,在这个阶段中,Servlet 容器会为这个请求创建代表 HTTP 请求的 ServletRequest 对象和代表 HTTP 响应的 ServletResponse 对象,然后将它们作为参数传递给 Servlet 的 service() 方法。

  service() 方法从 ServletRequest 对象中获得客户请求信息并处理该请求,通过 ServletResponse 对象生成响应结果。

  在 Servlet 的整个生命周期内,对于 Servlet 的每一次访问请求,Servlet 容器都会调用一次 Servlet 的 service() 方法,并且创建新的 ServletRequest 和 ServletResponse 对象,也就是说,service() 方法在 Servlet 的整个生命周期中会被调用多次。
3)销毁阶段
  当服务器关闭或 Web 应用被移除出容器时,Servlet 随着 Web 应用的关闭而销毁。在销毁 Servlet 之前,Servlet 容器会调用 Servlet 的 destroy() 方法,以便让 Servlet 对象释放它所占用的资源。在 Servlet 的整个生命周期中,destroy() 方法也只能被调用一次。

下一篇:Java面试题基础篇02 (问题和答案)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值