Java面试知识库

这篇具有很好参考价值的文章主要介绍了Java面试知识库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java面试知识库

Java基础

Java是个面向对象的语言,如何理解面向对象呢?

  • 面向对象的三大基本特征:继承、封装、多态
    • 继承:子类继承父类,父类的属性和方法继承到子类。
    • 封装:将现实世界的事物抽象为一个Java类,该类封装了事物的属性、方法。
    • 多态:子类继承父类,可以通过重写(overwrite)父类方法,实现一个方法具有不同的实现。
  • 面向对象的五大基本原则:单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则
    • 单一职责原则:一个类只负责一件事。提高代码可维护性。
    • 开放封闭原则:对扩展开放,对修改封闭。提高代码可扩展性。
    • 里氏替换原则:子类必须能够替换其基类。提高代码灵活性。
    • 依赖倒置原则:方法依赖于抽象接口,而不是具体的实现。降低系统的耦合。
    • 接口隔离原则:将一个复杂臃肿的接口拆分为更小、更专注的接口。提高代码的灵活性和稳定性。

Java的继承

  • Java只允许多实现,不允许多继承
  • 多继承在C++中存在菱形继承的问题,Java为了避免该类问题,不允许多继承。
  • Java允许多实现,为了避免菱形继承的问题,实现的接口如果方法存在重复,就必须重写(overwrite)重复的方法。
  • Java的接口和抽象类的区别
    • Java8中接口有default方法,其余只能为抽象方法,没有实现代码。而抽象类可以有实现代码。
    • 接口不可以有构造器,抽象类可以有。
    • 接口被实现,抽象类被继承。
    • 接口只能使用public修饰符。

Java的基本类型与包装类型

  • 基本类型:byte、short、int、long、char、float、double、boolean
  • 包装类型:Byte、Short、Integer、Long、Character、Float、Double、Boolean
  • 包装类型存在的意义:Java是面向对象的语言,很多地方需要使用包装类型而不是基本类型。
  • 基本类型默认值为:0、false、\u0000,包装类型默认值为:null
  • Java为了便于开放人员,提供了自动装箱自动拆箱的功能
    • 自动装箱:自动将基本类型转换对应包装类型。通过包装类型的valueOf()方法
    • 自动拆箱:自动将包装类型转换对应基本类型。通过包装类型的xxxValue()方法

Java用什么适合存储金额的类型

Java中,floatdouble都是浮点数,浮点数在计算机中都是近似值,因此使用这两个类型存储金额的话,容易产生计算错误的问题。
因此,Java中提供了BigDecimal进行精确运算。

  • BigDecimal中的等值比较应使用compareTo,而不是equals方法。因为equals比较value(值)和scale(标度),0.1与0.10的value是一样的,而scale的值是不一样的。
  • BigDecimal需要准确的运算,那么BigDecimal(double)BigDecimal(String)对比,BigDecimal(String)的值是准确的,而BigDecimal(double)由于double是近似值,因此值是不准确的。

String、StringBuilder、StringBuffer

  • 可变性:String不可变、StringBuilder/StringBffer是可变的。
  • 线程安全:StringBuffer、String是线程安全,StringBuilder非线程安全。

Java的动态代理

  • 动态代理:在运行时动态地创建代理对象,并处理代理方法调用的机制。
  • 动态代理用途:各种框架中,在运行期生成代理类,如过滤器、拦截器等。
  • Java中的动态代理:Spring AOP的动态代理有两种方式:JDK动态代理Cglib动态代理
    • JDK动态代理:通过反射接收被代理的类。(要求必须要实现一个接口)
    • Cglib动态代理:第三方类库,通过继承的方式做动态代理。

什么是AIO、BIO、NIO

  • AIOAsynchronous I/O异步非阻塞I/O模型,操作后会回调通知调用方。
  • BIO:Blocking I/O同步阻塞I/O模型,一直阻塞,直到处理完成。
  • NIO:Non-Blocking I/O同步非阻塞I/O模型,不阻塞,进行其他操作,定时轮询检查。

Java集合

未完待续。。。

实时更新:https://labi-xiaoxin.github.io/labi-xiaoxin/#/docs/Java-Interview文章来源地址https://www.toymoban.com/news/detail-840786.html

到了这里,关于Java面试知识库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 知识库建设:从0到1搞定知识库建设的方法论分享

    如果我们想要搭建一个知识库,前提是我们要明确知道这个知识库是干什么用的,只有了解知识库的应用场景才能知道如何去建设知识库。 以常见的电商客服为例,客户会经常咨询什么时候发货,怎么退货,怎么换货……,对于这些重复性比较高的问题,我们就需要对这些问

    2024年02月09日
    浏览(37)
  • 【chatglm3】(4):如何设计一个知识库问答系统,参考智谱AI的知识库系统,

    https://www.bilibili.com/video/BV16j411E7FX/?vd_source=4b290247452adda4e56d84b659b0c8a2 【chatglm3】(4):如何设计一个知识库问答系统,参考智谱AI的知识库系统,学习设计理念,开源组件 https://open.bigmodel.cn/knowledge 知识配置: 项目地址是: https://github.com/chatchat-space/Langchain-Chatchat gitee搬运的项

    2024年02月05日
    浏览(46)
  • 网络安全知识库

    本篇用来整理所有的零散的知识,作为一个技能树或者技能表来进行引导 CTF 加解密合集 CTF Web合集 1.1 本地访问识别 如何伪造http头,让后端认为是本地访问

    2024年02月10日
    浏览(40)
  • 前端知识库

    干货!各种常见布局实现+知名网站实例分析 学习 BFC (Block Formatting Context) 一劳永逸的搞定 flex 布局 腾讯移动Web前端知识库 个人总结(css3新特性) 高性能 CSS3 动画 12个HTML和CSS必须知道的重点难点问题   JavaScript深入系列15篇正式完结! 破解前端面试(80% 应聘者不及格系列):

    2024年02月08日
    浏览(32)
  • 【搭建个人知识库-3】

    基于InternLM和LangChain搭建专属个人的大模型知识库; 大模型开发范式 LangChain简介 构建 大模型具有简单的广度回答,但是在垂直领域的知识受限; 如何让LLM及时获得最新的知识 如何打造垂直领域大模型 如何打造个人专属的LLM应用 两种常用开发范式:RAG VS Finetune 即:检索增

    2024年02月01日
    浏览(52)
  • ChatGPT扫盲知识库

    本文并不是教你如何使用ChatGPT,而是帮助小白理清一些与ChatGPT相关的概念,并解释一些常见的问题。 概念 OpenAI: 一家人工智能公司,ChatGPT属于该公司的产品之一。前身是一个非盈利组织,不过目前已经转变为一家商业公司。 GPT: OpenAI开发的语言模型,你只需要知道它是一种

    2024年02月09日
    浏览(36)
  • elasticsearch知识库

    es查询缓存 Elasticsearch的路由(Routing)特性 在Elasticsearch中,一个索引被分为多个分片,每个分片包含了部分索引数据。当我们进行查询时,Elasticsearch会将查询请求发送到每个分片上执行查询操作,然后将结果合并返回给客户端。 而路由查询是一种特殊的查询方式,它允许我

    2023年04月09日
    浏览(38)
  • 如何整理企业的知识库?

    企业知识库的整理需要以下步骤: 确定知识库的主题和范围:知识库应该有一个明确的主题和范围,以便于方便的管理和查找。 收集知识和信息:收集企业内部的知识和信息,可以通过采访、调研、会议等方式进行收集。 归纳整理知识和信息:对收集到的知识和信息进行归

    2024年02月02日
    浏览(43)
  • Notion——构建个人知识库

    使用Notion快三年了,它All in one的理念在使用以后确实深有体会,一直想找一个契机将这个软件分享给大家,这款笔记软件在网上已经有很多的教程了,所以在这里我主要想分享 框架 方面的内容给大家,特别对于学生党、研究生们。Notion的扩展性很强,但是本文没有什么炫技

    2024年02月01日
    浏览(49)
  • 开源知识库平台Raneto

    什么是 Raneto ? Raneto 是一个开源知识库平台,它使用静态 Markdown 文件来支持您的知识库。 官方提供了 doc demo 网站,即是帮助文档,也是个 demo ,地址:https://docs.raneto.com 项目使用 config.js 做为设置文件,该文件的源码地址:https://raw.githubusercontent.com/ryanlelek/Raneto/master/confi

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包