前 言
辗转几年 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://www.bubuko.com/infodetail-2927664.html