我本身是专家岗,也参与过不少的技术专家面试。在写这篇文章前,以免有偏颇,特地向阿里和360的两位负责专家岗面试的小伙伴求证他们的看法。

虽然我们三个方向不同(Android、java、前端),但面试套路却基本相同。

要想成为专家,必须先通过面试!

今天我们就从面试角度来分析程序员专家岗具体需要哪方面的能力,希望对小伙伴们有所帮助。

记得帮我点赞哦。

一、什么才是专家岗最重要的能力

在我的读者中有不少技术能力很优秀的朋友,跳槽面试专家岗的小伙伴想必也不在少数。

专家岗面试会问很多问题,但究竟是什么能力让我们通过了专家岗面试?

解决问题的能力!

但凡参加过专家岗面试的同学,应该会有个经验,开场很友好。一般从我们做过的项目开始问,慢慢地有点招架不住了,问的问题太深了!

专家面试喜欢问源码、问框架,这是所有专家岗面试同学最大感触。

为什么?

知己知彼,才能百战不殆。

写代码也是一样的。

我们只有深入理解原理,知道我们所用的框架、组件,究竟是怎么设计出来的,才能在他们出问题的时候,找到究竟是哪里出了问题并将它们修复。

普通程序员,只知道调用网络框架的一个功能就能实现网络通信的功能,但是突然有一天,当我们想增加重试次数来定制重连方案的时候,很多小伙伴会因为框架没有提供类似的接口而手足无措。

这就是专家岗和普通岗的最大区别!专家能够深入原理、源码,当它不支持哪个能力的时候,就改动源码让它支持,而普通岗的同学,只会调用函数。


学Android的同学,应该听说过Lottie动画框架。这个框架比较厉害,它能够将AE动画,直接转化成json文件,在写APP的时候,直接使用Lottie框架加载这个json文件就能实现动画效果。


在2019年,我发现这个框架的时候,就想把他推给整个公司的所有项目使用。

但在推动的时候就出问题了,一方面因为是需要通过AE将转成json文件,所以,首先要求有人懂AE,以判定转化的json文件如果有问题,要如何修改。

另一方面,负责在APP中加载json文件的lottie框架,还不成熟。甚至有些效果存在bug,需要解读并修改源码。

刚开始根本推不动,没人愿意去尝试一个看不到前景的技术,而且要修复bug,学习AE,何其难。

他们不愿意研究,就我来帮他们研究,他们有bug解不了,就我来帮他们解。

业余时间学了两个月AE,通读了lottie源码,把整个链路搞清楚,把源码中存在的问题进行修复,最终在公司内部面向所有的开发、UI、交互做了一场Lottie培训。

在面向全公司培训Lottie的那一刻,真爽。


养兵千日,用兵一时。在绝大部分的公司,框架都是已经定型的,没那么多重构、改造的工作要做,招专家岗的主要目的,就是为了以防万一,哪天出了疑难杂症,有人能顶上。

所以,解决问题的能力是专家岗最基本、最重要的能力。

二、怎样才能提升解决问题的能力

要能够解决问题,我们就需要深入源码、深入框架,了解他们的原理,能够耐得住寂寞,沉得下心来钻研。

入门知识遍地抄,深入起来啥没有!

这一点小伙伴们应该都有经验,初级的知识点,一搜一堆,你抄我的,我抄你的。但真正深入起来,毛都找不到!

我在学习自定义控件的时候,网上根本没什么文章,甚至连什么是canvas都讲不清楚。

怎么办?

reading the fucking source code !!!

所有的奥秘,都藏在源码里。

Android自定义控件的系列博客,我写了四十多篇文章,参考别人的文章特别有限,绝大部分都是我自己的理解,有些名词都是我自己造的。

到现在,市面上也只有两本Android自定义控件的书,都是我写的。

文章写了三年了,有关自定义控件的知识,还是我研究的那些。看似自定义控件的文章遍地飞,其实都是从我那里抄的,很多案例都是直接照搬。

甚至有小伙伴跟我说,他们老师上课用的ppt,都是用我文章的精简版。

攀登高峰必然是艰难的,有时候网上的资料非常有限,想要深入研究,就只能耐得住寂寞,自己钻研。

这是专家岗的必经之路。


这里推荐大家我的两篇文章,希望能帮到大家。

对于初级和中级的小伙伴,建议到网上找些视频来学一学,那种入门、进阶、实战一套的,也有进阶系列课,可以到某鱼上去买,我也搜集好了,也可以直接去下
另外程序员在职场早期尽量进大厂蓄能,这样积累一定实力之后职场发展会非常轻松。

要想进大厂先从刷算法做起是个好方法,算法厉害的人进大厂非常容易,这里送一本Google大神撰写的算法刷题笔记:

三、锦上添花

如果说解决问题的能力是通过面试的基本条件,那下面的这些,就是锦上添花的作用了。

有时候,你的一个动作就能让别人就觉得,woc,这个牛逼!

就像精通雕花的厨师,并不一定是好厨师。但精湛的雕花技艺绝对能忽悠住一群憨批。


而下面这些就是能让我们在形式上给别人这种感觉的方法。

1. 精通代码调试(debug)

很多人在写代码的过程中,经常会有的一个问题就是:为什么我写出来的代码不能运行?为什么运行的结果不是我想要的?

几乎所有的程序员写代码都不是一遍就能写好的。但是顶尖的程序员非常快的就明白自己代码的问题可能是什么。这是一个很重要的能力,但是偏偏学校里不教,面试的时候考官也不经常提及。

对于顶尖程序员来说,这个过程在脑海中就是电光火石的一瞬间。只要你解决的问题足够多,你做出来的猜测就会越准确。

2. 重视能够节约时间的工具

最近打败人类的AlphaGo每天可以进行上百万局的下棋训练,我们人类一万个小时的训练却需要10年之久。也就是说,电脑运行几分钟,可能就等于人类工作好几年。

学习利用工具为我们节约时间,这是非常重要的。有次,我被邀请到大学里给同学们讲课,有个同学,非常骄傲的说,我能直接用txt文档写网页。

牛逼吗?牛逼

但这真的有意义吗?

有时候,在IDE上几个快捷键就能生成几十行代码。而你用txt敲得再快,也得要几分钟。

把时间用在刀刃上,刀刃就是深入源码、提升自己解决问题的能力!

3.向上管理的能力

在职场上,会哭的孩子有奶吃,是有道理的。

一味的沉着于干活,不能把自己的功劳表现给自己的上级,等于没干。

向上管理的艺术,不是要求我们唯命是从,而是把领导做为支持者,向他要资源、要权力,以达到我们在项目上的成绩,同时想办法让领导认同我们的成绩的本领。

推荐大家一本书吧,蒋巍巍《向上管理—如何正确地汇报工作》,这本书是我带大学生时的职场第一本书籍。

我所有文章都是原创,写一篇文章有时需要一两个周的时间,真诚的希望帮到你的小伙伴能帮我点个赞,非常感谢。我们下篇文章见。

如果能顺带给个关注,就更感谢啦,嘿嘿

@启舰

————————

本人所有文章皆为原创,都与版权保护平台有合作,著作权归启舰所有,未经授权,转载必究!

文章来源于互联网:高级程序员和普通程序员有哪些区别?

发表评论