90天java转机器学习——面试学习总结

1、前言

辗转几年java开发,换了几份工作,没一个稳定的学习、工作过程。中间也相亲几次,都是没啥结果。换工作频繁也严重打乱了和姑娘接触的节奏。糟心工作连着遇到几次,也怪自己眼光有问题。2018也找了2次工作,中间有4、5个月没有工作。看了个世界杯,看了个亚运会。也怪自己这段时间一直是换工作、找工作,节奏太乱了。当然,节奏不乱也可能不会比现在好吧。谁说的准呢?

2、java转机器学习——为啥呢?

(1)java感觉遇到瓶颈。spring,mytatis,设计模式等等,源码看不动了。主要是可能真的觉得没有意思了吧。很可惜,3年多了,没在大厂待过,小互联网也没做到高级java工程师。

(2)伤心了。小互联网或者小团队经历——在之前的几篇面试写到过一些,让自己觉得非常不爽。碰上过创业忽悠公司,就为了做了东西,然后卖了解散走人,公司和招聘来的人都是C×O们资本运作的工具。也有公司组建团队就为了试试市场,觉得不行或者做完了不需要这么多人了,马上裁掉。还有那种恶心的团队,同事间背后说坏话,领导直接推责任的。哎,苦逼频繁换工作,也是醉了,真是荒废啊,这几年。经历还真是丰富,对自己的职业技能发展真心没有任何好处。

(3)学到过机器学习相关内容。上学期间接触过相关的一些理论,发现看一些机器学习内容还是看的懂。起码知道啥是矩阵乘法,LeetCode也刷了将近80题了,也记住了一些方法。

3、10周自学机器学习过程——迷茫

个人基础背景:

(1)知道矩阵乘法

(2)知道梯度下降、牛顿迭代,不知道原理和实现

(3)会用python,但机器学习的包不会用

(4)知道有个东西叫LR,还有叫神经网络的,具体是啥就不知道了

主要看了2个教程,绝不打广告,实话实说:

(1)Andrew Ng的机器学习课程,coursera的课程和斯坦福公开课。觉得coursera的比较适入门,会讲很基础的东西和一些代码。由于coursera网站打不开课程视频,默默的搜到下载了一套视频。coursera课程是有收费和免费的,还挺便宜的,就不发链接了。Ng老师的课会有种直击心灵的感觉。课程循序渐进,节奏很好,还讲代码基础,项目经验等等。

(2)七月机器学习课程,花了几百块。这个在线学习很适合面试,由于自己错过了集训课程,只好学个基础课了。内容很丰富,结合实际项目,还提供代码。网站还有各种面试题,老师也能答疑解惑。

除了上面的课,还做的事:

(1)学习python机器学习相关包,numpy、pandas、sklearn、pyplot等等

(2)kaggle入门题,泰坦尼克幸存问题,用sklearn等,把排名弄到了8%。主要学习了数据处理、模型训练流程。

4、机器学习面试过程——难

6周学习过后开始试水机器学习市场,也正好是世界杯结束的日子。由于没有经验,先投了几个试试,锻炼一下,都是小公司把。可能是这个市场还是挺宽容的,接到的回复有不少,一些电话面试就直接挂了,一些联系发简历后也挂了。面试机会也挺多,但是深感知识深度、项目经验不足。下面说说面试吧,由于简历项目经历少,被问的涉及内容也少。

(1)LR(必问)。这个涉及内容很多,自己也是实现过,用在过kaggle项目,但是很多理论还是说不清楚。面试遇到的问题:最大似然、loss function、推导、适合场景、参数、回归、分类、梯度下降(mini batch、sgd)。

(2)决策树相关。gbdt、xgboost、随机森林等。会问推导、算法流程、bag和boost模式区别、剪枝算法。

(3)模型欠拟合、过拟合、数据清理、特征选择等等,以及用什方法来解决。

(4)机器学习整体处理流程。认识数据、数据清理、特征选择、数据变换、构建模型、模型训练、交叉验证…。

(5)写写代码,只遇到了leetcode简单题(主要没有大厂面试机会,小公司又不考,大点互联网会考)

(6)讲讲简历上写的项目。我的只写了一个kaggle那个泰坦尼克问题(现在想想真是敢写啊,干到前5%也行,自己都没到)。还写了毕业论文和一些java工程,凑了一页多。

5、面试感受和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了,理由是之前工作换的频繁,这次找工作也没明确目标,职业规划不明确。

6、总结

转个工作专业真的很难,没有运筹帷幄,全职学习去转…,这个真心说啥呢?哎!感觉应该在之前的工作中去学习,这样换个专业还算平滑,不会有各种压力。也可能是自己一直没想好,工作也变动频繁,一时冲动吧。创业团队倒闭、裁员打乱了学习节奏。已经这样了,啥也说不好。3个月,最后拿到offer还是自己在学了6周时候面试的公司。只能感叹面试人承受能力了。工作中用的方法目前不太需要深究理论,还在基础搭建过程,有充足学习时间。发现写写数据处理的python,比做java时候有意思。当然这种有意思也可能和团队氛围有关系吧。现在又开始感觉机器学习、深度学习发展略快,自己有点跟不上节奏了。理论基础还没学完,工作中内容还得学习,新的技术也得关注着。目前有点地基不牢、时间不够用的感觉。
综上:没有好的职业规划,换工作真的太危险,中间的空档期是很大问题。经济压力,转业失败,新的工作就会比之前更好吗?所有都是在看运气的感觉,这次可能真是自己幸运了!现在倒是觉得,工作中好好学习,对面试公司或部门能有机会深入了解,就一定要先问问,靠谱的还是内推(前提是内推人别不久就离职了)——能带来很多面试中无法了解到的内容。
路途坎坷的几年工作,伤心了2017和2018,不知道2019会如何呢?

你可能感兴趣的:(程序人生)