姓名:肖健
学校:华中科技大学(硕士)
知乎:https://www.zhihu.com/people/jian-xiao-69/about
邮箱:charlesxiao2030@outlook.com
offer:百度sp,美团sp,华为sp...
面试其实在九月底就基本结束了,一直在忙一些其它的事情。最近看到牛客推出的访谈栏目,感觉非常不错,也想着能贡献自己的一些微薄经验,希望后来的学弟学妹们能少走点弯路,强撸之下完成了这篇yy贴。
ps: 因为我个人资质中庸,编程能力也很普通,所以我想我的经验应该比较具备普适性吧,大家应该会比我做的更好。
跟你聊聊机器学习的求职攻略
跟你聊聊机器学习的求职攻略
所谓笨鸟先飞,我制定了个半年计划来打怪升级,大致可分三块:编程基础,机器学习理论,实战。
(大神们就不要往下看了,都是些粗浅的东西)
一。编程基础
编程基础这块我其实没啥发言权,牛客上随便找一个估计都比我厉害不少。
因为本身非计算机出身,大二学完数据结构基本就没看过这块,平时主要放在看论文划水上了,编程相当于是我最弱的一块。(网易,头条,滴滴笔试都跪了),所以编程不错的牛牛们请忽略这块。
一句话概括:套路+总结
我的策略非常简单粗暴,两样工具:leetcode,剑指offer(面试coding题基本来源这两块)。刷题也要讲究些策略,刚开始,刷了几天我就受不了了,感觉真tm枯燥,然后一顿胡思乱想胡搅蛮缠无理取闹之后,有了如下的套路。
一. 先对题目分类,比如:数组/链表/二叉树等(leetcode有对应的分类,很贴心)。 二. 对于每一类,总结出基本的模块(每一类问题都会存在一些简单模块,复杂题基本都可以猜解为这些简单模块的叠加) 三. 按照上述的由各分类到各子模块对应写总结做笔记(推荐gitbook,支持markdown,格式简洁美观)
举个例子,比如链表:
Reorder List这道题我们可以很清晰的猜解为三个模块,链表中间节点,链表反转,链表合并。写起来也是得心应手,一气呵成。
void reorderList(ListNode* head) {
if (head == nullptr || head->next == nullptr) return;
// 链表中间节点
ListNode *fast = head->next, *slow = head;
while (fast != nullptr && fast->next != nullptr) {
fast = fast->next->next;
slow = slow->next;
}
// 对称分割为两部分
ListNode *cur = slow->next;
ListNode *prev = nullptr;
slow->next = nullptr;
// 反转链表后半段
while (cur != nullptr) {
ListNode *tmp = cur->next;
cur->next = prev;
prev = cur;
cur = tmp;
}
// Reorder
while (prev != nullptr) {
ListNode *tmp = prev;
prev = prev->next;
// 插入节点
tmp->next = head->next;
head->next = tmp;
head = tmp->next;
}
}
嗯,酸爽。
二.机器学习理论
关于理论这块我觉得一开始上手就看李航的学习方法不太好,刚入门的话,Andrew Ng的视频还是非常不错的,但是只能算是开胃菜,两到三周看完比较合适,每课都应该做笔记写总结(不写总结的学习就是耍流氓!)。这一步要快,要猛。
看完算是有了些许的概念,整体上还是比较弱的。接下来推荐重点看林轩田的机器学习基石和机器学习技法,总共三十二课,每一课都相当精彩,细致学下来需要三个月,我指的是细致的看,每一课都应该写笔记,梳理脉络,强烈建议做笔记。
踏踏实实看完,面试中让你推个svm讲讲adboost,gbdt原理基本就是手到擒来,再辅以李航的统计学习方法和周志华的西瓜书查漏补缺,基础就算比较扎实了。
当然这一块可能会有些枯燥,但林轩田老师讲的真的是非常精彩了,强烈安利,做笔记很重要,在强调遍。
三.实战篇
没经过实战,不能算会机器学习,理论学的好也只是提供的一个基本保障。没玩过数据,拼过指标的人是很难融入工业界的。
举个最简单的例子,在工业界逻辑回归用的是非常广泛的,你会想,为啥要用这么简单的模型,我们有那么多理论上更叼的模型为啥用这个?
模型是有适用性的,用什么模型更多取决与我们的数据。比如在推荐系统里面,随随便便做几个特征交叉,做下one hot encoding,维度就是几万,几十万维,ctr预估里面更是可以达到上亿的特征,而且这些特征是高度稀疏的,几万维特征可能只有几十维是非零的,这时候使用Random Forest 和 GBDT 这样的模型结果很可能根本拼不过 LR。
LR及其衍生算法FM,FFM在处理这种高维离散特征是有先天优势的。这样一些经验我们需要在实战中积累。
kaggle里面的比赛比较适合新人入门,氛围比较好,每个比赛有对应的论坛,时不时有人会发布自己的代码,大家集思广益一起讨论,可以学到很多。国内的比赛大多会封闭些,讨论很少,不利于新人上手。
一. 所以实战第一块就是完整跟踪kaggle上的一个比赛,因为有些比赛数据量很大,大家根据自己现有的机器配置选择合适的比赛参加,8g内存是最低的配置了。
(打比赛的话python党强烈安利《利用python进行数据分析》这本书,pandas大法好)。
二. 第二块着重于实现常用算法,svm/kmeans/LR/FM等,这一块可以作为简历亮点,去工业界毕竟是要码代码的,前面刷的题也不能白刷,所以这块可以强烈提升自信,网上有很多开源实现可以参考,写完会爱上c++。
PS:这三块应该是并行操作的,同时上,分配好时间。
以上就是我的一些粗浅经验,希望对大家有帮助,另外本人常年混迹知乎
(Charles Xiao),求粉,有问题可以随时私信我。本周内在本帖下面回复即可、
目前拿到百度sp,美团sp,华为sp,基本都是比较高的sp
【访谈规则】对于访谈你可以问任何跟话题有关的问题,要求必须在帖子下面留言,嘉宾会在一周内逐一回答
栏目介绍
牛客访谈:是牛客网推出的新栏目,每周邀请一个嘉宾来分享经验并和大家交流,针对固定的话题,大家可以随意提问(在本帖下),嘉宾会载一周内逐一回答跟话题有关的所有问题。
关于牛客访谈栏目如果你有什么好的建议欢迎私信牛妹,一经采纳,会有礼物相赠哦~
如果你想报名本栏目的嘉宾,请私信牛妹或者加qq:1037532015进行报名哦
牛客访谈嘉宾招募中:http://www.nowcoder.com/discuss/15333
牛客网—程序员必备求职神器
长按二维码,把IT笔试面试题库装进口袋
点击下方 阅读原文 查看原文