首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >初级Java经典面试题汇总

初级Java经典面试题汇总

作者头像
用户8589624
发布2025-11-15 15:03:26
发布2025-11-15 15:03:26
200
举报
文章被收录于专栏:nginxnginx

初级Java经典面试题汇总(快问快答)

Java基础
  1. Java中的基本数据类型有哪些?
    • byte, short, int, long, float, double, char, boolean。
  2. String、StringBuilder和StringBuffer的区别是什么?
    • String是不可变的,StringBuilder和StringBuffer是可变的。
    • StringBuilder是非线程安全的,StringBuffer是线程安全的。
  3. Java中的final关键字有什么作用?
    • 修饰类:类不能被继承。
    • 修饰方法:方法不能被重写。
    • 修饰变量:变量值不能被修改。
  4. 什么是Java中的自动装箱和拆箱?
    • 自动装箱:将基本类型转换为对应的包装类(如int -> Integer)。
    • 自动拆箱:将包装类转换为基本类型(如Integer -> int)。
  5. Java中的==和equals()方法有什么区别?
    • ==比较的是引用地址,equals()比较的是对象内容(默认比较引用地址,可重写)。
  6. Java中的异常处理机制是怎样的?try-catch-finally的执行顺序是什么?
    • try块捕获异常,catch块处理异常,finally块无论是否发生异常都会执行。
  7. Java中的重载(Overload)和重写(Override)有什么区别?
    • 重载:同一个类中,方法名相同,参数列表不同。
    • 重写:子类重写父类的方法,方法名和参数列表相同。
  8. Java中的接口和抽象类有什么区别?
    • 接口:只能定义常量和抽象方法(Java 8后可以有默认方法),支持多继承。
    • 抽象类:可以定义普通方法和抽象方法,不支持多继承。
  9. Java中的static关键字有什么作用?
    • 修饰变量:类变量,所有实例共享。
    • 修饰方法:类方法,可直接通过类名调用。
    • 修饰代码块:静态代码块,类加载时执行。
  10. Java中的访问修饰符有哪些?它们的访问权限分别是什么?
    • public:所有类可见。
    • protected:同一包内及子类可见。
    • default(无修饰符):同一包内可见。
    • private:仅本类可见。

集合
  1. Java中的集合框架有哪些主要的接口和类?
    • 接口:Collection、List、Set、Map。
    • 类:ArrayList、LinkedList、HashSet、HashMap等。
  2. ArrayList和LinkedList的区别是什么?
    • ArrayList基于动态数组,查询快,增删慢。
    • LinkedList基于双向链表,增删快,查询慢。
  3. HashMap和Hashtable的区别是什么?
    • HashMap是非线程安全的,Hashtable是线程安全的。
    • HashMap允许null键和null值,Hashtable不允许。
  4. HashMap的工作原理是什么?如何解决哈希冲突?
    • 基于哈希表,通过键的hashCode计算存储位置。
    • 哈希冲突通过链表或红黑树解决(JDK 8后)。
  5. ConcurrentHashMap是如何实现线程安全的?
    • 使用分段锁(JDK 7)或CAS + synchronized(JDK 8)。
  6. Java中的迭代器(Iterator)是什么?如何使用?
    • 用于遍历集合,通过hasNext()和next()方法实现。
  7. Java中的Comparable和Comparator接口有什么区别?
    • Comparable:自然排序,实现compareTo()方法。
    • Comparator:定制排序,实现compare()方法。
  8. Java中的PriorityQueue是如何实现的?
    • 基于堆(Heap)数据结构实现。
  9. Java中的TreeMap和HashMap有什么区别?
    • TreeMap基于红黑树,键有序;HashMap基于哈希表,键无序。
  10. Java中的CopyOnWriteArrayList是如何实现线程安全的?
    • 写操作时复制一个新数组,读操作无锁。

多线程
  1. Java中创建线程的方式有哪些?
    • 继承Thread类,实现Runnable接口,实现Callable接口。
  2. Runnable和Callable接口有什么区别?
    • Runnable无返回值,Callable有返回值。
  3. Java中的线程池有哪些?如何使用?
    • Executors.newFixedThreadPool()、newCachedThreadPool()等。
  4. Java中的synchronized关键字有什么作用?
    • 用于实现线程同步,保证同一时刻只有一个线程执行代码块。
  5. Java中的volatile关键字有什么作用?
    • 保证变量的可见性,禁止指令重排序。
  6. Java中的wait()、notify()和notifyAll()方法有什么作用?
    • wait():释放锁,进入等待状态。
    • notify():唤醒一个等待线程。
    • notifyAll():唤醒所有等待线程。
  7. Java中的线程状态有哪些?
    • NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。
  8. Java中的ThreadLocal是什么?如何使用?
    • 用于实现线程本地变量,每个线程独立存储数据。
  9. Java中的锁机制有哪些?ReentrantLock和synchronized有什么区别?
    • ReentrantLock支持公平锁、可中断锁,synchronized是JVM内置锁。
  10. Java中的线程池参数有哪些?如何合理配置线程池?
    • corePoolSize、maximumPoolSize、keepAliveTime、workQueue等。

JVM
  1. JVM的内存结构是怎样的?
    • 方法区、堆、栈、本地方法栈、程序计数器。
  2. Java中的垃圾回收机制是什么?有哪些常见的垃圾回收算法?
    • 标记-清除、标记-整理、复制算法、分代收集。
  3. Java中的类加载机制是怎样的?
    • 加载、验证、准备、解析、初始化、使用、卸载。
  4. Java中的双亲委派模型是什么?
    • 类加载器优先委派父类加载器加载类,避免重复加载。
  5. Java中的内存溢出和内存泄漏有什么区别?
    • 内存溢出:内存不足。
    • 内存泄漏:对象无法被回收。
  6. Java中的堆和栈有什么区别?
    • 堆存储对象实例,栈存储局部变量和方法调用。
  7. Java中的GC Roots有哪些?
    • 虚拟机栈中的引用、方法区中的静态变量、本地方法栈中的引用等。
  8. Java中的强引用、软引用、弱引用和虚引用有什么区别?
    • 强引用:不会被回收。
    • 软引用:内存不足时回收。
    • 弱引用:GC时回收。
    • 虚引用:用于对象回收跟踪。
  9. Java中的JVM参数有哪些?如何调优JVM?
    • -Xms、-Xmx、-XX:NewSize、-XX:MaxPermSize等。
  10. Java中的方法区(Metaspace)和永久代(PermGen)有什么区别?
    • 方法区(JDK 8后)使用本地内存,永久代(JDK 7及之前)使用JVM内存。

数据库
  1. MySQL中的索引有哪些类型?
    • B+树索引、哈希索引、全文索引等。
  2. MySQL中的事务隔离级别有哪些?
    • READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。
  3. MySQL中的锁机制有哪些?
    • 行锁、表锁、间隙锁等。
  4. MySQL中的聚簇索引和非聚簇索引有什么区别?
    • 聚簇索引:数据和索引存储在一起。
    • 非聚簇索引:数据和索引分开存储。
  5. MySQL中的explain命令有什么作用?
    • 分析SQL语句的执行计划。
  6. MySQL中的慢查询如何优化?
    • 添加索引、优化SQL语句、分库分表等。
  7. MySQL中的主从复制是如何实现的?
    • 主库写binlog,从库读取binlog并重放。
  8. Redis的数据类型有哪些?
    • String、List、Set、Hash、ZSet等。
  9. Redis的持久化机制有哪些?
    • RDB(快照)、AOF(追加日志)。
  10. Redis的缓存穿透、缓存雪崩和缓存击穿有什么区别?如何解决?
    • 缓存穿透:查询不存在的数据,解决方案:布隆过滤器。
    • 缓存雪崩:大量缓存同时失效,解决方案:设置不同的过期时间。
    • 缓存击穿:热点数据失效,解决方案:加锁或永不过期。

Spring框架
  1. Spring中的IoC和AOP是什么?
    • IoC:控制反转,将对象创建和依赖注入交给Spring容器。
    • AOP:面向切面编程,通过动态代理实现横切关注点。
  2. Spring中的Bean作用域有哪些?
    • singleton、prototype、request、session、global-session。
  3. Spring中的Bean生命周期是怎样的?
    • 实例化、属性赋值、初始化、使用、销毁。
  4. Spring中的事务管理是如何实现的?
    • 通过@Transactional注解或XML配置实现声明式事务。
  5. Spring MVC的工作原理是什么?
    • 客户端请求 -> DispatcherServlet -> HandlerMapping -> Controller -> ViewResolver -> 视图渲染。
  6. Spring Boot的自动配置是如何实现的?
    • 通过@EnableAutoConfiguration和spring.factories文件加载配置类。
  7. Spring中的@Autowired和@Resource注解有什么区别?
    • @Autowired按类型注入,@Resource按名称注入。
  8. Spring中的拦截器和过滤器有什么区别?
    • 拦截器:基于Spring MVC,可访问Handler。
    • 过滤器:基于Servlet,可拦截所有请求。
  9. Spring中的事务传播行为有哪些?
    • REQUIRED、REQUIRES_NEW、SUPPORTS、NOT_SUPPORTED等。
  10. Spring中的BeanFactory和ApplicationContext有什么区别?
    • BeanFactory是基础容器,ApplicationContext扩展了BeanFactory,支持更多功能(如AOP、事件传播)。

设计模式
  1. 什么是单例模式?如何实现线程安全的单例模式?
    • 确保一个类只有一个实例,通过双重检查锁或静态内部类实现。
  2. 什么是工厂模式?工厂模式和抽象工厂模式有什么区别?
    • 工厂模式:创建单一产品。
    • 抽象工厂模式:创建产品族。
  3. 什么是观察者模式?
    • 定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖对象都会收到通知。
  4. 什么是装饰器模式?
    • 动态地为对象添加功能,通过组合而非继承实现。
  5. 什么是代理模式?静态代理和动态代理有什么区别?
    • 代理模式:为其他对象提供代理以控制访问。
    • 静态代理:手动编写代理类。
    • 动态代理:运行时生成代理类(如JDK动态代理、CGLIB)。
  6. 什么是策略模式?
    • 定义一系列算法,将每个算法封装起来,并使它们可以互换。
  7. 什么是模板方法模式?
    • 定义一个算法的骨架,将某些步骤延迟到子类中实现。
  8. 什么是适配器模式?
    • 将一个类的接口转换成客户希望的另一个接口。
  9. 什么是责任链模式?
    • 将请求的发送者和接收者解耦,使多个对象都有机会处理请求。
  10. 什么是建造者模式?
    • 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

微服务
  1. 什么是微服务?微服务和单体应用有什么区别?
    • 微服务:将应用拆分为多个独立的小服务。
    • 单体应用:所有功能集中在一个应用中。
  2. Spring Cloud中的Eureka和Nacos有什么区别?
    • Eureka:服务注册与发现。
    • Nacos:除了服务注册与发现,还支持配置管理。
  3. Spring Cloud中的Feign是什么?如何使用?
    • 声明式的HTTP客户端,通过注解定义接口。
  4. Spring Cloud中的Ribbon是什么?如何使用?
    • 客户端负载均衡工具,通过@LoadBalanced注解使用。
  5. Spring Cloud中的Hystrix是什么?如何使用?
    • 服务容错工具,通过@HystrixCommand注解使用。
  6. Spring Cloud中的Zuul和Gateway有什么区别?
    • Zuul:基于Servlet的API网关。
    • Gateway:基于Spring 5的响应式API网关。
  7. Spring Cloud中的Config是什么?如何使用?
    • 分布式配置中心,通过@EnableConfigServer注解启用。
  8. Spring Cloud中的Sleuth是什么?如何使用?
    • 分布式链路追踪工具,通过@EnableSleuth注解启用。
  9. Spring Cloud中的Stream是什么?如何使用?
    • 消息驱动微服务框架,通过@EnableBinding注解启用。
  10. Spring Cloud中的Bus是什么?如何使用?
    • 消息总线,用于广播配置更改,通过@EnableBus注解启用。

Linux
  1. Linux中的常用命令有哪些?
    • ls、cd、pwd、mkdir、rm、cp、mv、cat、grep、find等。
  2. Linux中的文件权限是如何管理的?
    • 通过chmod命令修改文件权限(如chmod 755 file)。
  3. Linux中的进程管理命令有哪些?
    • ps、top、kill、pkill、nohup等。
  4. Linux中的网络管理命令有哪些?
    • ifconfig、ping、netstat、ssh、scp等。
  5. Linux中的日志文件存放在哪里?如何查看日志?
    • /var/log目录下,使用cat、tail、less等命令查看。
  6. Linux中的软链接和硬链接有什么区别?
    • 软链接:类似于快捷方式,指向文件路径。
    • 硬链接:指向文件的inode。
  7. Linux中的Shell脚本如何编写?
    • 使用#!/bin/bash开头,编写命令并保存为.sh文件。
  8. Linux中的crontab是什么?如何使用?
    • 定时任务工具,通过crontab -e编辑任务。
  9. Linux中的top命令有什么作用?
    • 实时显示系统资源使用情况。
  10. Linux中的grep命令有什么作用?
    • 在文件中搜索指定字符串。

前端
  1. HTML中的常用标签有哪些?
    • div、span、p、a、img、ul、li、table、form等。
  2. CSS中的盒模型是什么?
    • 内容(content)、内边距(padding)、边框(border)、外边距(margin)。
  3. CSS中的浮动和定位有什么区别?
    • 浮动:元素脱离文档流,其他元素环绕。
    • 定位:通过position属性控制元素位置(relative、absolute、fixed)。
  4. JavaScript中的闭包是什么?
    • 函数内部定义的函数,可以访问外部函数的变量。
  5. JavaScript中的原型链是什么?
    • 对象通过__proto__属性指向其原型对象,形成链式结构。
  6. JavaScript中的事件冒泡和事件捕获有什么区别?
    • 事件冒泡:从目标元素向上传播。
    • 事件捕获:从根元素向下传播。
  7. Vue中的生命周期钩子有哪些?
    • beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed。
  8. Vue中的双向数据绑定是如何实现的?
    • 通过v-model指令实现。
  9. Vue中的组件通信方式有哪些?
    • props、
    emit、

    parent/$children、Vuex等。

  10. Vue中的路由是如何实现的?
    • 通过vue-router插件实现路由配置和跳转。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 初级Java经典面试题汇总(快问快答)
    • Java基础
    • 集合
    • 多线程
    • JVM
    • 数据库
    • Spring框架
    • 设计模式
    • 微服务
    • Linux
    • 前端
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档