Android三年转AI的狗血经历:曾报一培训机构但没找到工作


本人情况:数学专业,二本,Android开发三年

2018.5.1开始学ai,当时一边工作,一遍学ai,偶尔还要根据工作需要学些Android知识。所以天天熬夜学,找了一家培训机构,一直学到2019.2月份,奈何市场变化太快,简历投出去直接没动静,那家培训机构讲的也不系统,所以找工作非常被动,后来自己把图像的东西补了下,简历投出去依然没动静。

等到6月份的时候,一起培训的一个朋友给我一个链接,就是七月的网站,我仔细看了几天七月的课程,觉得不错,就准备报,一起的另外两个不准备报,因为觉得学费贵(19000大洋,的确不便宜),因为我知道自己想要的是什么,所以直接就报了课程,他们两个纠结了一段时间我给他们陈明利害后,他们也报了,我和其中一个报的 cv就业班2,另一个金融就业。

报了七月的课程,还没有到开课时间,不过助教已经给了我们说了要学哪些东西,而且很负责,会问学习进度,即使是周末有问题问了,助教也会回答(助教周末也需要休息,但是问他们问题了,他们只要看到了就是在外边只有手机也会回答),开课的时候自己就按照老师的课程节奏来学东西。

从5月到10月,自己的安排。开课前:重点学了上一期的cv就业班课程,以及一部分深度学习的课程,leetcode刷了50+题,动态规划,python基础等。开课后:主要是跟着老师的课程走,虽然课程的内容我报七月之前都学过,但是通过老师讲解之后理解才更深刻,以前没弄懂的,现在都弄懂了。然后就是做项目。

在七月的学习过程中,自己有做的好的地方,也有不好的地方,现在列出来供大家参考。
不好的地方:
1. 和老师、同学沟通太少,七月的学员卧虎藏龙,跟学员老师多交流,既能防止自己一个人学习闭门造车,又能形成良性的竞争,鞭策自己前进,否则一个人学的话,极容易自我满足,自我懈怠。我前期交流的比较少,所以才开始有些懈怠,因而也落后好多。
2. 上课笔记做的太少:老师上课的每一句话都可能是一个面试题,所以老师的课程需要多听几遍,一定要有详细的笔记,不然马上就忘了,而且更多的情况是书本一打开什么都会,书本一关上感觉自己什么都懂但就是一句都讲不出来。笔记/博客是帮助自己整理思路的过程,自己不动手整理,思维的触角根本深入不到那些细节,而这些细节才是理解某个知识点的关键。自己开始为了图快,没有整理笔记,现在只能从头开始。
3. leetcode刷题太少:100道左右是必须的,少了数量不够(当然越多越好,但是时间有限啊),才开始算法题1-2小时做一道很正常,面试会现场考算法,如果自己练的不够,或者自己没有深入思考过,给你一个问题,基本一句话也说不出来。我就遇到这个问题,其中一个面试就是这么挂的。
4. 多动手做项目:在正式的大项目开始前,自己最好能动手做1-2个项目,哪怕MNIST自己动手从头开始写,自己调几次参,CIFAR-10,CIFAR-100调参,kaggle上调一个项目,能动手做一下。否则等真正的大项目开始后,自己根本不知道如何下手,更别说跑出来一个较理想的结果。而且也不要为了验证trick而去调参,即不要为了调参而调参,因为我在和一些学员交流的时候 发现了这个问题。解决问题的思路很重要,为了调参而调参根本没办法训练思维。
5. 不要辞职学习,因为我报七月之前已经离职了,所以这是自己一个非常大的失误。离职学习除了经济上的压力外,心理上的压力会更大,对后面找工作非常不利。

个人觉得可以推广的地方
1. 关注一些自己从事方向的公号,论坛等(ai所有的方向也要有所了解),每天去看看发生了哪些进展,工业界学术界有什么新的成果,有什么新书出版,让自己对整个行业的发展有个概念,ai更新换代这么快,不关注最前沿的东西大概率面临被淘汰的命运。
2. 在准备面试的时候,可以把写好的简历分解成一份文科期末考试试卷,即名词解释题,简答题,论述题,计算题等。当作一场考试(是真的用笔/电脑去写),看自己不看书,这些问题自己可以回答到什么水平,这个水平基本就是自己对算法理解的真实水平,帮自己找简历中的漏洞。平时也可以用这种办法帮助自己理解一些算法。
3. 每次调完参数,产生的一些新的感悟,立刻记录下来,日积月累自己对算法的理解才能越来越深刻,而且这些东西到时候可以直接在面试中讲出来,不用搜肠刮肚的去想怎么讲项目。
4. 每次面试的时候录音,回来检查自己的知识漏洞以及表述问题。

面试问的一些问题:
一 机器学习
1. 讲讲svm的核函数
2. svm经过核函数变换后,最重要的是做什么
3. 讲讲RandomForest,决策树,ID3,C4.5 ,CART
4. numpy中的数组和list有什么区别
5. k-means
6. PCA,KPCA
7. GDBT,XGBoost,LightGBM以及与RandomForest的区别(这个自己完全没掌握)

二 深度学习
1. 讲讲resNet
2. 说说bn的作用
3. 说一下word2vec
4. RNN,LSTM
5. 目标检测中,boundingbox是如何调整的
6. 目标检测算法中有哪些分类,分别讲讲
7. 现在让你提高模型的精度,你有哪些办法,提高模型的召回率,你有哪些办法
8. 有哪些优化方法
9. 你是做图像的,现在让你去做一个nlp或者语音的项目,你准备怎么做

10. 给定一个网络结构和loss,现场推导反向传播算法。
11. 1x1的卷积核有什么作用

三 编程能力
1. 这个一般会考算法题,数据结构这块一定要清晰,这个时候leetcode刷题就很关键了,七月题库里面也有许多算法题,要多做做。
2. 给定一个数组,里面有各种数据类型的元素,现在让你找出一个连续的子数组,使得其所有元素的和最大(动态规划问题)
3. 给你个csv文件,有时间和温度两列,根据时间求温度的平均值,这个编程题你怎么做

四 讲项目
这里如果自己对项目比较熟悉的话,可以说是面试加分项目,但是还是会有自己没考虑到的问题,问的问题大概如下:
1. 你网络输入的tensor是什么样的,最终输出是多少
2. 为什么要选用这个网络,网络结构是什么样的,网络中64,48是什么意思
3. 有多少照片,最多的类别是多少张,最少的类别是是多少张
4. 如何处理数据不平衡问题,对应的api是什么,在什么地方加入数据不平衡处理
5. 最好的结果是多少,你的结果排名多少
6. 学习率多少,采用什么的衰减策略,为什么用这个衰减策略

五 其他问题
1. 自我介绍
2. 你是做Android的,为什么放弃自己的优势跑来做ai
3. 你是数学专业的对吧,谈谈你对测度论的理解(这个是选答题,我也回答的很不好,测度论,懂的人都知道)
4. 讲一下java的内存模型(自己提到了不懂python的内存模型,只知道Java的,算是给自己挖了个坑,不过自己回答过关了)

六 总结
1. 回答问题的时候,千万别问什么就回答什么,比如问resnet,最好从vgg开始讲,然后是resnet,inception;densenet可以稍微提下,算法产生的背景,解决策略,最近新的成果,以及同类的其他解决办法,异同点。从横向和纵向两个角度来讲效果会比较好,这也是自己学习的时候路径,当然还有个程度维度,因为自己不可能一次性学到位。
2. 可以适当提下最新的研究成果,不用答得很细,比如问优化方法,可以提下RAdam,所以适当阅读一些论文也是有必要的,虽然不是重点,但无论对自己知识的更新还是对面试都有帮助。
3. 有问题多找老师,助教,就业辅导,他们人都很nice。多和学员交流。

非常感谢七月这个平台,不仅帮助自己成功入行ai,也认识了很多有追求的同龄人,一起成长。虽然拿到offer了,但真正的挑战才刚刚开始,还有许多不会的东西需要学,所以接下里还要拼命学。

祝七月越办越好!
已邀请:

要回复问题请先登录注册

收藏七月在线,一起向大牛进阶

ctrl+D或command+D可以快速收藏哦~