Java 后端工程师:面试题精选
项目相关
- 自我介绍
- 介绍你的项目
- 项目的volume
- 线程和并发的知识点
- 锁和同步锁的区别
- MYSQL和MONGODB的区别
- SpringCloud用的哪个组件和版本
Spring生态系统
- Springboot最核心的东西是什么
- Springboot的版本
- SpringCloud用的哪些组件
- Springboot和SpringCloud的区别
- Spring bean的注入方式
- 配置多数据源时bean要怎么命名
微服务架构
- 微服务怎么拆分模块
- 在耦合性上,业务耦合和技术耦合哪个更优先考虑
- 微服务模式microservices用的是什么
- API设计中无状态和有状态的区别,如何选择
- 默认情况下线下部署在云端要部署几个节点
Java相关
- 使用的JDK版本
- Stream流的底层实现
- 用流写的代码出问题怎么定位
- 流的组件和底层
- 线程之间如何实现消息的共享
- 什么是可重入锁
- 解释一下锁的理解
- JDK8和JDK17有什么不同
服务器配置
- Tomcat的默认线程数
- 项目如何从Tomcat迁移到其他web server
- Nginx的反向代理配置
数据库和缓存
- 如何在项目中创建Redis connection,需要导什么包
- 使用Jedis如何创建connection
- Redis事务的命令
- SQL场景题:部门表和员工表联合查询各部门最高薪资员工
- 左连接的优势
编程场景题
- Java8 API实现Person对象按年龄和姓名排序
- 输出两个字符串中的相同字符
CI/CD
- Dockerfile编写经验
- Jenkins pipeline中groovy语言的闭包特性
- Nexus工具的用途
- DevOps实践经验
核心概念
- Java内存模型(JMM)概念和作用
- HashMap实现原理与冲突处理
- Proxy代理模式实现(静态和动态)
- IoC和AOP原理
- Redis为什么单线程仍能保持高性能
- Executor线程池参数配置
印度面试官侧重点
- Java基础概念(需要举例说明)
- 多态的使用
- 链表性能和区别
- Map的区别
- 数组处理方案
- Linux命令
- 项目经验(技术栈:python, angular, control-M)
- 英语表达能力
英语流利等级
- Can’t express oneself - 基础较差,无法进行自我介绍和项目介绍
- Basic/simple conversation - 有一定基础,能进行准备好的自我介绍
- Daily communication - 英文基础较好,可以参与英文会议且理解大部分内容
- Workable - 英文基础不错,可以与面试官流畅交流
- Workable & tech exchange - 英文能力很好,能与面试官进行无障碍技术交流
其他面试考察要点
- 学习方法
- 技术交流能力
- 客户沟通经验
- 项目挑战及解决方案
- 职业发展规划
- 技术深度(多线程、数据校验、前端开发等)