90天,从Java转机器学习面试总结

前 言

辗转几年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

时间: 2024-10-25 18:29:27

90天,从Java转机器学习面试总结的相关文章

金九银十,浅谈关于java程序员面试的一些事项

本篇博文针对的是应届毕业生以及工作两三年左右的java程序员. 为什么要跳槽? 这是一个很广义的问题,每个人心中都有一份答案. 例如: 公司的待遇不好, 薪资涨幅不符合预期要求, 厌倦了出差的荒无天日的繁重工作, 公司的妹子太少, 领导太傲娇, 同事之间关系太逼格, 某某同学跳槽到某某公司之后涨到了多少多少钱, 某某同学的朋友的同事的三姑妈家的大儿子的好基友在某某高就, 等等辞职理由. 咱们就不多说了,还是谈谈怎么应付面试吧. 以下内容是我在面试中总结的一些经验,希望这些可以给各位带来帮助和启迪

美资软件公司JAVA工程师电话面试题目

面试必备基础题目(虽然不一定常用, 仅用于面试, 面试就是把人搞的都不会然后砍价, 当然您可以讲我可以查资料完成, 但是面试的时候就是没道理的, 起码我是经常看到这些题). 如何把一段逗号分割的字符串转换成一个数组?request.getAttribute() 和 request.getParameter() 有何区别?response.sendRedirect() 和 forward() 区别?<%@include file="xxx.jsp"%>和 <jsp:in

Java集合相关面试问题和答案

Java集合相关面试问题和答案 面试试题 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类.

《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中,字符串起着非常重要的作用,字符串的声明与初始化主要有如下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容相同的字符串对象"abc",它们在内存中的地址是不同的.只要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = "

Java研发岗位面试归类B(附答案)

本文承接上文:Java研发岗位面试归类A(附答案): http://www.cnblogs.com/wp5719/p/5870243.html 答案自己网上找的,如有纰漏或错误,烦请指教. 七.数据库MySql 1.MySql的存储引擎的不同. MyISAM:拥有较高的插入,查询速度,但不支持事务. InnoDB:5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定. BDB:源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLB

《Java程序员面试宝典》学习笔记(基本语法部分)

这是我学习欧立奇<Java程序员面试宝典>第三版的笔记.这篇是基本语法部分. ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 在Java中,字符只以一种形式存在,那就是Unicode.在JVM内部一切都由Unicode表示,而输出到外部后(JVM和OS的交界处就是各种输入/输出流)转换为其他形式的编码. Java用了中间缓存变量的机制,所以,j=j++可换成如下写法: te

《Java程序员面试笔试宝典》终于在万众期待中出版啦~

<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理想的企业 在这里,众多知名企业面试官将为你撕开神秘的求职面纱: 在这里,各种求职达人将现身说法为你揭开求职谜团: 在这里,各种类型的企业招聘细节都会被展露无疑: 在这里,我们将为你抽丝剥茧,还原IT行业的真相: 在这里,我们将为你指点迷津,告诉你职场上的风风雨雨: 在这里,我们将为你点石成金,成为那盏指引你前

《Java程序猿面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中.字符串起着非常关键的数据.字符串的声明与初始化主要有例如以下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容同样的字符串对象"abc".它们在内存中的地址是不同的.仅仅要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = &qu

【转】10个关于java单例模式的面试问题

10 interview question on Singleton Pattern in Java Question starts with What is Singleton class? Have you used Singleton before? Singleton is a class which has only one instance in whole application and provides a getInstance() method to access the s