前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见Java基础面试题目分享二

常见Java基础面试题目分享二

作者头像
才疏学浅的木子
发布2022-11-13 09:38:00
3450
发布2022-11-13 09:38:00
举报
文章被收录于专栏:CSDN文章

👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 面试 🌈 每日一语世界会向那些有目标和远见的人让路 🌈

本文目录

自动拆箱与自动装箱

自动拆箱、自动装箱是JDK1.5开始提供的功能,自动拆箱可以把一个包装类型的对象赋值给对应的基本类型,自动装箱则相反。因为Java是一门面向对象的语言,而基本数据类型不具备对象的特点,所以提供了装箱与拆箱。比如某个方法需要传入object类的参数,但实际传入的是数字,如果没有自动拆、装箱就需要特殊处理

Java的异常处理机制

Java的异常机制可以分为异常处理,异常抛出,异常跟踪栈问题。处理异常的语句是try、catch、finally三部分组成。try块用于包裹业务代码,catch用来捕获某个异常并处理,finally一般是用来关闭资源。如果业务代码出现异常,JVM就会创建一个Exception对象找对应的catch进行处理,在finally中可以用来关闭资源。我们也可以手动抛出异常。抛出异常可以用throws与throw,throws只能在方法签名中使用,可以抛出多个异常,throw可以单独使用,但是每次抛出的是一个对应的实例对象。finally中代码不被执行的情况:1、当一个线程执行try或者catch时候被打断。2、在try、catch块中使用System.exit(1)

面向对象的理解

面向对象与面向过程的区别 假如把一头大象装进冰箱 面向过程 1、 打开冰箱 2、人把大象放进冰箱 3、关闭冰箱 面向对象 冰箱:打开,关闭 人:放大象到冰箱 面向对象比面向过程更加易维护,易拓展 面向对象的三大特性 封装: 1、封装是指将对象的状态信息隐藏在对象内部,不允许外部直接调用 2、规范使用者的行为,让使用者只能通过预定的方法访问 3、便于修改,提高代码的可维护性 继承: 面向对象实现代码复用的重要手段。优点:1、代码共享,减少创建类的工作量,提高代码复用 2、提高代码的可拓展性 缺点: 1、增加了耦合性,当父类的被修改时子类也会被修改 2、降低了代码灵活性,子类中拥有父类全部的方法 多态: 多态的实现离不开继承,在实现某个方法的时候我们可以设置参数类型为父类,,调用时传入子类就可以实现多态 1、多态提高了代码的扩展性 实现多态的必要条件 需要有继承关系,需要有方法的重写,需要有父类的引用指向子类的引用

重载与重写的区别

重载是发生在一个类中的,多个方法之间方法名相同且参数列表不同,重载与方法的返回值与访问修饰符无关。重写发生在父类与子类之间,若子类方法想要和父类方法构成重写关系,则方法名、参数列表必须与父类相同。返回值要小于等于父类方法,抛出异常要小等于父类异常,但是访问修饰符要大等于父类。

泛型与泛型擦除

Java在1.5版本之前没有引入泛型,每次从集合中取出对象就要进行类型转换,假如有人不小心插入了类型错误的对象,那么在运行时转换就会出错。在提出泛型之后,我们可以告诉编译器集合中接受那些对象类型,编译器会自动为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。 泛型擦除:Java是伪泛型,因为Java代码在编译阶段,所有生成的字节码文件中是不包含泛型信息的

为什么要使用多线程

优点 提高响应程序: 耗时的操作使用另一个线程 提高CPU利用率 提高程序运行效率 缺点 线程切换降低效率: 如果线程过多,操作系统需要切换线程 更多的内存空间 可能导致死锁 编码困难

线程创建方式

继承Thread类实现Runnable接口实现Callable接口 实现Callable接口的优点在于可以获取到线程的返回值 线程创建方式就是继承类与实现接口 实现接口的优点是还可以继承其它类,但是编程稍微麻烦一点 继承类的优点是编程简单但是不能继承其它类了 所以通常情况下还是使用实现接口的方式

线程的生命状态

NEW: 新建但是还没有调用start()方法 RUNABLE: 可运行状态,线程正在运行或者等待CPU调度运行 BLOCKED: 阻塞,线程正在等待获取监视器锁 WAITING: 等待状态,线程正在等待其它线程唤醒 TIMED_WAITING: 超时等待,在waiting上基础上增加了超时 TERMINATED: 终止状态,线程已经执行完毕

wati与sleep的区别

所属类不同:wait是Object类的,sleep是Thread类的 对锁的依赖不同:wait依赖于synchronized锁,它必须通过监视器进行调用,在调用后会释放锁,而sleep不会 返回的条件不同:调用wait进入等待的线程需要由notify()/notifyAll()唤醒,调用sleep的超时就可以返回,wait也可以使用超时

怎么保证线程安全

原子类、volatile、锁 方案一:使用CAS+volatile 比如AtomicInteger volatile 保证了有序性与可见性 使用CAS来判断当前值是否被修改过 方案二:使用加锁 比如synchronized、Lock

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=csg49e5u9ujo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文目录
  • 自动拆箱与自动装箱
  • Java的异常处理机制
  • 面向对象的理解
  • 重载与重写的区别
  • 泛型与泛型擦除
  • 为什么要使用多线程
  • 线程创建方式
  • 线程的生命状态
  • wati与sleep的区别
  • 怎么保证线程安全
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档