福建网站建建设做模拟人生类的游戏下载网站
2026/2/17 7:40:47 网站建设 项目流程
福建网站建建设,做模拟人生类的游戏下载网站,中国商务商会官方网站,嘉兴网站搭建一、基础核心#xff08;必问#xff09; 1. Java 中的值传递和引用传递有什么区别#xff1f; 答案#xff1a;Java 中只有值传递#xff0c;不存在引用传递#xff1a; 值传递#xff1a;方法接收的是实参的拷贝#xff0c;方法内对参数的修改不会影响原实参…一、基础核心必问1. Java 中的值传递和引用传递有什么区别答案Java 中只有值传递不存在引用传递值传递方法接收的是实参的拷贝方法内对参数的修改不会影响原实参如基本数据类型int、char等。引用传递误区对于对象类型方法接收的是对象引用的拷贝值如果修改的是引用指向的对象内容如对象属性会影响原对象但如果直接修改引用本身如重新new一个对象不会影响原引用。示例代码java运行public class PassTest { // 基本类型值传递 public static void changeInt(int a) { a 10; } // 对象类型传递引用的拷贝 public static void changeObj(User user) { user.setName(新名字); // 修改对象内容影响原对象 user new User(无关); // 修改引用本身不影响原引用 } static class User { private String name; public User(String name) { this.name name; } // getter/setter 省略 } public static void main(String[] args) { int num 1; changeInt(num); System.out.println(num); // 输出 1未改变 User u new User(旧名字); changeObj(u); System.out.println(u.getName()); // 输出 新名字对象内容被改 } }2. 和 equals () 的区别答案比较基本类型判断值是否相等比较引用类型判断引用是否指向同一个对象内存地址是否相同。equals()是Object类的方法默认实现等价于比较地址常用类如String、Integer重写了equals()改为比较内容自定义类如需按内容比较需重写equals()建议同时重写hashCode()。3. String、StringBuffer、StringBuilder 的区别特性StringStringBufferStringBuilder可变性不可变final可变可变线程安全安全不可变安全同步方法不安全性能低频繁创建中高适用场景少量字符串操作多线程字符串操作单线程字符串操作二、面向对象核心1. 接口和抽象类的区别维度抽象类接口继承 / 实现单继承多实现方法可含抽象 / 非抽象方法JDK8 可含默认 / 静态方法其余抽象成员变量可含任意变量只能是public static final构造方法有无设计理念体现 is-a继承体现 has-a能力2. 重载Overload和重写Override的区别重载发生在同一个类中方法名相同参数列表个数 / 类型 / 顺序不同返回值、访问修饰符不影响重载编译期确定静态绑定。重写发生在父子类中方法名、参数列表、返回值协变完全相同子类方法访问修饰符不能比父类更严格不能重写final、static方法运行期确定动态绑定。三、JVM高频1. JVM 内存模型运行时数据区JVM 运行时数据区分为 5 个部分程序计数器线程私有记录当前线程执行的字节码行号无 OOM虚拟机栈线程私有存储方法栈帧局部变量、操作数栈等栈溢出StackOverflowError或 OOM本地方法栈线程私有为 Native 方法服务同虚拟机栈堆线程共享存储对象实例GC 核心区域OOM 高发区分新生代、老年代方法区线程共享存储类信息、常量、静态变量等JDK8 后改为元空间本地内存仍可能 OOM。2. GC 垃圾回收的判断方法引用计数法给对象加引用计数器引用 1释放 - 1计数器为 0 则回收缺点无法解决循环引用。可达性分析算法以 GC Roots如虚拟机栈引用、静态变量、本地方法栈引用为起点遍历对象引用链不可达的对象标记为可回收。3. 常见的 GC 收集器Serial GC单线程适合小内存、单核心客户端Parallel GC多线程注重吞吐量默认 JVM 收集器CMS GC并发标记清除注重低延迟缺点内存碎片、CPU 占用高G1 GC分区收集兼顾吞吐量和延迟适合大内存JDK9 默认。四、并发编程高频1. synchronized 和 Lock 的区别维度synchronizedLock如 ReentrantLock实现方式JVM 层面关键字JDK 层面接口释放锁自动释放异常 / 方法结束手动释放finally可中断不可中断可中断lockInterruptibly超时获取锁不支持支持tryLock (time)公平锁非公平可指定公平 / 非公平条件变量单一多条件Condition2. 线程池的核心参数ThreadPoolExecutor核心参数共 7 个关键 5 个corePoolSize核心线程数常驻线程maximumPoolSize最大线程数keepAliveTime非核心线程空闲超时时间workQueue任务队列如 ArrayBlockingQueue、LinkedBlockingQueuethreadFactory线程创建工厂handler拒绝策略如 AbortPolicy、CallerRunsPolicy。五、集合必问1. HashMap 的底层实现JDK8底层数组 链表 红黑树链表长度≥8 且数组长度≥64 时转红黑树哈希计算hash(key) key.hashCode() ^ (key.hashCode() 16)再与数组长度 - 1 取模扩容默认初始容量 16负载因子 0.75扩容为 2 倍重新哈希线程安全非线程安全并发场景用 ConcurrentHashMapJDK8 用 CASsynchronized。2. ArrayList 和 LinkedList 的区别维度ArrayListLinkedList底层实现动态数组双向链表随机访问快O (1)慢O (n)增删操作慢需移动元素快仅改指针内存占用连续内存有扩容冗余每个节点存前后指针占用更多适用场景大量读取、少量增删大量增删、少量读取总结基础核心重点掌握值传递 / 引用传递、/equals、String 相关、OOP 特性封装 / 继承 / 多态高频进阶JVM 内存模型、GC 机制、HashMap 实现、线程池、并发锁synchronized/Lock是面试重中之重答题技巧回答时先给出核心结论再补充细节 / 示例结合使用场景说明如 HashMap 非线程安全所以高并发下用 ConcurrentHashMap。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询