标题生成 Java面试官最常问的这10个问题,90%的人都答错了

问题一:Java中的String为什么是不可变的?

很多面试者会简单地回答因为String类被final修饰,但这只是表象。String的不可变性主要体现在三个方面:

  • String类被final修饰,防止被继承
  • 内部char数组被private final修饰,且没有提供修改方法
  • 标题生成
Java面试官最常问的这10个问题,90%的人都答错了

  • 所有修改String的方法都返回新的String对象
  • 这种设计带来的好处是:

  • 线程安全
  • 字符串常量池的实现
  • 标题生成
Java面试官最常问的这10个问题,90%的人都答错了

  • 缓存hash值,提高性能
  • 安全性考虑
  • 问题二:HashMap和HashTable的区别?

    很多人会回答HashTable是线程安全的,HashMap不是,这太片面了。实际上两者的区别远不止于此:

  • HashTable不允许null键和null值,HashMap允许
  • HashTable继承自Dictionary类,HashMap继承自AbstractMap
  • HashTable的默认初始容量是11,HashMap是16
  • HashTable扩容时是2n+1,HashMap是2n
  • HashTable直接使用对象的hashCode,HashMap会重新计算hash值
  • 问题三:Java中的四种引用类型

    很多面试者只知道强引用,对其他三种引用类型了解甚少:

  • 强引用:最常见的引用类型,只要强引用存在,对象就不会被回收
  • 软引用:内存不足时会被回收,适合做缓存
  • 弱引用:只要发生GC就会被回收,适合做缓存
  • 虚引用:最弱的引用,主要用于跟踪对象被垃圾回收的状态
  • 问题四:Java中的异常体系

    很多人对异常的理解停留在try-catch层面,实际上Java的异常体系非常完善:

  • Error:系统级错误,程序无法处理
  • Exception:程序可以处理的异常
  • RuntimeException:运行时异常,可以不处理
  • 其他Exception:必须处理
  • 问题五:Java中的集合框架

    很多人对集合框架的理解停留在使用层面,实际上需要了解:

  • Collection接口:所有集合类的根接口
  • List:有序可重复
  • Set:无序不可重复
  • Queue:队列
  • Map接口:键值对集合
  • HashMap:最常用的实现
  • TreeMap:有序的实现
  • LinkedHashMap:保持插入顺序
  • 问题六:Java中的多线程

    很多人对多线程的理解停留在Thread和Runnable层面,实际上需要了解:

  • 线程状态:新建、就绪、运行、阻塞、死亡
  • 线程同步:synchronized、volatile、Lock
  • 线程通信:wait/notify、Condition
  • 线程池:ThreadPoolExecutor
  • 问题七:Java中的IO流

    很多人对IO流的理解停留在FileInputStream层面,实际上需要了解:

  • 按流向分:输入流、输出流
  • 按操作对象分:字节流、字符流
  • 按功能分:节点流、处理流
  • NIO:非阻塞IO,提高性能
  • 问题八:Java中的反射机制

    很多人对反射的理解停留在Class.forName层面,实际上需要了解:

  • 获取Class对象的方式
  • 获取构造方法、字段、方法
  • 动态创建对象、调用方法
  • 反射的性能问题
  • 问题九:Java中的泛型

    很多人对泛型的理解停留在List层面,实际上需要了解:

  • 泛型擦除
  • 通配符:?、? extends T、? super T
  • 泛型方法
  • 泛型接口
  • 问题十:Java中的注解

    很多人对注解的理解停留在@Override层面,实际上需要了解:

  • 元注解:@Target、@Retention等
  • 自定义注解
  • 注解处理器
  • 注解的应用场景
  • © 版权声明
    THE END
    喜欢就支持一下吧
    点赞12 分享
    评论 抢沙发

    请登录后发表评论

      暂无评论内容