北大软件(郑州)JAVA实习面经
《面试题目》
一、项目与个人能力
- 自我介绍
- 介绍项目背景与选型理由
- 项目功能实现流程及性能优化方案
- 技术栈选择逻辑及新技术学习路径
- 处理前后端联调、参数校验与异常处理的机制
- 在项目中如何决定功能在前端还是后端实现
- 分享通过自学掌握技术的案例
- 关于使用AI工具辅助开发的看法与思考
二、技术排查与解决 9. 生产环境出现接口404,但本地/测试正常,如何定位? 10. 排查“文件删除失败”及“接口响应慢”的具体思路 11. 项目中遇到爬虫反爬等技术难题时的解决思路
三、数据库与SQL
12. 考察复杂查询、列转行、递归查询的应用
13. DELETE与DROP的本质区别
14. 项目中最复杂的SQL及动态SQL实现(SQL拼接)
15. MyBatis <where> 标签优化动态SQL的原理
四、计算机基础与网络 16. TCP与UDP的核心区别 17. HTTPS握手过程 18. 常见HTTP状态码含义 19. 常用Linux命令 20. 对HTML、DOM、JavaScript的掌握程度 21. 权限控制的实现及其前后端协作方式
《参考解析》
- 接口404排查:检查Nginx转发配置、网关路由是否同步、生产环境路径映射、是否漏传配置文件或环境差异导致的上下文缺失。
- 接口响应慢排查:通过Arthas/JVisualVM分析CPU/内存占用,查看慢SQL日志,检查是否存在死锁、不必要的远程调用或未命中索引,利用链路追踪(如SkyWalking)定位耗时环节。
- DELETE vs DROP:DELETE属于DML,逐行删除且可回滚,触发触发器;DROP属于DDL,直接删除表结构及数据,不可回滚且执行速度极快。
- HTTPS握手:客户端发送支持的加密套件与随机数;服务端返回证书与公钥;客户端验证证书,生成对称加密秘钥(Pre-master)通过公钥加密传给服务端;双方利用对称密钥进行后续通信。
- 权限控制:建议采用RBAC模型(用户-角色-权限)。后端在Controller层通过拦截器/AOP校验Token及用户权限,前端利用路由守卫(Router Guard)根据后端下发的权限码动态渲染菜单或按钮。