在之前的一篇博文分析若干没面试机会和没体现实力的简历里, 我讲了些有实力有项目经验但简历没写好的情况. 不过对于有些同学, 当前情况确实不容乐观, 比如做了若干年后想转行, 或者非计算机相关专业想要做 IT 工作, 或者有 "频繁跳槽" 等情况, 总之简历拿不出手. 这个时候, 也不用慌.
我本身做过兼职 IT 培训, 也在外企和互联网公司做过技术面试官, 见到过不少候选人, 如果简历上去掉最近一两年的经历, 绝对连面试的机会也没, 但他们最后确实成功入职. 对于这些人, 我非常敬佩, 我平时也得学习他们积极上进的精神. 在本文里, 就将专门介绍这些同学成功的诀窍.
1 面试有技巧, 但能力和当前经历是关键
我之前写了不少讲面试技巧的博客, 也出了两本面试相关的书, Java web 轻量级开发面试教程 https://item.jd.com/12136095.html 和 Java 核心技术及面试指南 https://item.jd.com/12421187.html , 其中一方面是讲述如何归纳总结提升能力, 另一方面讲述面试技巧, 讲过如何挖掘提炼简历, 但从没讲过如何弄虚作假修改简历(以后也不会讲). 面试技巧对大家有什么帮助呢?
1 能力本身就已经到位, 通过面试技巧能更好地表述自己.
2 能力可上可下, 通过面试技巧能扬长避短.
3 能力稍有欠缺, 通过面试能知道自己需要补充哪方面知识点.
但如果能力或当前经历不行, 面试技巧的帮助意义就不大. 比如是个 Java 后台开发岗, 小 A 最近 1 年都没做 Java, 那么再怎么说也无法改变这个事实, 又如小 B 最近 2 年干的是测试, 实施或其它和开发无关的工作, 那么简历再怎么写, 也无法改变 "最近没有 Java 项目开发经验" 的事实. 在这个时间点, 刷题和练面试说辞可能就意义不大了, 因为简历发出去后, 比较好的公司未必会给面试机会, 这个时间段, 更多地就该找个能提供实践机会的公司.
2 转行和积累经验, 从小公司外派公司做起
大的或好的 IT 公司, 可能会简历的要求会比较高, 比如要有若干年的相关项目经验, 或者最近用到的技术栈需要和职位需求相匹配, 但不是所有的公司就这样.
比如外派, 就被一个外包公司外派到 xx 银行, xx 公司或 xx 现场, 也就是去做乙方. 这类职位, 往往只要甲方公司面试成即可, 而甲方公司给出的工资可能会低于本公司同类岗位, 所以要求未必高, 只要能干活就行, 所以面试时要求会适当降低.
又如楼层公司和创业公司, 可能无法提供稳定性, 工资也可能低于平均行情, 但这类公司往往很难找到合适的开发岗, 所以面试要求也不高, 也能干活就行.
相比之下, 找这类能提供实践机会的公司, 先考虑在本公司外派(即外包公司接到活在本公司干), 再考虑外派到甲方场地. 毕竟这两类公司规模都不小, 而且外派到甲方甚至还有可能转成甲方正式员工. 如果再不行, 考虑楼层公司和创业公司, 说实在话, 这些公司过了几年未必还在, 但提供实践机会绰绰有余.
3 如何证明自己 "能干活"
上面提到的标准是 "能干活", 相比大公司 "技术熟练" 的标准, 这已经是很低了, 下面我们来对比下.
| 能干活 | 技术熟练 |
项目经验 | 能通过若干个学习项目了解框架技术(比如 Spring Boot)的流程,有商业项目最好,不论商业项目年限 | 一定要有商业项目经验,且有年限要求,且商业项目里用到的技术点需要和职位要求很匹配 |
技能点 | 会用常用的 API 方法干活 | 更得了解底层 |
数据库 | 会增删改查,最多外带索引等非常基本的优化技能 | 了解比较多的性能优化技能,对数据库集群等高级知识点要有一定了解 |
分布式架构 | 会基本的操作,比如用 nginx 做负载均衡的配置方式,且未必要有商业项目经验 | 得在商业项目里用过,且得了解一定的底层细节 |
综合评价 | 能在项目经理带领下干活,有问题提出来,别拖进度即可 | 熟悉项目开发各流程,有问题尽量先自己解决,在项目里可以独当一面 |
从上表来看,"能干活" 的标准真不高, 那么如何体现出这点呢?
1 尽量多带相关技能的商业项目经验, 如果没有, 用学习项目凑也行.
2 在平时学习中多掌握些常规的用法, 比如 Java 多线程, Java 集合, 以及框架知识点, 在简历中项目描述里, 多列些相关技能点, 面试时能说的上来.
3 数据库方面, 至少用过 1 种主流数据库, 复杂 SQL 语句没问题, 最好能掌握一些缓存数据库和 NoSQL 技能(未必要有商业项目经验).
4 让人在读完简历后, 感觉到你之前确实做过相关项目, 至于这个项目是毕业设计项目还是培训班项目还是商业项目, 那当然最好是商业项目了. 正因为你有过类似项目经验, 那么这些外派公司 (或小公司等) 能感觉你至少进来以后就能干活.
4 了解简历痛点, 用时间去冲淡
简历上如果出现关键性的问题, 一些大公司可能未必给面试机会.
1 比如最近处于失业状态, 且时间超过 2 个月, 这证明工作意愿不强或者能力不行.
2 最近换工作太频繁, 这说明稳定性不强.
3 相关年限不足, 或者最近半年没用到相关技能.
不过上述痛点可以用时间来冲淡, 比如你最近 2 年比较稳定, 而且干的都是相关技能的活, 那么比如 2 年前有不稳定情况, 或者有一定时间的不在职状态, 只要你最近的项目里用到的技能非常匹配, 你至少有面试机会. 只要你面试表现出色(这个阶段就有基础准备了), 那么之前的不稳定性就无关紧要了.
这里, 前提是 "正视现实", 正视后不能再得过且过, 而是得认真踏实, 其实这样过个两年, 简历就能非常好看, 而且也有挖掘的潜力了.
5 培训班是用钱买时间买经验, 但是否上, 得看自己情况
说到这里, 不可回避的话题是培训班, 是否要上?
第一, 培训班是花钱买时间, 你出了这些钱, 培训班能帮忙省去不少试错的时间. 不过如果当前你有机会通过各种手段进公司实践, 那么自然以进公司为主. 况且, 目前有不少视频教程, 这个费用相比培训班而言, 要少很多, 如果你有足够的自制力和执行力, 通过自己看视频学也是一种方法.
第二, 培训班不是万能的, 在进培训班前, 最好先尝试下通过修改简历海投简历找到一份实践的机会. 还是这句话, 关键要看自己努力程度, 如果你平时得过且过, 那么谁也没法帮助到你, 包括培训班.
第三, 哪怕真的要进培训班, 哪怕培训班号称包就业, 你在培训班里也得刻苦卖力, 不能指望出了钱就万事大吉.
有句话叫: 最了解你的人不是你的朋友, 而是你的敌人, 我在技术面试的时候, 见过有些培训班会千方百计地包装毕业生, 合理包装本没问题, 但如果招个过度夸张但实际能力不行的, 技术面试官就会被说, 所以说技术面试官和培训学校相互敌对并无不妥. 我面试多了, 甚至能从简历上看出这位候选人来自哪个培训学校, 甚至也能通过候选人在面试的表现风格, 推断出是哪个培训学校哪位面试辅导老师帮忙辅导的面试.
话虽这样说, 但如果候选人本身项目经历可以, 而且技术可以, 我并不会因为候选人来自培训学校而有歧视, 如果招的是外包 (Vendor) 岗, 面试要求更低. 如果你真的进培训班, 那么如下的这些建议对你会有用.
1 准备简历时, 别用给定的模板项目描述, 因为同期毕业生, 如果用同一个项目模板, 项目经历会很雷同. 也就是说, 你最好用你自己的话把项目经历说一遍再写下来.
2 别太多注重智力题算法题, 这些都是辅助的. 多准备些项目描述, 尤其是结合项目描述说清楚职位要求的技术.
3 别仅仅停留在 "会用技术" , 再准备些亮点, 哪些算亮点呢?(SQL 虚拟机等)调优,(Spring Cloud 等)框架组件, 底层代码, 项目管理发布流程 (比如 maven,jenkins) 或在 Linux 项目里看日志的技巧.
4 项目千万别高大全, 比如为期 3 个月的培训班, 你做出了一个物流项目, 这谁都不信, 三个月的时间, 最多在一个维护项目上修修补补也够了.
5 有些培训学校的老师, 可能自认为能把控面试过程, 所以手下的学生在面试过程中会揣摩面试官问题的用意, 然后自动地回答推断中的下一个问题, 总之在面试中会过于强势, 用个不恰当的成语来形容: 张牙舞爪, 比较恰当的成语是: 色厉内荏. 面试过程中始终得谦虚, 哪怕听出面试官问题的用意, 说些面试官爱听的话即可, 或者通过三言两语点出相关问题, 等面试官来问.
写到这里, 发现上述建议不仅是对培训班有用, 而且再次啰嗦一下, 当前技术不行更得抓紧, 拿出高考一半的劲头看代码看视频看技术就行了.
在这段的最后, 我列些会让培训项目和学习项目穿帮的问题, 问题答案大家自己想.
1 问项目细节. 这个项目规模多大, 盈利多少? 客户是谁? 最后有没有上线? 有多少开发多少测试? 最后客户是怎么验收的?
2 问部署细节, 这个项目部署在什么系统上? 用什么工具打包部署? 数据库服务器如何设置? 数据库服务器如何做到热备冗余?
3 问项目的管理和开发方式. 这个项目的开发方式是什么? 假设回答是敏捷开发, 那么再问其中有哪些实施要点.
4 问真实项目必不可少的要素, 比如一个项目上线后, 总会通过网关接入, 大多有热备冗余和负载均衡, 如果是 Java 项目, 可能会运行在 tomcat 或 spring boot 等环境中. 我就问, 项目的网关是用什么? 如何实现热备冗余和负载均衡? 如何部署到 Web 服务器上, 部署后配置文件如何管理? 部署后如何看线上日志? 如果出现问题, 如何把新代码发布到线上?
6 大公司好公司的技术要求? 这些就是努力方向
写到这里, 我们的一个核心观点是, 如果当前项目经历和技能不行, 通过各种方式狂补, 再通过海投简历等方式, 的确能找到实践机会, 但这仅仅是个过渡.
刚才也提到了, 这个时间段能应聘到的岗位, 大多可能是外派或者是规模比较小的公司, 但人总要往高处走, 在第 3 部分的表格里, 大家已经能看到大公司好公司的要求, 这里再从面试说下大公司的要求, 这些就是大家的努力方向.
1 熟悉主流框架技术, 不仅要能山寨代码, 业务上出了问题更需要通过 debug 定位问题, 当然无需定位到框架层面, 定位到业务代码, 数据库代码和 ORM 等代码即可. 这其实不难, 做过半年以后, 该学的都能学到, 而且通过视频等方式, 了解底层代码也不是难事.
2 进一步了解些分布式或微服务的技术, 比如 Spring Cloud 系列, 服务治理 Eureka, 负载均衡 Ribbon, 容错 Hystrix 等, 又如阿里系的分布式组件. 如果有项目实践机会, 再通过看视频等手段, 这些也不难学.
3 不仅要会做项目, 而且要了解项目的管理方式, 比如敏捷开发, 项目打包部署手段, 通过 sonar 管理代码质量.
4 遇到问题了, 能通过 debug 等方式定位问题并提出解决方案, 这就要求有 remote 定位问题的能力, 并要求能会基本的 Linux 文件操作的命令.
5 从总体感受上来看, 候选人除了技术能力到位以外, 看上去还得有责任心, 表达可以, 有一定的分析和解决问题的能力, 在项目里能独当一面, 且有上进心. 虽然这些描述性文字很多, 但如果 IT 人事要不断上进, 而不是坐等被淘汰, 这些要求其实并不过分吧.
说句得罪人的话, 目前公司数量太多, 而且各层次的公司都有, 所以只要经过努力, 再不行再经过培训学校加持, 各能力段的要找到份实践机会其实并不难. 我知道在有些公司里, 员工只要稍微熟悉些业务后, 就会不断重复劳动, 如果主观上不努力, 可能就无法接触到项目之外的技术, 而且做久了, 如果态度不端正, 就有可能在舒适区里混日子.
但话说回来, 有实践机会是个质的飞越, 因为很多技术在没有接触到的前提下, 还是比较枯燥的, 但如果有实践机会, 平时多少能接触到相关技能, 学习的效率就能大幅度提升, 换句话说, 哪怕之前什么都不懂, 只要进了一个小公司, 有了机会接触到相关技能, 后面的学习大多就是靠敲多代码多看技术文章了.
7 自信, 最重要的是自信, 从动荡公司到稳定公司乃至好公司, 最多只要 2 年
如果在小公司干久了, 可能一直处于动荡阶段, 或者格局有限, 会导致员工自信心不足, 比如我见过一个工作年限在 10 年左右的人, 各类公司都干过, 但都比较动荡, 论能力好歹能达到大型互联网公司资深开发的水平, 但当我要推荐他去面试时, 会给自己找很多技术不足的理由.
其实不少比较上进的 IT 人, 迈过了最初的困难期找到了对口的工作, 而且在工作 2 年后也积累了不少经验, 这时就应该大胆地去尝试更好的机会, 如果是因为自己沉迷于舒适区的安逸而不肯上进, 这个属于咎由自取, 但如果因为自信心不足, 这就有些可惜了.
所谓面试造核弹, 工作拧螺丝, 一些大型互联网公司还有一些好的公司, 其实对能力要求并不如想象中那么高, 而且有 2 到 3 年实践经历以后, 就可以通过简历技巧和面试技巧来让自己在大公司里找到工作. 但如果一旦因为自信等原因在底层公司里呆久了, 错过发展机会是小事, 把自己的技术栈, 视野和发展前景限制在一个很小的区域, 这才是大事.
要知道在一些大公司的平台上, 技术选型和项目管理方式是在小公司里无法想象的, 大公司的牛人所在的技术高度也是在小公司无法感受到的, 所以大公司能给到的发展高度也绝非是在一些小公司里能想象到的.
8 总结, 求推荐, 版权说明
最困难的阶段是开始阶段, 本人在筛选简历和面试的过程中, 也能深深感受到众多上进的 IT 人在这个阶段的无力感 -- 知道该学什么就能靠时间和体力劳动来堆积, 但不知道怎么学的话, 这种迷茫感或许只有当事人才能感受到.
在这个阶段, 得多靠实践多靠学习提升技能, 而不是再一味地优化简历. 在方法得到的前提下, 踏实上进加自信心, 2 年后绝对有机会进好的公司. 而本文给出的一些方法, 多少有些操作性.
本人前后用了周末 3 个小时写成此文. 如果大家感觉本文有所帮助, 请帮忙推荐此文, 如果感觉文章内尚有不足, 也请通过评论多多帮助本人, 本人不胜感激.
关于转载有如下的说明.
来源: https://www.cnblogs.com/JavaArchitect/p/10992988.html