去年有个学员问我,什程Java学到什么程度能找工作。找工作我反问他,什程你打开招聘软件,找工作搜“Java开发工程师”,什程看十家公司的找工作职位要求,有没有哪家写着“精通JVM调优”或“读过Spring源码”?什程他说没有,基本都写着“熟悉SSM框架,找工作了解Redis,什程有项目经验”。找工作我说那答案已经出来了——你不需要成为专家,什程但得让面试官觉得你能干活。找工作
具体点说吧。什程Java基础语法、找工作面向对象、什程集合框架、异常处理、IO流,这些是底线中的底线,别想着跳过去。但光会这些,连外包都进不去。你至少要能把一个Web请求从浏览器到数据库再返回来的完整链路讲清楚——Servlet怎么处理请求,SpringMVC怎么分发,MyBatis怎么映射SQL。这中间任何一个环节卡住,面试官问两句就露馅了。
框架方面,Spring Boot现在是标配,SSH那套早过时了。但别只会用注解,得知道Bean的生命周期,知道自动装配原理大概是怎么回事。我见过不少简历写着“熟练使用Spring Boot”,结果问他“@Autowired和@Resource有什么区别”就愣住。这种基础问题答不上来,基本就凉了。另外数据库这块,MySQL必会,索引优化、事务隔离级别、乐观锁悲观锁,这些高频考点得能说上几句。Redis至少得会五种基本数据类型和缓存穿透的解决办法。
项目经验才是真正卡人的地方。很多人纠结“我没有真实项目怎么办”,其实可以自己搭一个。比如做个简单的电商后台,用Spring Boot + MyBatis + Redis实现商品管理、订单流程。关键不在功能多花哨,而在于你能把技术点讲明白——为什么用Redis存购物车而不是直接查数据库?订单超时怎么处理?这些思考过程比项目本身值钱得多。我在培训班见过一个外卖员,白天跑单晚上敲代码,做了个仿美团点餐系统,就靠这个项目拿了12k的offer。
再聊聊面试的实际情况。初级岗位笔试一般考基础语法和SQL,面试问框架使用和项目细节。你如果能把“一个请求从输入URL到页面渲染”这个过程完整描述出来,再配合自己写的代码细节,基本能过七八成。至于JVM内存模型、并发编程这些,能答出个大概就行,别完全不会——比如知道堆和栈的区别,知道synchronized和Lock的区别,就够应付大部分初面了。
说到底,Java找工作的门槛不在深度,在广度。你不需要成为某个领域的专家,但得是“什么都能上手干”的通用型选手。我见过学了半年就去上班的,也见过读了两年源码还找不到工作的——后者太钻牛角尖,面试官问Spring事务传播行为,他跟你聊了二十分钟底层字节码。企业招人是要解决业务问题,不是找研究员。
所以给自己定个标准:能独立完成一个带用户登录、增删改查、权限控制的小系统,能说清每个技术点为什么这么用,再把面试题刷个两百道,基本就能去投简历了。别等“学完”再找,Java这行永远学不完,边投边查缺补漏才是常态。