前 言
辗转几年Java开发,换了几份工作,没一个稳定的学习、工作过程。中间也相亲几次,都是没啥结果。换工作频繁也严重打乱了和姑娘接触的节奏。糟心工作连着遇到几次,也怪自己眼光有问题。
2018也找了2次工作,中间有4、5个月没有工作。看了个世界杯,看了个亚运会。也怪自己这段时间一直是换工作、找工作,节奏太乱了。当然,节奏不乱也可能不会比现在好吧。谁说的准呢?
Java转机器学习——为啥呢?
主要有以下三方面原因:
1、Java感觉遇到瓶颈。Spring、Mytatis、设计模式等等,源码看不动了。主要是可能真的觉得没有意思了吧。很可惜,3年多了,没在大厂待过,小互联网也没做到高级Java工程师。
2、伤心了。小互联网或者小团队经历——在之前的几篇面试写到过一些,让自己觉得非常不爽。碰上过创业忽悠公司,就为了做了东西,然后卖了解散走人,公司和招聘来的人都是C×O们资本运作的工具。
也有公司组建团队就为了试试市场,觉得不行或者做完了不需要这么多人了,马上裁掉。
还有那种恶心的团队,同事间背后说坏话,领导直接推责任的。哎,苦逼频繁换工作,也是醉了,真是荒废啊,这几年。经历还真是丰富,对自己的职业技能发展真心没有任何好处。
3、学到过机器学习相关内容。上学期间接触过相关的一些理论,发现看一些机器学习内容还是看的懂。起码知道啥是矩阵乘法,LeetCode也刷了将近80题了,也记住了一些方法。
10周自学机器学习过程——迷茫
个人基础背景:
知道矩阵乘法
知道梯度下降、牛顿迭代,不知道原理和实现
会用Python,但机器学习的包不会用
知道有个东西叫LR,还有叫神经网络的,具体是啥就不知道了
主要看了2个教程,绝不打广告,实话实说:
Andrew Ng的机器学习课程,Coursera的课程和斯坦福公开课。
机器在线学习课程,花了几百块。这个在线学习很适合面试,由于自己错过了集训课程,只好学个基础课了。
除了上面的课,还做的事:
学习Python机器学习相关包、NumPy、Pandas、Sklearn、Pyplot等等;
Kaggle入门题,泰坦尼克幸存问题,用sklearn等,把排名弄到了8%。主要学习了数据处理、模型训练流程。
机器学习面试过程——难
6周学习过后开始试水机器学习市场,也正好是世界杯结束的日子。由于没有经验,先投了几个试试,锻炼一下,都是小公司。
可能是这个市场还是挺宽容的,接到的回复有不少,一些电话面试就直接挂了,一些联系发简历后也挂了。
面试机会也挺多,但是深感知识深度、项目经验不足。下面说说面试吧,由于简历项目经历少,被问的涉及内容也少。
LR(必问)。这个涉及内容很多,自己也是实现过,用在过Kaggle项目,但是很多理论还是说不清楚。面试遇到的问题:最大似然、loss Function、推导、适合场景、参数、回归、分类、梯度下降(mini Batch、SGD),
决策树相关。GBDT、xgboost、随机森林等。会问推导、算法流程、bag和Boost模式区别、剪枝算法,
模型欠拟合、过拟合、数据清理、特征选择等等。
机器学习整体处理流程。认识数据、数据清理、特征选择、数据变换、构建模型、模型训练、交叉验证,
写写代码,只遇到了LeetCode简单题(主要没有大厂面试机会,小公司又不考,大点互联网会考),
讲讲简历上写的项目。我的只写了一个Kaggle那个泰坦尼克问题(现在想想真是敢写啊,干到前5%也行,自己都没到)。还写了毕业论文和一些Java工程,凑了一页多。
面试感受和Offer
感觉就是难啊,机会多,从学习群发现转专业的真多。上学就学机器学习相关的优势大。年龄可能也是问题吧。
拿到了3个offer,一个差点offer,都是新组建的算法团队。
(1)互联网金融,很小的公司。几十个开发人员,只有一个算法——就是面试的我。面试官是技术总监,完全不懂算法。聊得很开心,我也提醒他了,他们需要一个有经验的人,我可能不太适合。还面了2次,第二次还是周六,在一个咖啡馆。
本以为是合伙人聊聊业务,谁知道是真的机器学习面试。还问了源码实现、赛马问题。聊了好久,当场给了offer。据说面试人是哪个大厂的,每周去这个公司几次。总之最后我也没弄明白关系。
不过有了之前的工作经历,这次问的比较多。那边总监团队说算法面试官是朋友关系,算法面试官说自己是合作伙伴,人力又说不打算短期招聘算法了。我也是被这种搞怕了,虽说工资对没经验的我还算高,但还是没去。
(2)感觉是传统软件公司,给各种企业做软件服务的,团队据说几百个开发。面试官也是不太懂算法。还说为了匹配工资,按照高级Java头衔入职,做算法工作。
也是没几个人的算法团队(很可能我就是第一个),还得兼顾开发,感觉有点怕,透露着各种奇怪的感觉。没啥实质算法内容面试。这个感觉面得很空虚,所以没去。
(3)入职的公司,也是小算法团队,刚组建,职位数据挖掘。面试很开心,有笔试,答得不好。技术面基本围绕分类、数据处理流程来问。涉及一些NLP的内容,不太会,也就没问太多。2天完成2面,技术、人力和leader。差不多3、4周给了offer。
虽说工资不高,但是感觉很好,一个国企,技术团队还没到100人,算法组当时面也是只有1,2个人,不过能给比较充足的学习和尝试时间。
(4)同学内推互联网公司,没发offer,面得很开心,还吃了他们的食堂(味道还行)。面的很全面,机器学习、LeetCode那种写代码、还有数学题。二面的领导问了GBDT具体流程,还挺详细。我把GBDT论文里边的算法伪代码写出来了。
还问了EM,这个真心不会。最后定的职位是Java开发,负责算法模型和业务程序之间模块。最后,据说被人力pass了,理由是之前工作换的频繁,这次找工作也没明确目标,职业规划不明确。
总 结
转个工作专业真的很难,没有运筹帷幄,全职学习去转......这个真心说啥呢?哎!感觉应该在之前的工作中去学习,这样换个专业还算平滑,不会有各种压力。也可能是自己一直没想好,工作也变动频繁,一时冲动吧。
创业团队倒闭、裁员打乱了学习节奏。已经这样了,啥也说不好。3个月,最后拿到offer还是自己在学了6周时候面试的公司。只能感叹面试人承受能力了。
工作中用的方法目前不太需要深究理论,还在基础搭建过程,有充足学习时间。发现写写数据处理的Python,比做Java时候有意思。
当然这种有意思也可能和团队氛围有关系吧。现在又开始感觉机器学习、深度学习发展略快,自己有点跟不上节奏了。
理论基础还没学完,工作中内容还得学习,新的技术也得关注着。目前有点地基不牢、时间不够用的感觉。
综上:没有好的职业规划,换工作真的太危险,中间的空档期是很大问题。经济压力,转业失败,新的工作就会比之前更好吗?
所有都是在看运气的感觉,这次可能真是自己幸运了!现在倒是觉得,工作中好好学习,对面试公司或部门能有机会深入了解,就一定要先问问,靠谱的还是内推(前提是内推人别不久就离职了)——能带来很多面试中无法了解到的内容。
路途坎坷的几年工作,伤心了2017和2018,不知道2019会如何呢?
原文地址:http://blog.51cto.com/13952975/2344710