💜 想真正擅长编程? 从一门课程开始,100% 免费

5-2、新人高频问题汇总

把新人入职最常问的问题集中在一起,直接给答案。遇到问题先翻这节,能省你很多时间。


一、环境类问题

Q1:JDK装了但命令找不到('java'不是内部或外部命令)

A: 环境变量没配好。

  1. 确认JAVA_HOME路径正确(去文件夹地址栏复制)
  2. 确认Path里有%JAVA_HOME%\bin
  3. 配完重开一个cmd窗口,旧窗口不生效

Q2:Maven下载依赖特别慢

A: 没配镜像或镜像没生效。

  1. 检查settings.xml里有没有阿里云镜像配置
  2. 检查IDEA用的Maven是不是你配好镜像的那个
  3. 确认settings.xml路径在IDEA里配置正确
XML
<mirror>
    <id>aliyun-public</id>
    <url>https://maven.aliyun.com/repository/public</url>
    <mirrorOf>*</mirrorOf>
</mirror>

Q3:IDEA打开项目后一直卡在Indexing

A: 项目太大或有超大文件。

  1. 排除不需要索引的目录(右键 → Mark Directory as → Excluded):node_modules、target、dist
  2. 增大IDEA内存(修改idea64.exe.vmoptions的-Xmx)
  3. 如果是前后端混合项目,分开打开

Q4:MySQL忘记密码了

A: 跳过权限验证重置。

  1. 停止MySQL服务:net stop MySQL80
  2. 跳过权限启动:mysqld --console --skip-grant-tables --shared-memory
  3. 新窗口直接登录:mysql -u root(不用密码)
  4. 改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  5. 关闭跳过权限窗口,重启MySQL

Q5:Redis能连上但项目报 NOAUTH

A: Redis设了密码但项目没配。

在配置文件里加上Redis密码:

YAML
spring:
  redis:
    password: 你的Redis密码

如果Redis没设密码但项目配了password,反过来删掉password配置。


Q6:Git clone速度很慢

A: 用浅克隆或配代理。

Shell
# 浅克隆,只拉最近一次提交
git clone --depth 1 git@xxx

# 或配置代理
git config --global http.proxy http://127.0.0.1:7890

Q7:每次git push都要输密码

A: 用了HTTPS地址而不是SSH。

Shell
# 改成SSH地址
git remote set-url origin git@github.com:user/repo.git

# 或保存HTTPS凭证
git config --global credential.helper store

二、项目运行类问题

Q8:SpringBoot启动报端口被占用

A: 杀进程或换端口。

Shell
# 查端口占用
netstat -ano | findstr 8080

# 杀进程
taskkill /PID 进程ID /F

或改端口:server.port: 8081


Q9:数据库连接报 Communications link failure

A: 4个排查点。

  1. MySQL服务是否启动:net start | findstr MySQL
  2. URL地址/端口/数据库名是否正确
  3. 用户名密码是否正确
  4. MySQL 8.x加allowPublicKeyRetrieval=true&useSSL=false

Q10:启动报 BeanCreationException

A: 看Caused by找根因。

常见原因:

  • 依赖注入失败(找不到Bean)→ 检查@Service/@Component注解
  • 配置缺失 → 检查@Value对应的配置项
  • 数据库/Redis连不上 → 先解决连接问题

Q11:Vue项目 npm install 报错

A: 按以下顺序试。

  1. 确认npm镜像:npm config get registry(应该是淘宝镜像)
  2. 删掉node_modules和package-lock.json重新安装
  3. Node版本不兼容 → 用nvm切换版本
  4. node-sass装不上 → 换成sass:npm uninstall node-sass && npm install sass

Q12:前后端联调报跨域错误

A: 前端配Proxy或后端配CORS。

前端Proxy(推荐):

JavaScript
// vite.config.js
server: {
  proxy: {
    '/api': {
      target: 'http://localhost:8080',
      changeOrigin: true
    }
  }
}

前端请求用相对路径:/api/user/list

后端CORS:

Java
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOriginPatterns("*")
            .allowedMethods("*")
            .allowCredentials(true);
    }
}

Q13:接口返回404

A: 检查路径匹配。

  1. 对比前端请求URL和后端@RequestMapping路径
  2. 检查context-path是否加了
  3. 检查请求方法(GET/POST)是否匹配
  4. 检查Controller是否被扫描到

Q14:接口返回500

A: 看后端日志。

  1. 控制台搜ERROR或Exception
  2. 找Caused by看根因
  3. 找com.公司名开头的堆栈行,定位到你的代码
  4. 在报错行打断点调试

Q15:前端请求带不上Token

A: 检查请求拦截器。

JavaScript
// 确保有请求拦截器自动加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: 三步解决。

  1. 安装Lombok插件:File → Settings → Plugins → 搜Lombok
  2. 开启注解处理器:Settings → Build → Compiler → Annotation Processors → ✅ Enable annotation processing
  3. 重启IDEA

Q17:IDEA代码一片红,找不到类

A: 按顺序试。

  1. 刷新Maven面板
  2. mvn clean install -U
  3. 多模块项目:mvn clean install -pl 模块名 -am
  4. File → Invalidate Caches → Invalidate and Restart

Q18:IDEA特别卡

A: 优化性能。

  1. 增大内存:修改idea64.exe.vmoptions的-Xmx2048m
  2. 排除大目录:node_modules、target等设为Excluded
  3. 禁用不用的插件
  4. 关掉不需要的背景检查

Q19:IDEA快捷键和系统冲突

A: 改快捷键。

File → Settings → Keymap → 搜索冲突的操作 → 右键 → Add Keyboard Shortcut → 按新快捷键


Q20:IDEA保存后不自动编译

A: 开启自动编译。

  1. File → Settings → Build → Compiler → ✅ Build project automatically
  2. Ctrl+Shift+Alt+/ → Registry → ✅ compiler.automake.allow.when.app.running
  3. 新版IDEA:File → Settings → Advanced Settings → ✅ Allow auto-make to start even if developed application is currently running

四、Git类问题

Q21:git pull时报冲突

A: 手动解决冲突。

  1. 打开冲突文件,找<<<<<<<、=======、>>>>>>>标记
  2. 选择保留哪段代码,删掉冲突标记
  3. git add . → git commit -m "merge: 解决冲突" → git push

Q22:提交了不该提交的文件(如target/、密码配置)

A: 从Git跟踪中移除。

Shell
# 从Git移除但不删本地文件
git rm --cached target/
git rm --cached .idea/

# 提交
git commit -m "chore: 移除不需要跟踪的文件"

# 确认.gitignore里有对应规则

Q23:git commit信息写错了想改

A: 还没push的话用amend。

Shell
# 修改最近一次提交信息
git commit --amend -m "新的提交信息"

# 如果已经push了,需要force push(只在个人分支用)
git push --force-with-lease origin 你的分支

Q24:代码回退到某个版本

A: 用reset。

Shell
# 查看提交历史
git log --oneline

# 回退到某个版本(保留修改)
git reset --soft commit_id

# 回退到某个版本(丢弃修改)
git reset --hard commit_id

# 已经push了的回退,用revert(生成一个反向提交)
git revert commit_id

警告:git reset --hard会丢弃所有修改,用之前三思!


五、数据库类问题

Q25:中文存到数据库变成乱码

A: 字符集问题。

  1. 确认数据库字符集:SHOW CREATE DATABASE mydb;
  2. 确认表字符集:SHOW CREATE TABLE user;
  3. 不是utf8mb4就改:
SQL
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 配置文件也改:
ini
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4

Q26:MySQL连接报 Public Key Retrieval is not allowed

A: URL加参数。

TEXT
jdbc:mysql://localhost:3306/mydb?allowPublicKeyRetrieval=true&useSSL=false

Q27:MySQL连接报时区错误

A: URL加时区参数。

TEXT
jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai

Q28:MyBatis查询结果字段为null

A: 字段映射问题。

  1. 确认开启了驼峰转换:mybatis.configuration.map-underscore-to-camel-case: true
  2. 检查Entity字段名和数据库列名能否对应上
  3. 手动指定:@TableField("column_name")

六、代码类问题

Q29:NullPointerException 怎么排查

A: 找到哪个对象是null。

  1. 看堆栈信息,定位到报错行号
  2. 在报错行打断点
  3. 逐个检查变量是否为null
  4. 加null判断或用Optional

Q30:接口参数接收不到

A: 检查参数传递方式。

GET请求:

  • 前端用params传 → 后端用@RequestParam接收

POST请求JSON:

  • 前端Content-Type设为application/json
  • 后端用@RequestBody接收

路径参数:

  • URL里/user/123 → 后端用@PathVariable接收
Java
@GetMapping("/user/{id}")
public Result get(@PathVariable Long id) { ... }

Q31:日期格式前后端不一致

A: 统一格式。

后端加注解:

Java
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;

全局配置:

YAML
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: Asia/Shanghai

Q32:BigDecimal精度丢失

A: 用BigDecimal的字符串构造方法。

Java
// 错误:会有精度问题
BigDecimal bd = new BigDecimal(0.1);

// 正确:用字符串
BigDecimal bd = new BigDecimal("0.1");

// 运算时指定精度
BigDecimal result = bd1.add(bd2).setScale(2, RoundingMode.HALF_UP);

Q33:循环依赖报错

A: 三种解决方式。

  1. 用@Lazy注解:
Java
@Lazy
@Autowired
private ServiceB serviceB;
  1. 重构代码消除循环依赖
  2. 开启允许循环依赖(不推荐):
YAML
spring:
  main:
    allow-circular-references: true

七、前端类问题

Q34:Vue页面白屏

A: F12看Console报错。

常见原因:

  • JS语法错误
  • 路由配置错误
  • 组件找不到
  • API请求失败导致渲染异常

Q35:Vue路由跳转后页面不更新

A: 检查路由配置。

JavaScript
// 可能是路由的key没变化
// 同一组件不同参数跳转,加key
<router-view :key="$route.fullPath" />

Q36:前端热更新不生效

A: 检查配置。

  1. 确认vite/vue-cli开发服务器在运行
  2. 检查浏览器是否缓存(Ctrl+Shift+R强制刷新)
  3. 检查文件是否被正确导入

八、部署类问题

Q37:jar包怎么在服务器上运行

A: 打包+运行。

Shell
# 打包
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打包插件。

XML
<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: 防火墙放行。

Shell
# CentOS 7
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

# Ubuntu
ufw allow 8080/tcp

云服务器还需要在控制台安全组里放行。


Q40:怎么看项目运行日志

A: 几种方式。

Shell
# 实时查看日志
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节

十、终极建议

遇到问题怎么办

TEXT
1. 先看报错信息 → 报错信息通常已经说明了问题
2. 复制报错信息百度 → 90%的问题有人遇到过
3. 翻这套教程 → 对应章节有解决方案
4. 问同事 → 15-30分钟搞不定就问
5. 记录下来 → 解决后记笔记,下次不问

养成好习惯

  1. 每天提交代码 — 不要攒一堆改动
  2. 每天拉取代码 — 保持和主干同步
  3. 报错先看日志 — 日志里通常有答案
  4. 先搜再问 — 尊重别人的时间
  5. 记笔记 — 好记性不如烂笔头
  6. 自测 — 提交前确保代码能编译能运行
  7. 下班前整理 — 知道明天要干什么

这套教程怎么用

  • 入职前: 通读一遍,了解全流程
  • 入职第一天: 照着第1章装环境
  • 入职第二天: 照着第2章跑项目
  • 遇到报错: 翻第3章对应小节
  • 日常开发: 翻第4章查规范和快捷键
  • 遇到新问题: 翻第5章这个汇总

祝你在新公司一切顺利,快速成长为团队骨干!