本文共 3727 字,大约阅读时间需要 12 分钟。
Java面试指南:全面总结Java技术点
在Java开发者面试中,技术点是核心内容。本文将对Java中的关键技术点进行全面总结,帮助您在面试中轻松应对。
Java原始数据类型及其大小 Java中的原始数据类型包括:boolean、byte、short、int、long、float、double、char。每种类型的大小和封装类如下:
- boolean:非true或false值时,单独使用占4个字节,数组形式占1个字节。
- byte:1个字节,封装类为Byte。
- short:2个字节,封装类为Short。
- int:4个字节,封装类为Integer。
- long:8个字节,封装类为Long。
- float:4个字节,封装类为Float。
- double:8个字节,封装类为Double。
- char:2个字节,封装类为Character。
- "=="与"equals()"的区别
- ==:比较对象内存地址,适用于原始类型和枚举类型。
- equals():比较对象状态,通过Object类方法实现,可重写。
- Java四种引用及其应用
- 强引用:通过new创建,常用。
- 软引用:用于缓存,内存不足时回收。
- 弱引用:只在不再使用时回收。
- 虚引用:跟踪对象回收状态。
- Object类常用方法
- clone():复制对象。
- equals():比较对象状态。
- hashCode():计算哈希值。
- toString():转换为字符串。
- notify/notifyAll():唤醒线程。
- wait():等待操作完成。
- finalize():销毁对象。
- getClass():获取类信息。
- ArrayList、LinkedList、Vector区别
- ArrayList:数组存储,支持快速访问和动态调整。
- LinkedList:链表存储,支持快速插入/删除。
- Vector:线程安全版本。
- String、StringBuilder、StringBuffer区别
- String:不可变字符串。
- StringBuilder:可变字符串,效率高。
- StringBuffer:线程安全版本。
- Map、Set、List、Queue、Stack特点
- Map:存储键值对。
- Set:无重复元素。
- List:有序集合。
- Queue:先进先出。
- Stack:后进先出。
- HashMap与Hashtable区别
- 线程安全性:Hashtable线程安全。
- null键值:HashMap允许,Hashtable不允许。
- HashMap实现原理
- ConcurrentHashMap实现原理
- TreeMap、HashMap、LinkedHashMap区别
- HashMap:无序。
- TreeMap:有序,基于红黑树。
- LinkedHashMap:记录插入顺序。
- Collection与Collections区别
- Collection:接口定义集合操作。
- Collections:工具类提供静态方法。
- try-catch-finally执行条件
- Java异常层次结构
- Throwable基类,包括Error和Exception。
- RuntimeException及ArrayIndexOutOfBoundsException等无需捕获。
- IOException及其子类需捕获。
- Java面向对象特征
- 封装:数据与方法 encapsulation。
- 继承:继承现有类的特征。
- 多态:方法动态绑定。
- Override与Overload区别
- Override:方法重写,保持签名。
- Overload:方法重载,改变签名。
- 接口与抽象类区别
- 接口:方法声明,不能有属性和实现。
- 抽象类:可以有属性和方法实现。
- 静态内部类与非静态内部类区别
- 静态内部类:无需外围类引用。
- 非静态内部类:隐式持有外围类引用。
- Java多态实现原理
- 创建新线程的方法
- 继承Thread类:new Thread-run。
- 实现Runnable接口:new Thread-subclassrun。
- Java线程同步方法
- volatile:保证可见性和一致性。
- synchronized:块锁。
- ReentrantLock:更细粒度锁。
- 线程池用法与优势
- 优势:复用线程,减少资源浪费。
- 用法:ThreadPoolExecutor创建,submit任务。
- ArrayBlockingQueue与CountDownLatch作用
- ArrayBlockingQueue:基于数组的阻塞队列。
- CountDownLatch:等待指定线程数完成操作。
- wait()与sleep()区别
- wait():让线程等待对象状态变化。
- sleep():让线程休眠,占用CPU资源。
- ThreadLocal作用
- ConcurrentHashMap实现原理
- BlockingQueue解决方案
public class BlockingQueueTest { private int size = 20; private ArrayBlockingQueue blockingQueue = new ArrayBlockingQueue<>(size); public static void main(String[] args) { BlockingQueueTest test = new BlockingQueueTest(); Producer producer = test.new Producer(); Consumer consumer = test.new Consumer(); producer.start(); consumer.start(); } class Consumer extends Thread { @Override public void run() { while (true) { try { blockingQueue.take(); System.out.println("队列剩余" + blockingQueue.size() + "个元素"); } catch (InterruptedException e) { e.printStackTrace(); } } } } class Producer extends Thread { @Override public void run() { while (true) { try { blockingQueue.put(1); System.out.println("队列剩余空间:" + (size - blockingQueue.size())); } catch (InterruptedException e) { e.printStackTrace(); } } } }} - ThreadLocal设计理念
- Java IO与NIO区别
- IO:面向流,逐次读取字节。
- NIO:面向缓冲,批量读取。
- for-each与常规循环效率
- 反射作用与原理
- Java泛型机制
- Java 7与8新特性
- Java 7:try-with-resources、fork/join等。
- Java 8:lambda表达式、streams等。
- 常见设计模式
- 创建型:工厂模式、单例模式等。
- 结构型:适配器模式、装饰模式等。
- 行为型:策略模式、观察者模式等。
- JNI基本用法
- 动态代理应用场景
- 注解基本概念
转载地址:http://mhhiz.baihongyu.com/