金九银十跳槽一定不能错过的 java 面试集——前百度资深架构师整理
话不多说,直接进入主题:
以下面试题是针对 2-6 年 Java 开发人员,快来围观,不喜勿喷。
一、数据结构与算法基础
说一下几种常见的排序算法和分别的复杂度。
用 Java 写一个冒泡排序算法
描述一下链式存储结构。
如何遍历一棵二叉树?
倒排一个 LinkedList。
用 Java 写一个递归遍历目录下面的所有文件。
二、Java 基础
接口与抽象类的区别?
Java 中的异常有哪几类?分别怎么使用?
常用的集合类有哪些?比如 List 如何排序?
ArrayList 和 LinkedList 内部的实现大致是怎样的?他们之间的区别和优缺点?
内存溢出是怎么回事?请举一个例子?
==和 equals 的区别?
hashCode 方法的作用?
NIO 是什么?适用于何种场景?
HashMap 实现原理,如何保证 HashMap 的线程安全?
JVM 内存结构,为什么需要 GC?
NIO 模型,select/epoll 的区别,多路复用的原理
Java 中一个字符占多少个字节,扩展再问 int, long, double 占多少字节
创建一个类的实例都有哪些办法?
final/finally/finalize 的区别?
Session/Cookie 的区别?
String/StringBuffer/StringBuilder 的区别,扩展再问他们的实现?
Servlet 的生命周期?
如何用 Java 分配一段连续的 1G 的内存空间?需要注意些什么?
Java 有自己的内存回收机制,但为什么还存在内存泄露的问题呢?
什么是 java 序列化,如何实现 java 序列化?(写一个实例)?
String s = new String("abc");创建了几个 String Object?
三、JVM
JVM 堆的基本结构。
JVM 的垃圾算法有哪几种?CMS 垃圾回收的基本流程?
JVM 有哪些常用启动参数可以调整,描述几个?
如何查看 JVM 的内存使用情况?
Java 程序是否会内存溢出,内存泄露情况发生?举几个例子。
你常用的 JVM 配置和调优参数都有哪些?分别什么作用?
JVM 的内存结构?
常用的 GC 策略,什么时候会触发 YGC,什么时候触发 FGC?
四、多线程/并发
如何创建线程?如何保证线程安全?
如何实现一个线程安全的数据结构
如何避免死锁
Volatile 关键字的作用?
HashMap 在多线程环境下使用需要注意什么?为什么?
Java 程序中启动一个线程是用 run()还是 start()?
什么是守护线程?有什么用?
什么是死锁?如何避免
线程和进程的差别是什么?
Java 里面的 Threadlocal 是怎样实现的?
ConcurrentHashMap 的实现原理是?
sleep 和 wait 区别
notify 和 notifyAll 区别
volatile 关键字的作
ThreadLocal 的作用与实现
两个线程如何串行执行
上下文切换是什么含义
可以运行时 kill 掉一个线程吗?
什么是条件锁、读写锁、自旋锁、可重入锁?
线程池 ThreadPoolExecutor 的实现原理?
五、Linux 使用与问题分析排查
使用两种命令创建一个文件?
硬链接和软链接的区别?
Linux 常用命令有哪些?
怎么看一个 Java 线程的资源耗用?
Load 过高的可能性有哪些?
/etc/hosts 文件什么做用?
如何快速的将一个文本中所有“abc”替换为“xyz”?
如何在 log 文件中搜索找出 error 的日志?
发现磁盘空间不够,如何快速找出占用空间最大的文件?
Java 服务端问题排查(OOM,CPU 高,Load 高,类冲突)
Java 常用问题排查工具及用法(top, iostat, vmstat, sar, tcpdump, jvisualvm, jmap, jconsole)
Thread dump 文件如何分析(Runnable,锁,代码栈,操作系统线程 ID 关联)
如何查看 Java 应用的线程信息?
六、框架使用
描述一下 Hibernate 的三个状态?
Spring 中 Bean 的生命周期。
SpringMVC 或 Struts 处理请求的流程。
Spring AOP 解决了什么问题?怎么实现的?
Spring 事务的传播属性是怎么回事?它会影响什么?
Spring 中 BeanFactory 和 FactoryBean 有什么区别?
Spring 框架中 IOC 的原理是什么?
spring 的依赖注入有哪几种方式
struts 工作流程
用 Spring 如何实现一个切面?
Spring 如何实现数据库事务?
Hibernate 对一二级缓存的使用,Lazy-Load 的理解;
mybatis 如何实现批量提交?
七、数据库相关
MySQL InnoDB、Mysaim 的特点?
乐观锁和悲观锁的区别?
数据库隔离级别是什么?有什么作用?
MySQL 主备同步的基本原理。
select * from table t where size > 10 group by size order by size 的 sql 语句执行顺序?
如何优化数据库性能(索引、分库分表、批量操作、分页算法、升级硬盘 SSD、业务优化、主从部署)
SQL 什么情况下不会使用索引(不包含,不等于,函数)
一般在什么字段上建索引(过滤数据最多的字段)
如何从一张表中查出 name 字段不包含“XYZ”的所有行?
MySQL,B+索引实现,行锁实现,SQL 优化
Redis,RDB 和 AOF,如何做高可用、集群
如何解决高并发减库存问题
mysql 存储引擎中索引的实现机制;
数据库事务的几种粒度;
行锁,表锁;乐观锁,悲观锁
八、网络协议和网络编程
TCP 建立连接的过程。
TCP 断开连接的过程。
浏览器发生 302 跳转背后的逻辑?
HTTP 协议的交互流程。HTTP 和 HTTPS 的差异,SSL 的交互流程?
Rest 和 Http 什么关系? 大家都说 Rest 很轻量,你对 Rest 风格如何理解?
TCP 的滑动窗口协议有什么用?讲讲原理。
HTTP 协议都有哪些方法?
交换机和路由器的区别?
Socket 交互的基本流程?
http 协议(报文结构,断点续传,多线程下载,什么是长连接)
tcp 协议(建连过程,慢启动,滑动窗口,七层模型)
webservice 协议(wsdl/soap 格式,与 rest 协议的区别)
NIO 的好处,Netty 线程模型,什么是零拷贝
九、Redis 等缓存系统/中间件/NoSQL/一致性 Hash 等
列举一个常用的 Redis 客户端的并发模型。
HBase 如何实现模糊查询?
列举一个常用的消息中间件,如果消息要保序如何实现?
如何实现一个 Hashtable?你的设计如何考虑 Hash 冲突?如何优化?
分布式缓存,一致性 hash
LRU 算法,slab 分配,如何减少内存碎片
如何解决缓存单机热点问题
什么是布隆过滤器,其实现原理是? False positive 指的是?
memcache 与 redis 的区别
zookeeper 有什么功能,选举算法如何进行
map/reduce 过程,如何用 map/reduce 实现两个数据源的联合统计
十、设计模式与重构
你能举例几个常见的设计模式
你在设计一个工厂的包的时候会遵循哪些原则?
你能列举一个使用了 Visitor/Decorator 模式的开源项目/库吗?
你在编码时最常用的设计模式有哪些?在什么场景下用?
如何实现一个单例?
代理模式(动态代理)
单例模式(懒汉模式,并发初始化如何解决,volatile 与 lock 的使用)
JDK 源码里面都有些什么让你印象深刻的设计模式使用,举例看看?
十一、Java 多线程
现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
在 java 中 wait 和 sleep 方法的不同?
用 Java 实现阻塞队列。
用 Java 写代码来解决生产者——消费者问题。
用 Java 编程一个会导致死锁的程序,你将怎么解决?
什么是原子操作,Java 中的原子操作是什么?
Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
什么是竞争条件?你怎样发现和解决竞争?
你将如何使用 thread dump?你将如何分析 Thread dump?
为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
Java 中你怎样唤醒一个阻塞的线程?
在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
什么是不可变对象,它对写并发应用有什么帮助?
你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
最后
码字不易,觉得有帮助的可以帮忙转发一下,让更多有需要的人看到
再过一个多月就到了 2023,在这里,我为各位准备了一套 Java 程序员精选高频面试笔试真题,来帮助大家攻下 BAT 的 offer,题目范围从初级的 Java 基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
资料已整理成文档,免费获取,需要的小伙伴可以+ VX: mxk6072
由于篇幅原因就不一一展示了
再牛 x 的梦想也抵不住傻 x 似的坚持!
只要坚持就能成功。
评论