54 归档分页
370 留言互动
4 核心专题

最近更新

Java 2023-03-01

Java基础(三)

hashCode 与 equals 必须配合使用:相等的对象必须拥有相同的 hashCode,hashCode 相同的对象不一定相等;因此在自定义类时通常同时重写两者。== 比较对象引用,equals 通过重写实现内容比较。String 为 final 不可变类,采用常量池存储,使用字面量创建可复用、节省内存,new String 会额外产生堆对象。可变字符序列用 StringBuffer(线程安全)或性能更高的 StringBuilder。字符串拼接推荐在全量字面量时用 “+”,含变量且不需线程安全时用 StringBuilder,需线程安全时用 StringBuffer,两个字符串可用 concat。接口定义规范、只能有抽象/默认/静态方法且无构造器,抽象类可含实现和成员变量;通过实现多个接口弥补单继承限制,面向接口编程可降低耦合、提升可扩展性。

面经 阅读全文
Java 2023-03-01

Java基础(四)

本文系统阐述了Java基础知识要点:异常处理流程包括try‑catch‑finally,异常分为Error、Checked和Runtime,throw与throws的使用规则以及异常传播机制;finally始终执行,若其中出现return或throw会覆盖前面的返回/抛出。static关键字将成员设为类级别,不能访问实例成员,适用于变量、方法、初始化块和内部类;static类可继承。final用于限制继承、重写和变量修改,两者作用域不同。泛型通过参数化类型消除集合的类型安全问题,介绍了类型擦除、原始类型以及通配符的上界(? extends T)和下界(? super T)用法。反射机制使程序在运行时获取类信息、创建实例和动态代理,是JDBC、框架配置和AOP等场景的实现基础。最后说明了Java四种引用——强、软、弱、虚——及其在垃圾回收中的行为。

面经 阅读全文
Java 2023-03-01

集合类(一)

介绍Java集合体系:Collection分为Set、List、Queue,Map为键值映射;列举常用实现类及其线程安全情况,说明使用Collections或java.util.concurrent提供的并发集合。重点阐述Map实现,尤其HashMap的结构、put过程、扩容与冲突处理(链表转红黑树)以及线程不安全原因;比较HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap的特性与实现原理。

面经 阅读全文
Java 2023-03-01

集合类(二)

本文概述Java集合实现与特性。TreeMap基于红黑树,操作logN;Set无序不可重复,Map键集合为Set,List有序可重复。ArrayList用动态数组,随机访问O(1)但插删需复制;LinkedList双向链表,插删快但随机访问O(N)。线程安全List有Vector、Collections.synchronizedList、CopyOnWriteArrayList(读无锁、写复制,适合读多写少)。HashSet依赖HashMap,TreeSet红黑树并支持排序。BlockingQueue基于ReentrantLock+Condition实现阻塞。Stream API分中间与终端操作,常用filter、map、distinct、sorted、reduce等用于函数式聚合。

面经 阅读全文
Java 2023-03-01

IO

文章系统介绍了Java IO流的分类与常用类,指出大文件应采用缓冲流或NIO的内存映射方式读取。随后阐述NIO的核心Channel、Buffer、Selector及其属性和跨平台实现。接着讲解对象序列化/反序列化机制、serialVersionUID的作用,并列举JSON、Protobuf、Thrift、Avro等主流序列化工具及其特点,最后提供不使用JSON时的实现思路。

面经 阅读全文
Java 2023-03-01

多线程(一)

Java多线程要点:线程可继承Thread或实现Runnable/Callable,支持返回值。run()执行任务体,start()启动且只能一次。线程状态五阶段:新建、就绪、运行、阻塞、死亡。同步使用synchronized或Lock。通信方式包括wait/notify/notifyAll和BlockingQueue。sleep不释放锁,wait释放锁需notify;notify唤醒单个,notifyAll唤醒全部。

面经 阅读全文