java面试
技术
基础技术
Java
初
String , StringBuilder , StringBuffer 区别? (可变不可变, 线程安全)
ArrayList与 LinkedList 的底层数据结构区别? (数组和链表)
抽象类是什么?它与接口有什么区别?你为什么要使用过抽象类?
重载和重写区别?
==和equal区别?
Java中最顶层的父类是? 里面有什么基本方法?
Throw和throws区别?
Final可用在哪些位置? 分别表示什么作用?
Try..catch..finally结构中, try或catch中return了, finally还会被执行吗?
中
Java泛型和类型擦除的理解?
展开源码
如何创建单例模式?
Java中有哪些常见集合结构? 他们的区别? (List/Map/Set)
说说Java8的高级语法特性, 都用过哪些 ?
高
系统出现OOM时, 怎么排除?
说说Java的反射, 能用它做什么?
序列化和反序列化区别? 要继承什么接口表示可被序列化? 里面的序列化ID用途?
有没有看过jdk某些类的源码?
Spring Boot
初
@Controller和@RestController的区别?
怎么理解约定优于配置?
springboot 怎样配置多环境?
中
把一个类或方法声明为bean的常见注解有?
AOP是什么? 能用来做什么功能?
怎么理解springboot的依赖注入? 注入一个类的常用方法?
springboot 组件的默认扫描范围,怎样扩展扫描
Springboot支持哪些常见日志框架? 建议使用哪个? 原因?
过滤器和拦截器的异同? 使用场景?
高
动态代理分哪两种? springboot默认使用哪种? 他们的区别?
Springboot中使用事务有哪两种方式? 怎么触发回滚?
Springboot中事务实现原理?
展开源码
Spring中的bean是否默认单例? 线程安全吗? 还有哪些作用域?
有没有看过springboot源码?
数据结构和算法
初
常见排序算法有?
中
高
设计模式
常见设计模式有哪些? 他们的使用场景?
Java中怎么实现单例模式? 怎么理解里面的懒汉模式和饿汉模式?
怎么理解高内聚低耦合?
哪些设计模式可以增加系统的可扩展性?
Maven和Gradle
Maven中的坐标由哪几部分组成?
怎么解决maven依赖冲突?
当项目引入了多个不同版本的某个jar包时, maven怎么做版本选择?
Git
用过git吗? pull, fetch区别?
用git解决冲突流程?
说说协同开发时分支管理的完整流程?
并发编程
初
线程和进程区别?
中
并发控制中, 乐观锁和悲观锁区别?
Java中常用的并发控制关键字或类?
什么情况下适合使用线程池? 使用线程池有什么好处?
高
Synchronized关键字可以修饰在哪些位置?
Atomic原子类实现线程安全原理?
CAS算法是什么? 跟synchronized的使用场景区别?
Java中创建线程池方法的核心参数有哪些?
JVM
初
略
中
JVM新生代,老年代,持久代,都存储哪些东西?
JVM内存模型分为哪些区,每一个区干嘛?
高
什么时候发生young gc和full gc?
说说常用的JVM配置参数?
有JVM调优经验吗?
Redis
初
redis用过吗? 常见用途?
中
Redis常见数据结构?
Redis除了做缓存, 还可以实现什么常见功能?
Redis什么命令可以模糊匹配某些key? 生产环境中用有什么问题? 应该用什么命令代替?
高
在一个更新db数据的操作中, 对缓存和db数据的一致性有什么讲究?
Redis性能高的原因?
Redis都支持什么键值过期策略?和什么内存淘汰策略呢?
Redis支持哪些持久化机制? 优缺点?
PostgreSQL
初
说说pg和mysql的区别?
为什么要使用pg?
中
高
Mysql
初
Mysql服务端默认端口是?
分页和排序分别用的命令是?
中
怎样防止sql注入?
数据库连接池有什么作用?
创建索引的依据以及注意事项?
什么查询场景下索引会失效?
怎样防止sql注入?
数据库引擎有哪些? innodb, mysiam引擎区别?
Mysql支持哪些锁? 区别是?
两张表join在一起时, 一般注意什么?
Offset, limit的注意事项? 一般怎么解决?
怎么多列排序? 跟offset, limit一起用时可能产生什么问题? 怎么解决?
高
什么情况下触发表锁?
是否有mysql调优经验? 常规的调优流程有?
主从复制原理? 一般有什么问题? 一般怎么解决?
什么是mysql的读写分离?
事务隔离级别有哪些? 默认级别是?
表数据过大, 常规优化手段? (分库分表, 读写分离, 限制查询范围)
怎么理解分库分表? 主键ID的生成有什么方案? 分片字段的选择有什么讲究?
分库分表的动态扩容方案?
MyBatis
初
MyBatis与Hibernate的不同?
Mybatis中Insert方法的返回值是什么含义?
中
用过mybatis吗? 说说常见的mybatis标签?
Mybatis怎么避免sql注入?
Mybatis中有哪些分页方法?
高
Mybatis中mapper的实现原理?
Mybatis分页插件原理?
Tomcat
初
配置过tomcat吗?
Tomcat作用是?
Tomcat默认端口?
中
略
高
略
Linux
初
Linux下查看一个文件的内容有哪些命令?
常见的linux命令?
中
Linux 下的文件或目录的权限模型?
Grep命令的作用?
查看进程/磁盘/网络的linux命令?
高
用过iptables命令吗? 能做什么?
会编写shell脚本吗?
中间件
ElasticSearch
初
略
中
用过es吗?
ES 的使用场景是什么?
模糊搜索方案?
Es的index相当于mysql的表, 还是表字段, 还是库?
说说es中分片和副本的理解?
高
es 在数据量很大的情况下(数十亿级别)如何提高查询效率?
es快的原因之一是因为使用了什么底层数据结构?
Es快的原因是?
MQ
初
略
中
MQ的常见用途是?
引入mq一般会给业务系统或者开发带来什么问题?
高
如果保证消息消费的幂等性?
mq堆积了大量消息阻塞了业务怎么办?
WebSocket
初
略
中
webSocket的原理?
你们怎么使用webSocket?
高
说说下你们推送系统的架构设计? 其中websocket是怎么使用的?
缓存
初
用来做缓存的常见工具/库/框架有?
为什么要用缓存?
中
用缓存后可能带来的问题?
高并发设置某些缓存key时, 对设置过期时间有什么注意?
高
说说对缓存雪崩, 缓存穿透, 缓存击穿的理解? 及常规解决办法?
保持数据库和缓存数据一致性的常规方法?
高并发设置同一缓存key时, 可能产生数据不一致, 怎么解决?
微服务
Spring Cloud
初
常用的spring cloud组件有? 作用是?
说说对spring boot和spring cloud的理解?
中
怎样理解微服务? 相比于单体架构的优缺点?
Eureka和Zookeeper在服务发现中的区别?
Spring cloud中的服务一般用什么协议通讯?
怎么理解CAP法则?
服务自动发现原理?
高
什么是服务熔断? 为什么要熔断? spring cloud中可以用什么组件来做断路器?
限流原理? 一般怎么限流? 常规限流策略?
Zookeeper
初
略
中
Zookeeper的常规用途有?
Zookeeper的节点类型有? 区别是?
Zookeeper的一致性算法是?
高
部署zookeeper的节点数为什么建议为奇数个?
Dubbo
分布式
初
略
中
为什么要用分布式锁? 一般用什么做分布式锁?
分布式服务中, 保证请求有序进行的常规方法?
分布式服务中, 怎么鉴权?
如何实现分布式Session? 不同方案的比较?
负载均衡的常规策略?
全局ID生成器的常规方案?
高
设计分布式锁时, 一般要注意什么?
分布式服务中, 接口的幂等性一般怎么保证?
比较下redis分布式锁和zookeeper分布式锁?
了解分布式事务吗? 为什么要分布式事务? 业界常规解决办法有?
怎么理解分布式事务中的两阶段提交?
什么是灰度发布,怎样做?
分布式下, 大报表导出的常规思路?
怎么不停机完成数据迁移, 如分库分表上线?
容器化
Docker
初
什么是docker?
中
Docker常用命令?
Docker中镜像和容器的区别?
可以使用docker的什么特性, 实现代码和配置分离?
高
docker中网络模式的分类? 区别?
K8s
初
略
中
K8s是什么? 作用?
怎么理解K8s中pod和service?
高
运维
Jenkins
Jenkins用途?
持续交付, 系统集成时, 可以用的常见工具?
Nginx
正向代理和反向代理的区别?
Nginx的常规用途?
Nginx的高可用方案?
前端技术
初
中
高
网络
初
Tcp, Udp协议的区别?
Cookie和session区别?
判断网络是否畅通的一些常用命令?
window, linux下查看IP的命令?
中
说说对restful风格的理解?
网络角度, 浏览器访问一个网页时, 都发生了什么?
怎么理解http协议中的无连接, 无状态?
跨域的常规解决办法?
跨域的常见解决办法?
高
架构设计
初
日志打印时的内容, 格式一般要注意什么?
中
怎么提升系统的QPS和吞吐量?
秒杀系统中如何保证不会超卖?
如果设计一个短链接服务?
API的错误响应结构一般怎么设计?
高
如何设计一个高可用系统?
如何实现一个秒杀系统?
如果设计一个订阅, 推送系统?
如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能?
有没有处理过线上问题? 出现内存泄露,CPU利用率标高,应用无响应时如何处理的?
如果设计一个红包系统?
项目实践
介绍下最熟悉的项目?
项目中担任的角色?
负责的功能模块? 用到的技术?
该模块中的业务逻辑? 和技术实现?
有没有遇到过什么难解决的问题? 怎么解决?
有没有经历过性能调优的过程? 说说怎么调优?
现状问题探讨
了解服务编排吗? 有什么想法? 怎么做?
了解分布式事务吗? 常见实现?
了解灰度发布系统吗? 一般怎么实现?
软能力
项目管理
说说从需求产出, 到项目上线, 中途比较完整的软件工程流程是怎样?
怎么快速熟悉一个新项目?
要开发一个新功能, 怎么比较准确的评估工作量?
项目初期, 发现工作量超过上线时间, 怎么办?
工作任务很多, 很杂时怎么处理?
项目迭代中途, 项目进度出现延迟如何处理?
怎么看待开发过程中, 需求变更的情况?
怎么保证开发质量?
怎么看待加班?
和同事的设计思路不一样, 或者产生矛盾怎么处理?
开发一个新功能, 牵涉多端, 多项目, 多部门时, 怎么推动项目前进?
周围同事怎么评价自己?
成长
职业规划是什么? 短期, 长期目标是什么?
能介绍下从工作到现在自己的成长在那里?
学习
如何快速学习一项新技术?
知道业界出现什么新技术, 新理念吗?
性格
属于哪种性格, 内敛还是外向? 怎么评价自己的主观能动性?
常见问题
简单的自我介绍?
为什么从上家公司离职?
最快能什么时候入职?
薪酬待遇有什么要求?
哪里人? 现在住哪?