备战Java面试时查漏补缺到的知识(个人笔记)(二)

本文探讨了Java中的数据类型转换规则,强调了final关键字的作用,并通过示例解释了在接口中属性和方法的默认修饰符。此外,介绍了处理流的概念,如BufferedReader和BufferedWriter,以及流的关闭顺序。接着讲解了HashMap解决哈希冲突的策略——开放定址法和链地址法。最后,概述了线程的基本概念,包括线程与进程的关系、资源分配和同步。
摘要由CSDN通过智能技术生成
  • java数据类型转换
    问题的引出:
    在这里插入图片描述
    该题考查两个知识点final用法和数据类型转换
    首先知道final修饰的变量是一个常量不能修改其值,所以语句4错误,对于语句1、2、3,需要清楚一个知识点:
    当使用 +、-、、/、%、运算操作是,遵循如下规则*:**
    只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型,如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型,如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型,否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。
    解析:
    语句一:b1+b2的结果会转型为int类型,不能赋值给一个int变量故错误;
    语句二:b4和b5都是被final修饰,故类型不会变化做加法后类型还是byte,所以正确;
    语句三:b1是byte无final修饰,所以运算结果还是会转为int类型,故错误

  • 在接口中,属性都是默认public static final修饰的,方法的默认修饰符是:public abstract
    本人总要忘记,就记录一下

  • 补充一下处理流的知识
    按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
    节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
    处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
    JAVA常用的节点流:
    文 件 FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
    字符串 StringReader StringWriter 对字符串进行处理的节点流。
    数 组 ByteArrayInputStream ByteArrayOutputStreamCharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
    管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter对管道进行处理的节点流。
    常用处理流(关闭处理流使用关闭里面的节点流)
    缓冲流:BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
    转换流:InputStreamReader OutputStreamReader 实现字节流和字符流之间的转换。
    数据流 DataInputStream DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来.
    流的关闭顺序
    1、 一般情况下是:先打开的后关闭,后打开的先关闭
    2、 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b。例如,处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
    3、 可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法。

  • HashMap中是用哪些方法来解决哈希冲突
    解决哈希冲突常用的两种方法是:开放定址法和链地址法
    开放定址法:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。
    链地址法:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数 组T[0…m-1]。凡是散列地址为i的结点,均插入到以T[i]为头指针的单链表中。T中各分量的初值均应为空指针。

  • 方法的重写(override)两同两小一大原则:
    方法名相同,参数类型相同
    子类返回类型小于等于父类方法返回类型,
    子类抛出异常小于等于父类方法抛出异常,
    子类访问权限大于等于父类方法访问权限。

  • 线程问题
    1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(通常说的主线程)。
    2、资源分配给进程,同一进程的所有线程共享该进程的所有资源。
    3、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
    4、处理机分给线程,即真正在处理机上运行的是线程。
    5、线程是指进程内的一个执行单元,也是进程内的可调度实体。
    ps:子进程得到的是除了代码段是与父进程共享以外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,子进程可获得父进程的所有堆和栈的数据,但二者并不共享地址空间。两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行;进程的线程之间共享由进程获得的资源,但线程拥有属于自己的一小部分资源,就是栈空间,保存其运行状态和局部自动变量的。

  • 记录一道jvm题
    在这里插入图片描述
    一位大佬的解析:
    在这里插入图片描述
    2021/11/21 22:30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值