25年9月东华软件 Java开发实习生线上一面
#JAVA##JAVA面经##JAVA内推#
前端这块你平时有接触吗?了解多少?
“有系统接触:掌握HTML5/CSS3/ES6基础,能独立开发响应式页面;深入使用Vue2(含Vue Router、Vuex),了解React核心思想(组件化、Hooks)。日常通过MDN、Vue官方文档学习,关注前端工程化(Webpack/Vite)。虽主攻后端,但坚持‘懂前端才能设计好API’——例如理解Axios拦截器原理后,后端统一返回
{code, data, msg}格式,大幅减少联调摩擦。近期正用Vue3+TypeScript重构个人博客,深化全栈协作认知。”
你项目里的前端页面是自己写的吗?用的什么技术?
“是的,校园二手平台前端由我独立开发:
- 技术栈:Vue 2.6 + Element UI + Axios + Vue Router
- 关键实现:
• 封装request.js:统一添加Token、处理401跳转登录
• 路由守卫:根据用户角色动态生成侧边栏菜单(管理员可见‘审核中心’)
• 性能优化:商品图片懒加载、搜索防抖(300ms)- 协作细节:用Swagger定义接口规范,联调前用Postman验证字段,避免‘前端等后端’。虽非专业前端,但这段经历让我深刻理解:后端开发者懂前端,是高效协作的隐形加速器。”
Linux用过吗?开发或部署时常用的命令能随手说几个吗?
“日常使用WSL2开发,项目部署在CentOS云服务器,高频命令分四类:
🔹 日志排查:tail -f app.log | grep "ERROR"(实时追踪错误)、less +F app.log(大文件查看)
🔹 进程管理:ps -ef | grep java(查进程)、kill -9 PID(强制终止)、top(监控CPU/内存)
🔹 文件操作:scp local.jar user@server:/opt(上传文件)、find / -name "*.log" -mtime -1(查24小时内日志)
🔹 网络诊断:netstat -tunlp | grep 8080(查端口占用)、curl http://localhost:8080/health(服务自检)
实战案例:曾通过journalctl -u app.service --since "5 minutes ago"快速定位服务启动失败原因(配置文件路径错误)。”
聊聊你项目里的权限控制流程
“采用 JWT + 拦截器 + 前端路由守卫 三层控制:
1️⃣ 登录认证:用户提交账号密码 → 后端校验 → 生成JWT(含userId、role、exp) → 返回前端存localStorage
2️⃣ 请求校验:
- 前端:Axios拦截器自动在Header加
Authorization: Bearer {token}- 后端:自定义拦截器解析JWT → 验签/过期检查 → 将用户信息存ThreadLocal(避免重复解析)
3️⃣ 权限判定:- 接口层:
@PreAuthorize("hasRole('ADMIN')")注解控制(基于Spring Security)- 前端:路由守卫根据
user.role动态渲染菜单(如普通用户不显示‘商品审核’入口)
安全加固:Token设置短有效期(2h)+ Redis存黑名单(应对强制下线),敏感操作加短信二次验证。”
面向对象三大特性,结合代码经历谈理解
“封装:不是‘藏起来’,而是‘定义清晰边界’。
→ 例:Order实体中,setStatus()方法校验状态流转合法性(如‘已发货’不能回退‘待支付’),外部无法直接改status字段,避免业务逻辑散落。
继承:为复用而生,但慎用‘为继承而设计’。
→ 例:BaseResponse封装code/msg/data,所有Controller返回继承它;但业务类避免深层继承,改用组合(如订单含User对象而非继承User)。
多态:让系统拥有‘生长能力’。
→ 例:支付模块中,PaymentContext持PaymentStrategy接口,运行时注入AlipayStrategy/WechatStrategy。新增银联支付?只需实现接口,零修改核心逻辑。
核心感悟:OOP本质是用代码表达业务语言,让修改成本最低、扩展成本趋近于零。”
分页查询一般怎么实现?后端
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏
查看25道真题和解析