算法学习与求职经验

作者: 6b440373157d | 来源:发表于2018-04-04 09:18 被阅读790次

    今天已经是11月初了,找工作的阶段已经进入尾声。回想这半年的时间,充满苦涩与艰辛,有幸拿到了几个offer,腾讯和滴滴的SP,还有百度和华为的offer,秋招之路也画上了一个圆满的句号。下面分享一下自己这两年的学习与近半年的求职路上的一些经验与心得,供后来人参考,不一定是最好的方法,但是大家可以借鉴一下,结合自身情况,找出最适合自己的方法。

    先说一下楼主的情况,本科普通一本,硕士西南985。研究生期间走上了机器学习算法学习之路。参加过天池几个比赛,拿到的成绩一般,有几个前20的比赛。本篇文章我只想把我学习与求职路上最干货的东西分享给大家,那些很细致的学习路线或者求职面经有很多大神已经分享啦,大家可以去看一看~~~。

    写在前面的话:你是否真的决定走算法这条路。

    我当时想法很简单,确实认为算法,AI(机器学习,深度学习)这方面以后会有前途,也结合自身情况觉得可以去学一学,当真正走在路上时发现困难重重,曾经一度认为自己是不是不适合算法,但是没有后悔,也没有放弃,最后的结果还不错。

    但是在今天这一个时间节点上,很多人都想学算法,找算法的工作,我们就要重新审视这一个问题了,你真的适合吗,你真的有能力做到全国竞争者中的前百分之一吗。

    如果对自己有信心,也觉得自己很有执行力,并且能拿出每天8小时,持续12个月以上的学习时间,那就去做。但是我们不得不承认的一个事实就是现在想做算法的人实在太多,未来一段时间各个公司能给出算法岗位HC至少不会比今年少,但是竞争人数会呈爆炸式增长,所以竞争必然会增大。

    以下的部分分为两个部分:学习与求职路上的心得和经验以及踩过

    学习心得和经验

    一、理论知识要扎实

    既然是走算法之路,最基本的算法理论都必须要熟悉,最常见的要做到如数家珍。常见的分类,聚类,优化算法,深度学习等等的算法最好能推导(要想面试表现做到前百分之一必须要会推导,是加分项)。

    要融会贯通,对这些算法有自己的理解,面试的时候能说出自己与某某算法的一些心得和理解。比如面试官让你讲讲XGB原理和优缺点,你可以对比着GBDT或者LightGBM讲,说说自己在使用的时候有什么trick。另外的算法就是数据结构算法要掌握常见的题目。

    这部分也可以作为coding能力考查,最基本是看完《剑指offer》,《leetcode》,自己练习的时候可以手写练一下,最后要达到能熟练手写的程度。推荐在牛客网上的在线编程刷题,有精力的可以再看看《编程之美》和《程序员面试宝典》的内容。

    二、coding能力要过关

    算法的同学coding能力是在面试中必须要考察的。所以自己的coding能力必须多练练,推荐在牛客网的在线编程多多敲代码。掌握类似leetcode medium程度的题目就可以了,hard程度的可以不用掌握。

    面试中一般会出几道题目,要求手写,能顺利写出的都是加分项。语言要掌握一大两小三门语言,大语言是Java或者Cpp,小语言掌握python,SQL。有时间精力可以将常见的算法用python实现一下。

    语言不必掌握很深,但是要做到能熟练用Python或者SQL处理数据,算法用Python也要掌握差不多。对于大语言来说基本语法和一些基本概念都要熟练掌握。

    三、项目比赛经历

    单单有理论的code能力是不够的,最好能参加一两个有含金量的比赛或者项目,尽力做一做,拿一个好名次,拿不到的话也要根据前几名队伍的答辩思路好好总结一下,用到什么算法,自己在项目比赛中负责什么工作,有什么创新点,自己有什么收获等等,一定要好好总结,因为这可能是面试官和你聊的最多的东西,所以提前一定要下功夫总结整理好。

    四、实际工程trick

    虽然我们都是在校生,但是面试官可能会问我们他在工作中遇到的实际工程问题,所以这部分也需要我们去提前了解学习,最好的方法就是看别人的面经进行总结,下面我也会贴出自己遇到的问题,供大家参考。

    五、所谓的智力题

    这部分的问题最不好准备,常见的一些问题可以准备一下,但是不常见的问题就靠自己临场发挥了,不过大家在平时多多留意一下。

    求职心得和经验

    一、关于每年3,4月份的实习

    楼主在这个期间只投了阿里,在最后的HR面之后被挂。虽然没去实习,但是在这4-5场的面试中学习到很多。技术面一开始也很紧张,慢慢的查找自己的漏洞,然后在后面查漏补缺。所以推荐大家在3,4月份去投着试一试,虽然可能当时的能力达不到公司要求,但是可以去增长一下经验。

    二、简历

    简历最好一页,将最能代表自己能力的写清楚,最好简洁扼要。自己获得的奖励最好都写上,但是尽量写与岗位和公司match的,如获得天池名次,国奖之类的。马拉松获得第几之类的就可以不写。

    三、面试技巧

    1. 面试通过=50%实力+30%运气+20%技巧。

    2. 首先要告诉自己,这不是一场面试,而是一场与自己未来同事之间的交流探讨。尽量消除紧张心理,完全不紧张也是不可能的,但是还是要尽可能稳下来。面试过程中尽量幽默,能做到和面试官谈笑风生你就赢了。

    在脉脉上看到的有人说做了面试官之后才发现其实你技术差不多就行,决定你过不过的就是看你顺不顺眼,所以最好能让面试官在短短几十分钟里喜欢上你!

    3. 在准备面试的时候看过一个公众号的文章,文章意思就是比如你的实力是80,那么你在面试中的表现一般是在60-100之间,如果你整场面试都表现平平,那么面试官对你的评分可能是60-80,但是如果你偶尔有一两个问题没回答好,但是另外的一两个问题答的很完美,那么你很可能就是80-100分。面试官最后决定录不录用此人,更大程度上是根据面试者的最佳表现和结束时表现。所以要反复演练自己的最佳亮点和如何结束面试。

    4. 电话面试的话要注意语速吐字,现场面试也要注意语速,可以用在草稿纸上写一写的方式帮助解释。

    5. 面试中遇到没理解的问题要尽可能与面试官沟通,说不定他就在考你的沟通能力呢。

    6. 在面试中遇到不会的或者完全不会的问题要在面试之前想好策略。我的策略一般是允许自己对于最多两个问题直接说我不会,此策略一般是对于自己完全没有把握的问题,让面试官换另一个问题。如果你强答这个题的话只能是勉勉强强的回答一下。在一场面试中有1,2个问题说不会的没有多大问题,但是对于其他的问题要尽量做到完美作答,这样才有把握。

    7. 关于HR面,楼主在面阿里实习生是第一次HR面,当时聊的比较嗨,挂了,事后想想应该是自己表现的太有个性和想法了,所以各位在HR面的时候尽量表现的老实规矩一点吧,这样最好。。。

    四、面试遇到的代表性问题

    1. 比赛项目展开的问题

    1.1 比赛中特征设计思路,为什么这么设计。

    1.2 模型融合有什么创新点,为什么这么做。

    1.3 针对大数据量,有什么处理方法,具体怎么做。

    1.4 业界开源的分布式训练框架。

    1.5 给出一个集群框架,每一个集群包括CPU,存储,时序等等变量,运用什么算法或者策略使得总的效率最高。

    1.6  对于某一个地区中的车辆和乘客怎样合理安排司机-乘客使得滴滴总的收益最大(主要考虑距离)。

    1.7  滴滴的拼车功能的拼车价怎么定,使用什么策略或者算法。

    2. 算法理论方面

    2.1 LR,SVM,KNN,GBDT,XGB推导,算法细节(LR为何是sigmod,理论推导出sigmod,KNN距离度量方式,XGBoost为什么要用二阶信息不用一阶,LR和SVM对比,GBDT和XGB和LightGBM对比)。

    2.2 CNN DNN RNN 细节以及相关问题(poll层,激活函数,梯度消失弥散问题,LSTM结构图,深度网络优势及缺点)。

    2.3 常见排序算法的复杂度和一些细节以及改进优化。

    2.4 树模型建模过程。

    2.5 特征选择方法。

    2.6 模型训练停止方法。

    2.7 正则化作用。

    2.8 模型效果评价指标。

    2.9 AUC理解和计算方法。

    2.10 Hadoop,Hive,Spark相关理论。

    2.11 L_BFGS,DFP推导。

    2.12 弱分类器组合成强分类器的理论证明。

    2.13 FM,FMM,Rank_SVM算法细节。

    2.14 map_reduce基本概念以及常见处理代码。

    2.15 过拟合的解决方法。

    2.16 各个损失函数之间区别。

    2.17 L1,L2正则化相关问题。

    3. Coding

    3.1 SQL查询相关业务题目。

    3.2 Java基础(GC,死锁,多线程,重载重写等)。

    3.3 Python基础(常见数据结构用法,类继承,内存管理)。

    3.4 Linux处理文本日志相关常见命令。

    3.5 给定n,螺旋打印矩阵。

    3.6 Z字形打印树。

    3.7 基础的数组,链表操作。

    3.8 大巴车求阴影(至今没明白什么意思)。

    3.9 在一个一维坐标轴中,给定 n 个线段起止点(ai,bi) (ai、bi 的取值在 double 范围内), 如何计算所有线段覆盖的总长度,请编程实现。

    3.10 .一个数组A[1,...,n](n≥3),满足A[1]≥A[2], A[n] ≥ A[n-1](第一个数比第二个数大,最后一个数比倒数第二个数大,其他位置不保证大小关系)。用最快的办法找到一个i, 满足A[i-1]≥A[i] ≤ A[i+1],并给复杂度。

    3.11 输入:两个等长的数组a,b (a、b元素都不小于0),每次可对a数组做如下两种改动中的一种

    1)选取a数组中任意一个元素,将其值增加1;

    2)将a数组中任取若干个元素,将其值都乘以2;

    输出:最少需要操作次数,将a数组转化成和b数组完全一样;如果做不到,输出-1,请编程实现。

    3.12 数组里面连续值的和为S的区间,给出边界。

    4. 智力题/开放题

    4.1 淘宝有1亿总量的商品数量,你作为一个用户通过什么办法得到京东的商品总量。

    4.2  连续递增的数据,拿出两个,打乱顺序,求拿出的两个。

    4.3  n个人围城一圈握手问题,不能交叉,不能落单,求一共有多少种握手数目(卡特兰数推导)。

    4.4  54张扑克,抽去大小王,均分给4个人,问红桃A和黑桃A在同一个人手中的概率。

    4.5  对于一个query,”时效性” query的判断,运用什么算法。

    5.  计算机网络,操作系统

    5.1 TCP三次握手,四次挥手等细节。

    5.2  5层,7层网络相关问题。

    作者:xiaobaichao

    本文来源于牛客网

    ——————————

    牛客网(www.nowcoder.com)

    - 互联网名企笔试真题

    - 校招求职笔经&面经

    - 程序员求职实习信息

    - 程序员学习交流社区

    相关文章

      网友评论

      • bright1993:很棒的文章!想问下Hadoop,Hive,Spark相关理论这块需要了解哪些内容?可以参考哪些资料进行准备?谢谢~
      • 一步癫:没有说是不是科班的呃

      本文标题:算法学习与求职经验

      本文链接:https://www.haomeiwen.com/subject/ilmoxftx.html