把新人入职最常问的问题集中在一起,直接给答案。遇到问题先翻这节,能省你很多时间。
一、环境类问题
Q1:JDK装了但命令找不到('java'不是内部或外部命令)
A: 环境变量没配好。
- 确认JAVA_HOME路径正确(去文件夹地址栏复制)
- 确认Path里有
%JAVA_HOME%\bin - 配完重开一个cmd窗口,旧窗口不生效
Q2:Maven下载依赖特别慢
A: 没配镜像或镜像没生效。
- 检查settings.xml里有没有阿里云镜像配置
- 检查IDEA用的Maven是不是你配好镜像的那个
- 确认settings.xml路径在IDEA里配置正确
<mirror>
<id>aliyun-public</id>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
Q3:IDEA打开项目后一直卡在Indexing
A: 项目太大或有超大文件。
- 排除不需要索引的目录(右键 → Mark Directory as → Excluded):node_modules、target、dist
- 增大IDEA内存(修改idea64.exe.vmoptions的-Xmx)
- 如果是前后端混合项目,分开打开
Q4:MySQL忘记密码了
A: 跳过权限验证重置。
- 停止MySQL服务:
net stop MySQL80 - 跳过权限启动:
mysqld --console --skip-grant-tables --shared-memory - 新窗口直接登录:
mysql -u root(不用密码) - 改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; - 关闭跳过权限窗口,重启MySQL
Q5:Redis能连上但项目报 NOAUTH
A: Redis设了密码但项目没配。
在配置文件里加上Redis密码:
spring:
redis:
password: 你的Redis密码
如果Redis没设密码但项目配了password,反过来删掉password配置。
Q6:Git clone速度很慢
A: 用浅克隆或配代理。
# 浅克隆,只拉最近一次提交
git clone --depth 1 git@xxx
# 或配置代理
git config --global http.proxy http://127.0.0.1:7890
Q7:每次git push都要输密码
A: 用了HTTPS地址而不是SSH。
# 改成SSH地址
git remote set-url origin git@github.com:user/repo.git
# 或保存HTTPS凭证
git config --global credential.helper store
二、项目运行类问题
Q8:SpringBoot启动报端口被占用
A: 杀进程或换端口。
# 查端口占用
netstat -ano | findstr 8080
# 杀进程
taskkill /PID 进程ID /F
或改端口:server.port: 8081
Q9:数据库连接报 Communications link failure
A: 4个排查点。
- MySQL服务是否启动:
net start | findstr MySQL - URL地址/端口/数据库名是否正确
- 用户名密码是否正确
- MySQL 8.x加
allowPublicKeyRetrieval=true&useSSL=false
Q10:启动报 BeanCreationException
A: 看Caused by找根因。
常见原因:
- 依赖注入失败(找不到Bean)→ 检查@Service/@Component注解
- 配置缺失 → 检查@Value对应的配置项
- 数据库/Redis连不上 → 先解决连接问题
Q11:Vue项目 npm install 报错
A: 按以下顺序试。
- 确认npm镜像:
npm config get registry(应该是淘宝镜像) - 删掉node_modules和package-lock.json重新安装
- Node版本不兼容 → 用nvm切换版本
- node-sass装不上 → 换成sass:
npm uninstall node-sass && npm install sass
Q12:前后端联调报跨域错误
A: 前端配Proxy或后端配CORS。
前端Proxy(推荐):
// vite.config.js
server: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}
前端请求用相对路径:/api/user/list
后端CORS:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedMethods("*")
.allowCredentials(true);
}
}
Q13:接口返回404
A: 检查路径匹配。
- 对比前端请求URL和后端@RequestMapping路径
- 检查context-path是否加了
- 检查请求方法(GET/POST)是否匹配
- 检查Controller是否被扫描到
Q14:接口返回500
A: 看后端日志。
- 控制台搜
ERROR或Exception - 找
Caused by看根因 - 找
com.公司名开头的堆栈行,定位到你的代码 - 在报错行打断点调试
Q15:前端请求带不上Token
A: 检查请求拦截器。
// 确保有请求拦截器自动加Token
instance.interceptors.request.use(config => {
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
三、IDEA类问题
Q16:Lombok注解不生效(@Data标红找不到方法)
A: 三步解决。
- 安装Lombok插件:File → Settings → Plugins → 搜Lombok
- 开启注解处理器:Settings → Build → Compiler → Annotation Processors → ✅ Enable annotation processing
- 重启IDEA
Q17:IDEA代码一片红,找不到类
A: 按顺序试。
- 刷新Maven面板
mvn clean install -U- 多模块项目:
mvn clean install -pl 模块名 -am - File → Invalidate Caches → Invalidate and Restart
Q18:IDEA特别卡
A: 优化性能。
- 增大内存:修改
idea64.exe.vmoptions的-Xmx2048m - 排除大目录:node_modules、target等设为Excluded
- 禁用不用的插件
- 关掉不需要的背景检查
Q19:IDEA快捷键和系统冲突
A: 改快捷键。
File → Settings → Keymap → 搜索冲突的操作 → 右键 → Add Keyboard Shortcut → 按新快捷键
Q20:IDEA保存后不自动编译
A: 开启自动编译。
- File → Settings → Build → Compiler → ✅ Build project automatically
- Ctrl+Shift+Alt+/ → Registry → ✅ compiler.automake.allow.when.app.running
- 新版IDEA:File → Settings → Advanced Settings → ✅ Allow auto-make to start even if developed application is currently running
四、Git类问题
Q21:git pull时报冲突
A: 手动解决冲突。
- 打开冲突文件,找
<<<<<<<、=======、>>>>>>>标记 - 选择保留哪段代码,删掉冲突标记
git add .→git commit -m "merge: 解决冲突"→git push
Q22:提交了不该提交的文件(如target/、密码配置)
A: 从Git跟踪中移除。
# 从Git移除但不删本地文件
git rm --cached target/
git rm --cached .idea/
# 提交
git commit -m "chore: 移除不需要跟踪的文件"
# 确认.gitignore里有对应规则
Q23:git commit信息写错了想改
A: 还没push的话用amend。
# 修改最近一次提交信息
git commit --amend -m "新的提交信息"
# 如果已经push了,需要force push(只在个人分支用)
git push --force-with-lease origin 你的分支
Q24:代码回退到某个版本
A: 用reset。
# 查看提交历史
git log --oneline
# 回退到某个版本(保留修改)
git reset --soft commit_id
# 回退到某个版本(丢弃修改)
git reset --hard commit_id
# 已经push了的回退,用revert(生成一个反向提交)
git revert commit_id
警告:git reset --hard会丢弃所有修改,用之前三思!
五、数据库类问题
Q25:中文存到数据库变成乱码
A: 字符集问题。
- 确认数据库字符集:
SHOW CREATE DATABASE mydb; - 确认表字符集:
SHOW CREATE TABLE user; - 不是utf8mb4就改:
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 配置文件也改:
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
Q26:MySQL连接报 Public Key Retrieval is not allowed
A: URL加参数。
jdbc:mysql://localhost:3306/mydb?allowPublicKeyRetrieval=true&useSSL=false
Q27:MySQL连接报时区错误
A: URL加时区参数。
jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai
Q28:MyBatis查询结果字段为null
A: 字段映射问题。
- 确认开启了驼峰转换:
mybatis.configuration.map-underscore-to-camel-case: true - 检查Entity字段名和数据库列名能否对应上
- 手动指定:
@TableField("column_name")
六、代码类问题
Q29:NullPointerException 怎么排查
A: 找到哪个对象是null。
- 看堆栈信息,定位到报错行号
- 在报错行打断点
- 逐个检查变量是否为null
- 加null判断或用Optional
Q30:接口参数接收不到
A: 检查参数传递方式。
GET请求:
- 前端用
params传 → 后端用@RequestParam接收
POST请求JSON:
- 前端Content-Type设为
application/json - 后端用
@RequestBody接收
路径参数:
- URL里
/user/123→ 后端用@PathVariable接收
@GetMapping("/user/{id}")
public Result get(@PathVariable Long id) { ... }
Q31:日期格式前后端不一致
A: 统一格式。
后端加注解:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
全局配置:
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Shanghai
Q32:BigDecimal精度丢失
A: 用BigDecimal的字符串构造方法。
// 错误:会有精度问题
BigDecimal bd = new BigDecimal(0.1);
// 正确:用字符串
BigDecimal bd = new BigDecimal("0.1");
// 运算时指定精度
BigDecimal result = bd1.add(bd2).setScale(2, RoundingMode.HALF_UP);
Q33:循环依赖报错
A: 三种解决方式。
- 用
@Lazy注解:
@Lazy
@Autowired
private ServiceB serviceB;
- 重构代码消除循环依赖
- 开启允许循环依赖(不推荐):
spring:
main:
allow-circular-references: true
七、前端类问题
Q34:Vue页面白屏
A: F12看Console报错。
常见原因:
- JS语法错误
- 路由配置错误
- 组件找不到
- API请求失败导致渲染异常
Q35:Vue路由跳转后页面不更新
A: 检查路由配置。
// 可能是路由的key没变化
// 同一组件不同参数跳转,加key
<router-view :key="$route.fullPath" />
Q36:前端热更新不生效
A: 检查配置。
- 确认vite/vue-cli开发服务器在运行
- 检查浏览器是否缓存(Ctrl+Shift+R强制刷新)
- 检查文件是否被正确导入
八、部署类问题
Q37:jar包怎么在服务器上运行
A: 打包+运行。
# 打包
mvn clean package -DskipTests
# 运行
java -jar target/my-project-1.0.0.jar
# 后台运行
nohup java -jar my-project-1.0.0.jar > app.log 2>&1 &
# 指定环境
java -jar my-project-1.0.0.jar --spring.profiles.active=prod
Q38:jar包里没有第三方依赖
A: 用SpringBoot打包插件。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
打包后会生成xxx.jar(含依赖)和xxx.jar.original(不含依赖)。
Q39:Linux服务器端口怎么开放
A: 防火墙放行。
# CentOS 7
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
# Ubuntu
ufw allow 8080/tcp
云服务器还需要在控制台安全组里放行。
Q40:怎么看项目运行日志
A: 几种方式。
# 实时查看日志
tail -f app.log
# 查看最近100行
tail -n 100 app.log
# 搜索错误
grep "ERROR" app.log
# 查看Java进程
jps -l
# 查看进程详情
ps aux | grep java
九、快速问题索引
| 问题类型 | 对应章节 |
|---|---|
| JDK/Maven环境 | 第1章第1-2节 |
| IDEA设置 | 第1章第3节 |
| MySQL安装/连接 | 第1章第4节 |
| Redis安装/连接 | 第1章第5节 |
| Git配置 | 第1章第6节 |
| 项目克隆/导入 | 第2章第1-2节 |
| 配置文件修改 | 第2章第3节 |
| 数据库初始化 | 第2章第4节 |
| 项目启动 | 第2章第5节 |
| 前端启动 | 第2章第6节 |
| 前后端联调 | 第2章第7节 |
| Maven依赖问题 | 第3章第1节 |
| 端口占用 | 第3章第2节 |
| 数据库连接失败 | 第3章第3节 |
| IDEA找不到类 | 第3章第4节 |
| 404/500排查 | 第3章第5节 |
| 跨域问题 | 第3章第6节 |
| Redis连接失败 | 第3章第7节 |
| 各种异常 | 第3章第8节 |
| Git提交规范 | 第4章第1节 |
| IDEA快捷键 | 第4章第4节 |
十、终极建议
遇到问题怎么办
1. 先看报错信息 → 报错信息通常已经说明了问题
2. 复制报错信息百度 → 90%的问题有人遇到过
3. 翻这套教程 → 对应章节有解决方案
4. 问同事 → 15-30分钟搞不定就问
5. 记录下来 → 解决后记笔记,下次不问
养成好习惯
- 每天提交代码 — 不要攒一堆改动
- 每天拉取代码 — 保持和主干同步
- 报错先看日志 — 日志里通常有答案
- 先搜再问 — 尊重别人的时间
- 记笔记 — 好记性不如烂笔头
- 自测 — 提交前确保代码能编译能运行
- 下班前整理 — 知道明天要干什么
这套教程怎么用
- 入职前: 通读一遍,了解全流程
- 入职第一天: 照着第1章装环境
- 入职第二天: 照着第2章跑项目
- 遇到报错: 翻第3章对应小节
- 日常开发: 翻第4章查规范和快捷键
- 遇到新问题: 翻第5章这个汇总
祝你在新公司一切顺利,快速成长为团队骨干!