0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一名算法工程师的学习经验和求职经验

工程师人生 来源:工程师吴畏 2019-08-19 15:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天已经是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的判断,运用什么算法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法工程师
    +关注

    关注

    2

    文章

    31

    浏览量

    6358
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux服务器性能调优的核心技巧和实战经验

    如果你正在为这些问题头疼,那么这篇文章就是为你准备的!作为一名拥有10年经验的运维工程师,我将毫无保留地分享Linux服务器性能调优的核心技巧和实战经验
    的头像 发表于 08-27 14:36 718次阅读

    作为一名PCB质检工程师,我为什么在用手持式面铜测试仪?

    在PCB行业,铜厚直是决定阻抗、散热与可靠性的关键指标。过去,工程师把板子搬到实验室、等待台式铜厚仪出结果;作为一名PCB质检工程师,如今,我更愿意把“实验室”揣进口袋——手持式面铜
    发表于 08-11 11:59

    工程师避坑指南:减少PCBA返工的实用经验

    在PCBA(Printed Circuit Board Assembly)加工过程中,“返工”是工程师并不陌生却总想避开的词。返工不仅意味着时间延误和额外成本,更可能对焊点可靠性、产品致性甚至
    的头像 发表于 04-30 16:42 505次阅读

    如何成为一名合格的KaihongOS南向驱动开发工程师

    如何成为一名合格的南向驱动开发工程师 1. 我需要具备哪些方面的知识? KaihongOS南向适配的方向分为:驱动开发、内核开发。根据适配方向划分,需要掌握的知识技能分别为: 驱动开发
    发表于 04-23 08:02

    如何成为一名合格的KaihongOS北向应用开发工程师

    如何成为一名合格的北向应用开发工程师 在快速发展的软件开发领域,北向应用开发工程师个专注于系统级应用开发的高需求职位。 以下是成为
    发表于 04-23 06:46

    工程师经验分享:社区之星 赵云 沉着稳定才能做好技术

    控制算法理论和实践有过推导和大量的研发调试经验。   工作经历: 华为技术有限公司---芯片验证工程师 上海问问网络科技有限公司---电机驱动软件工程师       社区访谈: 社区小
    的头像 发表于 04-15 15:58 988次阅读
    <b class='flag-5'>工程师</b><b class='flag-5'>经验</b>分享:社区之星  赵云 沉着稳定才能做好技术

    如何成为一名嵌入式软件工程师

    如何成为一名嵌入式软件工程师? 01明确岗位的角色与定位 嵌入式软件工程师主要负责开发运行在特定硬件平台上的软件,这些软件通常与硬件紧密集成,以实现特定的功能。 不仅需要精通编程语言(如C/C++
    发表于 04-15 14:37

    如何成为嵌入式开发工程师

    ,参加相关的研讨会和培训课程,阅读专业书籍和论文。 9. 认证和网络:- 考虑获取相关认证,这可以增加你的市场竞争力。- 加入专业组织和在线社区,扩展你的人际网络。 通过上述步骤的学习和实践,你可以逐步成长为一名合格的嵌入式开发工程师
    发表于 02-19 10:39

    电子工程师的电源设计经验分享

    作为一名电子工程师,电源设计直是我在工作中重点关注的领域。电源设计不仅需要扎实的理论基础,还需要丰富的实践经验。以下是我多年工作中总结的
    的头像 发表于 01-21 15:53 881次阅读

    电子工程师的PCB设计经验

    本文分享了电子工程师在PCB设计方面的经验,包括PCB布局、布线、电磁兼容性优化等内容,旨在帮助初学者掌握PCB设计的关键技术。
    的头像 发表于 01-21 15:15 2305次阅读

    电子工程师的电源设计经验

    本文分享了电子工程师在电源设计方面的经验,包括电源电路的设计要点、电源管理芯片的选择、电源完整性优化等内容,旨在帮助初学者掌握电源设计的关键技术。
    的头像 发表于 01-21 15:14 831次阅读

    电子工程师的电路设计经验分享

    本文分享了电子工程师在电路设计方面的丰富经验,包括项目开发步骤、电路设计核心思想、元器件选择与优化等内容,旨在帮助初学者快速提升电路设计能力。
    的头像 发表于 01-21 15:13 1211次阅读

    电子工程师经验分享

    电子工程师在实际工作中积累了丰富的经验,这些经验对于新手工程师和电子专业的学生具有重要的参考价值。 、电路设计
    的头像 发表于 01-14 10:14 1061次阅读

    如何成为一名合格的北向应用开发工程师

    在快速发展的软件开发领域,北向应用开发工程师个专注于系统级应用开发的高需求职位。 以下是成为一名合格的KaihongOS北向应用开发工程师
    发表于 01-10 10:00

    KiCon 演讲回顾(十三):嵌入工程师的硬件梦之 KiCad 经验和项目分享

    “  在KiCon Asia 2024,我们有幸听到了@IAMLIUBO 的分享——嵌入式工程师的硬件梦之KiCad经验分享。   ” 以下是完整演讲视频: 为什么选择KiCad? 跨平台支持
    的头像 发表于 12-09 01:02 1025次阅读
    KiCon 演讲回顾(十三):嵌入<b class='flag-5'>工程师</b>的硬件梦之 KiCad <b class='flag-5'>经验</b>和项目分享