菜鸟程序员的超神之路 -- 面试成功之道

近几年在鹅厂也算面试过不下 100 名的初级与中级程序员了,虽然他们背景不同性格迥异,甚至连面试岗位的要求也有差别,然而,成功通过者就没有共同点了吗? 2018-04-03 17:08:08 程序员技能面试 分布式锁的多种实现方式 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。 2018-04-03 16:24:34 分布式锁方式 扒一扒那些和编程语言无关的技术 “负载均衡,分布式,集群,高可用......” 这些“高深”的技术在日常Coding也不常用, 略过不谈,主要扒一扒工程中常用的、编程语言无关的具体技术。 2018-04-03 15:42:40 编程语言技术 单例模式实现的7种套路,你知道几个? Java中单例(Singleton)模式是一种广泛使用的设计模式。为了协调系统整体的行为,一些管理器和控制器常被设计成单例模式。 2018-04-03 15:38:07 Java单例模式模式设计 利用Python实现卷积神经网络的可视化 本文简单说明了CNN模型可视化的重要性,以及介绍了一些可视化CNN网络模型的方法,希望对读者有所帮助,使其能够在后续深度学习应用中构建更好的模型。 2018-04-03 14:42:46 Python神经网络深度学习 Java提高篇——对象克隆(复制) 实现对象克隆有两种方式:实现Cloneable接口并重写Object类中的clone()方法;实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

近几年在鹅厂也算面试过不下 100 名的初级与中级程序员了,虽然他们背景不同性格迥异,甚至连面试岗位的要求也有差别,然而,成功通过者就没有共同点了吗?

一年前我写过菜鸟程序员的超神之路 – 从校园到职场,承蒙不弃也从知乎骗了将近 300 赞,拖更一年姗姗来迟带来了超神系列的第二篇,算是补个前传。

[[224854]]

  近几年在鹅厂也算面试过不下 100 名的初级与中级程序员了,虽然他们背景不同性格迥异,甚至连面试岗位的要求也有差别,然而,成功通过者就没有共同点了吗?当然有,我总结为以下四点:对工作经历的充分掌控、对对知识的灵活理解、对问题的主动推进、对挑战的好奇进取。

  以下分点举例说明。

  对工作经历的充分掌控

小H是我的一名前同事兼好友,现在在某家云主机厂商负责业务安全策略,工作之中用到了大数据分析,但模型以入门级别为主(例如逻辑回归);小H一直希望脱离「策略」的范畴迈向「算法」的世界,但是一直觉得现在的工作经历过分偏重业务而非算法,出去面试心底有点发虚。当我和小H聊到他们近期做的一个入侵检测业务,我说这就是一个典型的 RNN(递归神经网络)和 LSTM(长短期记忆模型、RNN 的变种)的落地场景,为什么不去试试呢?

  对工作经历的掌控能力好的面试者,首先散发着由内而外的自信心。这种自信心并不是无根之木(也面试过对互联网数研岗位缺乏认识却自信爆棚的跨行业求职者,无一例外悲剧),它来源于:

  1. 能够清晰定义问题。比如讲明白文本相似度模型是用来解决话题聚合不收敛的问题,而不是一上场就 balabala 算法有多酷炫。
  2. 能够独立思考路径。比如引入条件随机场是因为它有助于词与词之间的前后关系映射,而不是微博大V刘知远说过这是最好的方法。
  3. 能够明确问题瓶颈。比如 SVM(支持向量机)面对大规模数据集的训练效率问题会是瓶颈,能提到这点两眼放光就基本上没问题了,再想到与 MapReduce 的结合更是加分项。
  4. 能够尝试潜在路径。刚才小H就显然是个反面案例,哪怕神经网络并不在当前场景下最优,起码对前沿的方法的积极应用会让面试官给你的探索精神打个高分。没有 low 的业务,只有 low 的方法论和执行力

  对知识的灵活理解

小U算是在校学生当中机器学习知识较为扎实的那种了,无论是传统的机器学习还是新潮的深度学习,各种概念都是手到擒来。直到我问了一个看似简单的送命题:ROC 和 AUC 分别是什么意思?趁着他再一次精准无误的命中答案,我又抛出了第二个问题,ROC 和 AUC 相对于其他指标有什么区别?这时我能感觉到轻微的卡壳,那么我又抛出第三个问题,既然有准确率、召回率、F1 Score 等指标描述一个模型的好坏,为什么还需要 ROC 或 AUC?这时我开始发现小U开始顾左右而言他了。

  工作和学习之间最明显的区别就是,单纯掌握知识并不形成生产力,知识只有与实践结合才能有所用处。对知识的灵活理解,意味着当你面对一个具体的问题,你能自发与那些飘在天际的理论相互印证,然后大呼一声,哦,原来如此!所以在面试的准备环节,各个知识点最好都能通过实践印证一遍,哪怕只是一个很小的场景,关键是将知识与实践打通。

  对问题的主动推进

  算法工程师这个岗位的特殊之处就在于,既不像埋首于论文堆的研究员也不像流连于代码架构的开发工程师,相比之下更加强调将前沿算法与业务场景灵活结合的能力。

小G是极少的让我给出S评价的面试者。让我印象尤为深刻的是,小G作为某大厂一个入职不到两个月的新人实习生,负责一个通用分类组件的构建,实际承担的也是执行而非主导的角色,但却对该组件的业务需求和应用痛点了若指掌,甚至对每一痛点对应的算法优化方向也都提出了自己的见解。

  当我问小G为什么能在这么短的时间内积累到这么深入的业务认识,小G的回答是这样的:如果只是闷头优化算法而对业务需求不管不顾,那么哪怕算法做得再精美绝伦也不会产生任何的业务价值。所以他会利用一切正式和不正式的沟通机会去了解业务方的痛点,真正做到以终为始(参见高效能人士的七个习惯),结合业务需求给出算法优化方向的建议(注意,是建议而已)。

  对问题的主动推进能力一直是我最为关注的软技能。优秀的团队总是那些每个人都有可能成为发动机的团队,我真心盼望能多招几个发动机。

  对挑战的好奇进取

X是三年前面试过的一位社招候选人,当时给的无论算法能力还是开发能力评价都是优秀,但是最后我却加了一个问号。这个问号来自于当我问他是否有什么问题要问我时,X表示没有问题。当我不厌其烦给他介绍我们团队的业务范围以及待解决问题之后,我发现X也没有任何的兴奋感,只有一些客套的应对。

Y是同一时间面试的毕业生,由于我的惯例是会给面试者抛出一道海量数据排序的题目,要求直接在白纸上裸写代码。Y由于编程经验严重不足,这个环节显然难以完成,但是Y没有畏难情绪,通过提问和思考把问题一步步抽丝剥茧,最终在白纸上画出了解决问题的流程图。

  最终我们给X和Y同时发了 offer,结局却有所不同:Y持续超出我们的预期,并取得了最高的考核绩效;X因为试用期表现低于预期只能让他遗憾离开了团队。这其实是三年以上工作经验候选人的普遍通病,就是容易被重复的工作磨平了好奇心和进取心,甘于去做一颗做普通的螺丝钉。而这种好奇与进取恰恰就是在职场能持续进步的根源,而反映到面试之中,就是:

  • Tips A:如果你真的对一个岗位感兴趣,你就该通过一切渠道去了解公司、团队以及团队里的每个成员
  • Tips B:面试不等同于考试,遇到挑战不要站在问题的角度,而是应该站在你的角度,想你有什么方法和资源去解决问题

  外界许多教新手程序员面试的攻略总是聚焦于基础和技能,但我想能从优秀的人之上再脱颖而出的,是一个人发自内心的爆发力,是一个人对待万事万物的方法论。希望以上的面试之道,能对你们有所启发。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月5日 03:09
下一篇 2023年5月5日 03:09

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信