助力秋招-独孤九剑荡剑式 | Java语言&基础面试题

Java语言&基础面试题

Java语言基础

  • final, finally, finalize 的区别
  • final 在 java 中有什么作用,如何实现的
  • Exception、Error、运行时异常与一般异常有何异同
  • 请写出5种常见到的runtime exception
  • int 和 Integer 有什么区别,Integer的值缓存范围
  • 包装类,装箱和拆箱
  • 如何将字符串反转
  • java 中操作字符串都有哪些类,它们之间有什么区别
  • String 类的常用方法都有哪些
  • String、StringBuilder、StringBuffer
  • String str="i"与 String str=new String(“i”)有什么区别吗
  • String 属于基础的数据类型吗
  • 重载和重写的区别
  • 抽象类和接口有什么区别
  • 说说反射的用途及实现
  • 说说自定义注解的场景及实现
  • == 和 equals 的区别是什么?
  • 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
  • String中hashcode是怎么实现的
  • java 中的 Math.round(-1.5) 等于多少?
  • 抽象类必须要有抽象方法吗?
  • 普通类和抽象类有哪些区别?
  • 抽象类能使用 final 修饰吗?
  • 接口和抽象类有什么区别?
  • java 中 IO 流分为几种?
  • BIO、NIO、AIO 有什么区别?
  • Files的常用方法都有哪些?

集合

  • List 和 Set 区别
  • Set和hashCode以及equals方法的联系
  • List 和 Map 区别
  • Arraylist 与 LinkedList 区别
  • ArrayList 与 Vector 区别
  • HashMap 和 Hashtable 的区别
  • HashSet 和 HashMap 区别
  • HashMap 和 ConcurrentHashMap 的区别
  • HashMap 的工作原理及代码实现,什么时候用到红黑树
  • 多线程情况下HashMap死循环的问题
  • HashMap出现Hash DOS攻击的问题
  • ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数
  • 手写简单的HashMap
  • 看过那些Java集合类的源码
  • Collection 和 Collections 有什么区别
  • List、Set、Map 之间的区别是什么
  • TreeMap是如何实现的
  • HashMap 的实现原理,HashSet呢
  • 数组和 List 之间如何转换
  • Queue 中 poll()和 remove()的区别
  • 哪些集合类是线程安全的
  • 迭代器 Iterator 是什么
  • Iterator 怎么使用,有什么特点
  • Iterator 和 ListIterator 有什么区别
  • 怎么确保一个集合不能被修改

并发&多线程&锁

  • 线程、进程、程序的异同
  • 守护线程及其与非守护线程的区别
  • 线程和进程的概念、并行和并发的概念
  • 创建线程的方式及实现
  • 进程间通信的方式
  • 什么是多线程上下文切换
  • Java 中用到的线程调度算法是什么
  • 什么是线程饥饿
  • 你对线程优先级的理解是什么
  • sleep、join、yield 方法有什么区别
  • ThreadLocal变量,使用注意事项
  • interrupted 和 isInterrupted 方法有什么区别
  • 线程池的实现?四种线程池?重要参数及原理?任务拒接策略有哪几种?
  • 线程池的关闭方式,有什么区别
  • 线程池如何调优,最大数目如何确认?
  • 线程状态以及API怎么操作会发生这种转换
  • Java 线程池大小为何会大多被设置成 CPU 核心数 +1
  • 什么是 Callable、Future、FutureTask ?
  • Fork/Join 框架
  • 说说 CountDownLatch、CyclicBarrier 原理和区别
  • 说说 Semaphore 原理
  • 说说 Exchanger 原理
  • ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理
  • 讲讲线程池的实现原理
  • 线程池的几种实现方式
  • 线程的生命周期,状态是如何转移的
  • 一个线程连着调用start两次会出现什么情况
  • synchronized的原理,ReentraLock的原理,二者异同,哪个是公平锁
  • volatile 实现原理
  • J.U.C并发包下用过哪个类,场景是什么
  • wait方法能不能被重写,wait能不能被中断
  • 常用的避免死锁方法
  • 分段锁的原理,锁力度减小的思考
  • Condition接口及其实现原理
  • LockSupport工具
  • 什么是悲观锁、乐观锁
  • 偏向锁,轻量级锁,重量级锁
  • 锁自旋,锁削除,锁膨胀
  • Java的内存模型(注意:这里不是说JVM的模型)
  • happens-before原则
  • SynchronizedMap 和 ConcurrentHashMap 什么区别
  • 常用的并发容器,重点CopyOnWriteArrayList
  • Java 提供了哪些阻塞队列的实现,各个阻塞队列的特性
  • AtomicInteger底层实现原理
  • CAS机制会出现什么问题
  • Java 并发工具类:Semaphore、CountDownLatch、CyclicBarrier、Exchanger

JVM

  • JVM 由哪些部分组成
  • JVM运行时内存区域划分
  • 内存溢出OOM和堆栈溢出SOE的示例及原因、如何排查与解决
  • 如何判断对象是否可以回收或存活
  • 常见的GC回收算法及其含义
  • 常见的JVM性能监控和故障处理工具类:jps、jstat、jmap、jinfo、jconsole等
  • JVM如何设置参数
  • JVM性能调优
  • 类加载器、双亲委派模型、一个类的生命周期、类是如何加载到JVM中的
  • 类加载的过程:加载、验证、准备、解析、初始化
  • 强引用、软引用、弱引用、虚引用
  • Java内存模型JMM
  • JDK8 之后 Perm Space 有哪些变动? MetaSpace ⼤⼩默认是⽆限的么? 还是你们会通过什么⽅式来指定⼤⼩?
  • Java 内存堆和栈区别
  • JAVA 对象创建的过程
  • OutOfMemoryError有哪些
  • 垃圾回收机制
  • 如何判断一个对象是否已经死去
  • 常用的垃圾回收器
  • G1 和 CMS 的区别
  • 对象分配规则是怎么样的
  • 如何排查线程 Full GC频繁的问题
  • 虚拟机类加载机制
  • 双亲委派模型
  • 如何破坏双亲委托模型,哪里遇到过这种情况?(Tomcat)
  • 了解虚拟机字节码执行引擎JIT

设计模式

  • 推荐一个Github仓库: https://github.com/tim-chow/DesignPattern
  • 常见的设计模式
  • 设计模式的的六大原则及其含义
  • 常见的单例模式以及各种实现方式的优缺点,哪一种最好
  • 单例模式的9种写法(闭着眼睛写不出来的去面壁)
  • 设计模式在实际场景中的应用
  • Spring中用到了哪些设计模式
  • MyBatis中用到了哪些设计模式
  • 你项目中有使用哪些设计模式
  • 说说常用开源框架中设计模式使用分析
  • 动态代理很重要

Mysql

  • 数据库索引原理,什么是全文索引,全文索引中的倒排索引是什么原理
  • 数据库最佳左前缀原则是什么
  • 数据库的三大范式
  • 悲观锁和乐观锁的原理和应用场景
  • 左连接、右连接、内连接、外连接、交叉连接、笛卡儿积等
  • 一般情况下数据库宕机了如何进行恢复(什么是Write Ahead Log机制,什么是Double Write机制,什么是Check Point)
  • 什么是redo日志、什么是undo日志
  • 数据库中的隔离性是怎样实现的
  • 原子性、一致性、持久性又是如何实现的
  • 什么是组合索引,组合索引什么时候会失效
  • 数据库死锁如何解决
  • MySQL并发情况下怎么解决(通过事务、隔离级别、锁)
  • MySQL中的MVCC机制是什么意思,根据具体场景,MVCC是否有问题
  • MySQL数据库的隔离级别,以及如何解决幻读
  • MySQL 索引使用的注意事项
  • DDL、DML、DCL分别指什么
  • explain命令
  • 数据库事物ACID(原子性、一致性、隔离性、持久性)
  • 事物的隔离级别(读未提交、读已提交、可重复读、可序列化读)
  • 脏读、幻读、不可重复读
  • 说说分库与分表设计
  • 分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表)
  • 说说 SQL 优化之道
  • MySQL遇到的死锁问题、如何排查与解决
  • 存储引擎的 InnoDB与MyISAM区别,优缺点,使用场景
  • 索引类别(B+树索引、全文索引、哈希索引)、索引的原理
  • 什么是自适应哈希索引(AHI)
  • 为什么要用 B+tree作为MySQL索引的数据结构
  • 聚集索引与非聚集索引的区别
  • 遇到过索引失效的情况没,什么时候可能会出现,如何解决
  • MySQL 主从复制的流程是怎么样的?如何保证复制过程中数据一致性?如何解决主从复制的延时性?
  • MySQL备份方式
  • limit 20000 加载很慢怎么解决
  • 选择合适的数据存储方案
  • 基于Mysql的分布式ID的设计方案
  • 常见的数据库优化方案,在你的项目中数据库如何进行优化的

Netty

  • BIO、NIO、AIO的概念区别和联系
  • Netty是什么?使用场景?
  • Netty 如何实现高性能

(线程模型、堆外内存、内存池设计、队列优化、并发能力、降低锁竞争、内存泄露检测)

  • Netty的高可靠性
  • Netty的高扩展性
  • Netty的核心组件
  • Reactor模型
  • 线程模型
  • TCP粘包/拆包的原因和解决办法
  • 支持的序列化协议
  • Netty的零拷贝
  • Netty是怎么解决原生的 NIO 存在 Epoll Bug
  • Netty空闲检测
  • Netty如何实现重连
  • Netty自己实现的 ByteBuf 有什么优点
  • Netty如何实现内存管理
  • Netty的内存泄露检测?是如何进行实现的
  • 说说你读过Netty哪些源码


  • 发表于 2020-05-07 11:34
  • 阅读 ( 47 )
  • 分类:默认分类

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

python开发

125 篇文章

作家榜 »

  1. admin 125 文章
  2. python爱好者 0 文章
  3. druks 0 文章
  4. prosha 0 文章
  5. wuyouwulu 0 文章
  6. 李俊龙 0 文章
  7. ts小陈 0 文章