代码改变世界

经验分享 | 如何拿到自己满意的offer?

2019-01-21 21:19  计算机视觉life  阅读(2570)  评论(2编辑  收藏  举报

本文阅读时间约16分钟

最近两年,人工智能(AI)就像一个点石成金的神器,所有的行业,创业公司,或是求职,只要沾着这个词,多少有点脚踩五彩祥云的感觉,故事来了,融资来了,高薪来了。

于是,越来越多的人开始往AI方向涌。我曾经参加一个群面,12个人,其中一半以上做人工智能方向的,可见现在AI有多热。可是,问题就在于,这条路就一定靠谱吗?这个方向前景如何呢?我们究竟怎样才能找到一份算法工程师的工作呢?相信不少同学都有这些疑问。下面权且从个人经验结合一些资料,进行深度剖析。由于个人经验可能存在局限性,不一定正确供大家参考。

本文会写到以下小话题:

  • 1、什么是人工智能
  • 2、为什么现在人工智能这么火
  • 3、为什么要学习人工智能
  • 4、找工作的经验
  • 4.1、工作要求分析
  • 4.2、如何找一个自己满意的工作

前三部分,作为一个铺垫,如果你已经跨过小白阶段,可以直接跳到最后一部分,观看精华部分。

1、什么是人工智能

其实对于什么是人工智能,目前还没有一个统一的定义。对于我们目前常说的人工智能其实,可以用一张图来解释。

1.jpg

那么用一句话总结就是:人工智能是为了让机器拥有类人的智能,其中机器学习是一种实现人工智能的方法,而深度学习是一种机器学习的技术。

2、为什么现在人工智能这么火

那为什么人工智能火起来了,其实之前人工智能曾火了两次,但都因为各种问题而没有发展起来。而这次又重新火起来很大程度是因为近年来互联网高速发展所产生的数据,这些数据极其庞大,需要处理和加工提炼,数据过于庞大人工处理非常困难,这时,数据处理的需求一定程度上催生了人工智能的迅速发展。同时,计算机的硬件的发展也提供了基础。

而2016年的一场人机大战举行,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界。所有的互联网公司,尤其是 Google、 微软、百度、阿里、腾讯等巨头,无不在布局人工智能技术和市场。前有百度深度学习研究院,腾讯的AILab,后有阿里的“达摩院”。并且国家不断的鼓励与布局下更加促进了人工智能的发展。

人工智能已经慢慢的进入平常百姓的生活,可以说人工智能的发展前景非常广,通过一个图看一下人工智能在生活中有哪些应用呢。应用场景广泛,其实也是人工智能火起来的原因之一。

1.png

那么以后人工智能还会一直这么火么?其实,从面试了解的大部分公司,其实最关心的是如何落地算法,一般都会问你这个项目有没有用到实际。其实侧面反映出人工智能方向难得是落地,现在很多公司纷纷踏入,其实大部分公司没什么技术积累,随着时间的发展,市场会趋于冷静。就像之前p2p、共享单车、比特币一样,资本快速催生出的市场,冷静下来会出现一地鸡毛啊。但不妨碍人工智能有广阔的前景,毕竟解放人类生产力啊。同时,最近的cai yuan潮一样给大家提个醒,尽量进入大厂或者核心部门,风险相对较小。

3、为什么要学习人工智能

我认为在做任何重要决定之前,比起搞清楚该怎么做(HOW),追问自己为什么要做出这个选择要重要得多(WHY)。方向大于努力。你在一条错误的路上越努力,你离目标越远。

更多?更喜欢?更擅长

任何一条理由都没问题,但为了增加你求职的成功率和工作的发展前景,应该尽量去寻找这三条职场优势公共的交集

一开始,很难有人一击命中既钱多又喜欢还擅长的工作,但这并不妨碍你先从已经同时具备了两个职场优势的选项(钱多、擅长、喜欢)出发,并把三大优势的交集作为自己职业规划的终极目标

除此之外,每个人或许还有些个人限制条件,比如经验和教育水平不同。

如何利用以上理论来分析自己适不适学习人工智能?我就拿自己来举例分析分析——

首先我大学是一个普通的不能在普通的一本,学的还是万金油的自动化专业,其实跟编程关系不大。以至于去招聘的时候别人都问,你会不会硬件。这时候内心简直想怼他“学自动化就得做硬件么?”,还是要面带微笑耐心的,说之前确实做PLC,但后面,做的是深度学习。

目标1:考研

另一方面由于学校很普通,又不想安心的考个公务员就算了(内心还是有个搞技术的心,皮一下),毅然选择考研,第一年复试被刷,只能调剂,但是调剂的话,还是不能上985或者211,并不能改变我第一学历出身不好,所以选择二战。(ps:有目标后千万不要轻易放弃)

目标2:选择喜欢的方向

当考上研究生后,其实,由于“散养”自己玩了一年,荒废了这一年宝贵时光。当选择方向时,实验室有两个方向,一个图像处理,一个雷达。由于个人对雷达实在提不起兴趣,又比较喜欢图像处理,觉得很有意思,想选择图像,但是这个项目不需要这么多人,导师不想让选。我就提前准备,询问了师兄师姐,还有其他老师,带着自己想法,跟导师谈,最终说服导师让做试试看。(这真的需要技巧,不能跟导师硬碰硬,说我就不想做,想做啥。还是总体要听导师的。如果实在有自己想法,就要带着想法与导师谈)你对一个东西感兴趣,真的很重要,事半功倍的感觉。更愿意付出去学习去奋斗。

目标3:算法工程师

其实入门学习真的不简单,因为我之前是做PLC的,编程基础真的几乎为零,就从头开始学。后来通过招聘发现自己不足,接着学习不足的地方。(其实这可以看做一个反馈,发现不足,弥补不足。)

找工作的时候,我仔细思考了自己的工作反向觉得对算法更有兴趣,决定去找算法岗,虽然道路不是特别顺利,但终有一个好结果。(虽然,自己拿到过几家软开的职位,但,觉得自己还是想做自己喜欢的工作,身边很多同学并没能坚持去找算法职位,可能去了软开,测试。并不是说这些岗位不好,而是,你最好找到一个自己喜欢的,这样你才有兴趣持续学习。如果你喜欢软开,当然一样有钱途)

4、找工作的经验

可能有小伙伴纳闷,怎么不介绍怎么学习?主要是每个人的基础不一样,实在很难一概而论,大家可以自行,知乎,如何入门机器学习。有很多推荐,最主要找到一种适合自己的情况的学习方法。但有两个要注意的地方,我觉得是入门时很容易出现的情况,也是一定要避免的,大家需要注意。

  • 放弃海量资料!

    没错,就是放弃海量资料!在我们想要入门机器学习的时候,往往会搜集很多资料,什么 xx学院机器学习内部资源、机器学习从入门到进阶百 G 资源、xx 人工智能教程,等等。很多时候我们拿着十几 G、几百 G 的学习资源,然后踏踏实实地放到了某云盘里存着,等着日后慢慢学习。殊不知,有 90% 的人仅仅只是搜集资料、保存资料而已,放在云盘里一年半载也忘了打开学习。(看了一眼自己的云盘,莫名感觉打脸,好呗,捂着脸接着写)躺在云盘的资料很多时候只是大多数人“以后好好学习”的自我安慰和“自我”安全感而已。而且,面对海量的学习资料,很容易陷入到一种迷茫的状态,最直接的感觉就是:天啊,有这么多东西要学!天啊,还有这么多东西没学!简单来说,就是选择越多,越容易让人陷入无从选择的困境。

    所以,第一步就是要放弃海量资料!而是选择一份真正适合自己的资料,好好研读下去!

  • 千万别先从头学数学!千万别先从头学数学!千万别先从头学数学!(重要的事情多说几遍)

    说到入门,很多人会想着那就要从最基础的知识开始学起!机器学习是一门融合概率论、线性代数、凸优化、计算机、神经科学等多方面的复杂技术。学好机器学习需要的理论知识很多,有些人可能基础不是特别扎实,就想着从最底层的知识开始学起,概率论、线性代数、机器学习凸优化公式推导,等等。千万不要这样,极有可能你都看不完一本数学理论的书,就放弃了。当然,不是说不需要钻研基础知识,基础理论知识非常重要!只是说,在入门的时候,最好先从顶层框架上有个系统的认识,然后再从实践到理论,有的放矢的查缺补漏机器学习知识点。而且从学习的积极性来说,也起到了“正反馈”的作用。

4.1工作要求分析

因为,大部分人学习的目的,是为了求职去找一个好工作,我觉得有必要首先对这份工作的行情和要求做个大概的了解。俗话说知己知彼百战百胜嘛。

本人爬了智联招聘上的关于算法工程师的将近6000个职位,进行分析。具有一定参考价值,如图所示:

1.我们来探索一下算法工程师岗位在全国各城市的需求情况:

如上图所示,北京、上海和深圳对算法工程师的需求最多,尤其是北京,需求量甚至超过了上海、深圳的总和。所以如果想找算法工作北京机会最多,其次是上海、深圳。所以,如果想更容易的去找工作,上面的城市要更容易。

2.薪资水平的探索

如上图所示,对于算法工程师的岗位而言,绝大多数岗位的薪资在1K-2.6K之前,薪资其实相对较高。是不是突然有学习的动力。

3.学历要求

4.学历与工资的关系

基本上可以反映学历与工资成正比,如果想获得高收入,提高学历同样是个办法。

5.企业的类型分布

6.算法工程师所需要的技能(非常的重要哦)

1.学历:本科及以上学历,数学,计算机,自动化等相关专业(有些大厂提高到硕士及以上,所有学历有时候是个门槛);

2.编程能力:C/C++、Python、java任意两种;常用数据结构和算法;熟悉linux系统

3.算法能力:熟练掌握计算机视觉&机器学习的基本方法(这里所说的是可以手推公式,例如:决策树、临近取样、支持向量机、神经网络算法、回归、聚类等。同时要熟练掌握TensorFlow、Keras、PyTorch等框架)

4.经验:有项目经历;比赛经历;实习经历

5.团队合作能力:良好的沟通能力和团队合作能力。

6.加分项:有博客或者公众号;github;顶级会议论文;各种比赛奖项

7.针对细分领域可能还有一些,其他的要求,比如图像处理方向可能会要求opencv。数据分析可能要求会数据可视化。

4.2 如何找一个自己满意的工作

4.2.1 简历

简历是你求职的第一步,也是很重要的部分,因为他是你与应聘公司沟通的桥梁。那该如何制作一份合格的简历?(推荐:简历就得这么做才行https://www.bilibili.com/video/av12771675)简历的第一个字就突出简,简单美观就好,千万不要弄得特别花哨,反而没有什么好效果。简历最好一页,将最能代表自己能力的写清楚,最好简洁扼要。要针对投递公司的职位要求,去写自己的简历。例如:你去应聘一个公司,可以打开他们的招聘网站,查看一下岗位要求和公司文化是什么。对应着要求去写。但是千万不要写一些自己根本讲不出的东西,比如你写了熟悉什么算法,问你一个问题,就答不出,这样还不如不写。关于如何写工作经验或者项目经验,推荐给大家“ STAR ” 法则。

情境(Stuation):写出你的工作背景

任务(Task):我负责做什么

行动(Action):我做了什么

结果(Result):我的工作取得了什么样的结果

举例:某某公司的算法岗实习,参与人脸识别的项目,负责算法的实现与改进,最终结果提高了多少多少。

千万不要写一堆,甚至,有同学简历好多页,HR没时间去细看,不知道你的重点是什么。而且简历最好有量化的数字,比如提高了多少,写了多少代码,这样让人更直观。最后,一个小贴士,如果需要自带简历,请不要舍不得花钱,找一家好一点打印店,彩打厚纸,这样给人感觉更舒服一些。下面我们就该针对,求职要求去丰富自己的简历。

4.2.2 学历

一些大厂的起步要求确实是硕士说明门槛逐渐在提高,如果真的想深造,读书不失一个办法,尤其现在应届生与往届生的工资出现,应届生工资更高的情况。当然,还得结合自身实际选择。

4.2.3 coding能力

算法的同学coding能力是在面试中必须要考察的。虽然可能比软开要求要低,但并不是就不要求,只会python肯定是会被鄙视的。所以自己的coding能力必须多练练,推荐在牛客网或者LeetCode的在线编程多多敲代码。掌握类似leetcode medium程度的题目就可以了,hard程度的可以不用掌握。面试中一般会出几道题目,要求手写,能顺利写出的都是加分项。语言要掌握一大两小三门语言,大语言是Java或者C++,小语言掌握python,SQL。有时间精力可以将常见的算法用python实现一下。语言不必掌握很深,但是要做到能熟练用Python或者SQL处理数据,算法用Python也要掌握差不多。对于大语言来说基本语法和一些基本概念都要熟练掌握。同时对基本的计算机原理要熟悉,面试同样会问。

资料请自取哦:

python面试知识点总结:https://github.com/taizilongxu/interview_python

c\c++面试知识点总结:https://github.com/huihut/interview#cc

java面试知识点总结:https://github.com/guanzhenxing/java_interview_manual

4.2.4 算法能力

熟练掌握计算机视觉&机器学习的基本方法(这里所说的是可以手推公式,例如:决策树、临近取样、支持向量机、神经网络算法、回归、聚类等。同时要熟练掌握TensorFlow、Keras、PyTorch等框架,TensorFlow可能入门有点难,可以PyTorch)

资料请自取哦:

推荐书籍:《机器学习》

机器学习算法实现:https://github.com/lawlite19/MachineLearning_Python

推荐视频:李宏毅机器学习

算法面试经验:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese

算法工程师面试常见问题:https://github.com/PPshrimpGo/AIinterview

4.2.5 经验

有项目经历;比赛经历;实习经历

对于在校生,项目经历要熟知你自己的方向,平常可以多了解实验室其他同门的项目,关键时刻懂点,总比不懂要好。比赛可以参加:kaggale或者一些大厂的比赛,当然得取得名次,要不然写出来,也体现不了能力。实习的话每年三月份会有很多实习,大家可以关注一些公众号,获取实习信息,对于实习尽量去大厂,能为你的招聘增分不少哦。

4.2.6 团队合作能力

这个对于在校生,可以说自己组织什么样的活动,或者参与项目时,怎么与他人合作。

4.2.7 加分项

需要平时自己积累了,github、博客,能为你增分的。而且最近越发的重要了。大家可以平常的笔记注意整理。

写在最后,当大家有这些基础条件后,可能就需要去面试了。分享一些面试经验。

  1. 面试通过=50%实力+30%运气+20%技巧。你能掌握70%的主动,剩下的交给运气。
  2. 首先要告诉自己,这不是一场面试,而是一场与自己未来同事之间的交流探讨。尽量消除紧张心理,完全不紧张也是不可能的,但是还是要尽可能稳下来。面试过程中尽量幽默,能做到和面试官谈笑风生你就赢了。在脉脉上看到的有人说做了面试官之后才发现其实你技术差不多就行,决定你过不过的就是看你顺不顺眼,所以最好能让面试官在短短几十分钟里喜欢上你!如果你实在很害怕,给你个经验之谈,首先找一些小一点的公司,会对各方面要求低一些,去练习面试,多练,就能消除你的紧张感,尤其当你收到offer后,会越来越自信的。(如果一点经验没有推荐看这个:Offer拿到手软——史上最良心的校招求职攻略:https://space.bilibili.com/17320304?spm_id_from=333.788.b_765f7570696e666f.2)
  3. 一个良好的开头、一个高潮加一个完美的结尾。开头是自我介绍,怎么吸引面试官去问你最擅长的问题。进入你擅长的领域,争取给面试官一个惊艳的表现。同时如何结束面试一样很重要,这个可能需要自己不断练,全程记得要礼貌。
  4. 电话面试的话要注意语速吐字,现场面试也要注意语速,可以用在草稿纸上写一写的方式帮助解释。
  5. 面试中遇到没理解的问题要尽可能与面试官沟通,说不定他就在考你的沟通能力呢。
  6. 在面试中遇到不会的或者完全不会的问题要在面试之前想好策略。我的策略一般是允许自己对于最多两个问题直接说我不会,此策略一般是对于自己完全没有把握的问题,让面试官换另一个问题。如果你强答这个题的话只能是勉勉强强的回答一下。在一场面试中有1,2个问题说不会的没有多大问题,但是对于其他的问题要尽量做到完美作答,这样才有把握。
  7. 关于HR面,尽量提前查一下公司的文化是什么,表现的自己很向往并且符合这种文化就好。千万不要太个性。希望大家找到一个完美工作。

欢迎关注公众号:计算机视觉life,一起探索计算机视觉新世界~