面试笔记-Java

个人对于Java面试考点进行了相关总结,便于后续查找。

  • 重写 vs 重载

    重写(overriding):签名相同,运行时判断。
    重载(overloading):签名不同,编译时判断。

  • fork vs 生成进程

    fork:新进程与父进程执行相同代码,内存空间不同。
    生产进程:生成新的代码执行路线,共享内存空间。

  • 临界区

    一段代码,在多线程中同一时间只能被一个线程执行。synchronized

  • 值类型 vs 引用类型

    值类型:不可变的,指向一个值。
    引用类型:指向一个对象,可变可不变。

  • 堆 vs 栈

    堆:共享变量
    栈:存放原始值和指向对象的引用类型,每个线程有自己的栈。

  • 块设备 vs 字符设备

    块设备一般有缓存,字符设备没有缓存。

  • start() vs run()

    start():开启新进程,调用run()方法。
    run():本线程启动。

  • Runnable vs Callable

    Runnable:调用run()
    Callable:调用call(),有返回值。

  • volatile

    遵循happens-before原则

  • ThrealLocal变量

  • 为何wait notify在object中定义,不在Thread类中
  • submit() vs execute()
  • transient vs seriable
  • class.forName() vs loadClass()

    class.forName():加载、解释、初始化
    loadClass():加载

  • JVM加载类的过程

    加载、编译、链接

  • String常量池

  • JDK vs JRE vs JVM
  • path vs classpath
  • Vector vs ArrayList
  • fail-fast vs fail-safe
  • throw vs throws
  • checked vs unchecked Exception
  • FIFO vs LRU OPT三种置换算法
  • Runnable vs Thread
  • StringBuffer vs StringBuilder
  • try catch 中有return或者exit语句,finally 块是否执行?
  • 为什么private 和static方法不能被重写?
  • 存储过程 vs 函数
  • 事物的ACID
  • 聚簇索引 vs 非聚簇索引
  • 游标
  • 语句级触发 vs 行级触发
  • Java为何不支持多重继承?

    不是技术问题,便于代码的维护,简明设计原则。

  • 为何接口可以实现多重继承?

    只声明、不实现,不存在歧义性。

  • 为什么String是不可变类型

  • hashcode用在何处?
  • 为什么非静态变量不能被静态上下文引用?
  • Java如何实现平台独立性?
  • ClassLoader如何加载?
  • HashMap vs HashTable vs ConcurrentHashMap
  • wait vs sleep
  • Java 内部类的作用?
  • IO vs NIO
  • 字符流 vs 字节流 vs 介质流、管道流、装饰流
  • B树(B+树) vs 红黑树
  • 数据库索引为何采用B+树

    索引存储,需要IO操作,B+树减少IO操作,磁盘预读策略。一个node存储一页空间。
    B+树在B树的结构上进行优化,从而提高了区间访问的性能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值