什么样的工程师更受大公司的欢迎?

258 阅读9分钟
本文主要是大家问问题最多的一个作者也是Android 面试指南最资深的一位工程师给大家做的解答集合,本文依旧采取隐去提问者名称的方式。


一问 2 个比较具体的问题好了:

1.学习 kotlin 开发目前是不是有必要的,在面试时会加分吗?
2.移动开发与深度学习结合那些东西是可以实践一下的,求教求教?

1、微信当前在一些页面也在尝试使用kotlin,而面试是否会加分取决于你面试的公司以及你自身的工作年限。例如在微信对于工作三年以内的候选人,我们重点考察基本编程能力,使用何种语言并不是关键。

值得一提的是,在第一届Kotlin专题会议kotlinConf上宣布kotlin会同时支持iOS与Web开发,结合JW大神到Google大力推广kotlin,它的确解决了java开发的一些痛点,提升了开发的效率。所以说尽管目前仍存在一些问题,但是kotlin还是一个非常有前途的语言,可以在一些新的业务或者项目尝试使用。

2、深度学习AI目前是热点,应用场景也逐渐丰富起来。例如优图最近的图像还原项目,腾讯QQ空间超分辨率技术TSR:为用户节省3/4流量,处理效果和速度超谷歌RAISR 。Android 8.1提供了神经网络API,深度学习还是未来比较重要的方向,但是它真正入门与进阶的门槛还是比较高的。Rogue可以尝试使用tensorflow/caffe这些主流框架实现简单的相册分类,语义识别等应用。

二 想面个大厂,现在那面试官会更注重问哪方面呢?是算法还是那些框架原理?还是Android源码?还是看你做过的项目经验?问的那一方面偏多呢?

对于大公司来说,特别是工作3年内候选人,我们关心这个人当前能力的同时,更期待他的可塑性,即未来这个人可能达到什么样的高度。当然这不能一概而论,不同的公司面试的侧重点不太一样,跟面试官的个人喜好也有比较大的关系。建议可以找到相关的熟人,了解一下具体感兴趣的公司、职位的面试流程与侧重点。对于微信或者我个人来说,主要考察以下三点:

1、基础与算法;候选人是否可以写出高质量的代码,对于常用算法的熟悉情况与整个思维过程。对于T3以下的候选人基础与算法尤为关键。

2、项目经验;这一块主要挖掘候选人过去的工作情况,主要看这个人在过去项目中考虑是否深入、全面,是否有一些令人眼前一亮的点。一般来说,我们比较期待候选人有非常擅长的一个点,在这个点做过大量的工作与深入研究。

3、主动性;这里例如开源项目、文章积累还有对社区的一些贡献等。我们希望候选人在完成自己日常工作之外,可以主动承担更多的挑战,去做更多的尝试。

三.

3.1两个困惑

1、如果让我单独实现一个功能,而不参考别人的代码,感觉会无从下手,不知道该从何写起,该使用哪些组件、哪些API来完成这个功能。这一阶段要如何度过呢,很多人给的建议是多些代码,可写些什么代码呢?看视频教程和基础书籍这一步我已经做了,都是跟着作者一步步写,感觉如果单独让自己来实现还是困难。

2、第二个问题是关于职业规划的
我觉得Android开发者在技术上主要有以下几个方向:其一是在APP开发这个方向上不断进阶,不断学习应用层开发的各种技术,包括原生开发、ReactNative、前端技术等等,能够写出性能较好、UI酷炫的功能代码,然后结合某一业务方向,将来可以往产品经理这个方向发展;

其二是往Android底层发展,可以做系统的定制优化相关的工作,这方面对应用层的开发要求就不是特别大,而且可以专注底层,深入下去,不用再去学习前端、Reactnative等一系列新的开发方式,专注深度而不是广度。而且这一领域也可以结合相关业务,比如手机,或者对性能要求非常高的APP。

3.2答

首先刚毕业的学生来说,核心在于基础能力的锻炼,而且更加无需担心 Android 系统是否会被颠覆。在微信中,之前负责塞班平台的同事现在依然活跃于微信的很多核心岗位中。

对于第一个问题,事实上我也经常会遇到这种情况,写代码的时候也会忘记一些 API 的用法,记不清一些看过代码的具体实现方式。但是其实关键是我们能掌握学习的方式,即使是暂时忘记了一些细节,遇到类似的问题时解决的速度也会快很多。这里我的建议是除了多看,更重要的是真正的去实践,学会去用,去优化(不仅仅是star,更要学习pr)。

对于第二个问题,在微信,我们比较期待候选人是属于T型人才。即在某一方面钻研比较深,同时广度也不错。对于Android来说,虽然平台技术发展相对缓慢,但是大前端跟精细化的运营还有许多需要解决的问题。另一方面,Android与音视频、AR技术、AI的结合未来的想象力更大。但这这一块无论入门还是深入门槛相对较高,涉及个人的基础以及所在平台等因素。

四.对于自己面试的大招 (技术亮点) 或者说作为面试官希望看到的大招,能不能举2-3个例子并附带一下实践的方法?对于面试中说看过 Android 源码的话,必须要读懂哪几个模块?

 从腾讯或者微信的一些招聘职位来说,移动开发的岗位的确减少了很多,但是有还是有的。薪资这块工作2.5年,在腾讯职级对应的大约在2.1-2.2之间,具体的数目不同人之间差距较大,不太多对比。

2、社招规模这个不太好说,这个都是根据项目的需要动态调整。面试的流程各个公司都不太一样,一般都需要笔试、2-4轮面试。如果对于大公司来说,寻找熟人内推的成功率会相对高一些。

3、对于微信的招聘来说,我们主要考察以下三点:

a. 基础与算法;候选人是否可以写出高质量的代码,对于常用算法的熟悉情况与整个思维过程。对于T3以下的候选人基础与算法尤为关键。

b. 项目经验;这一块主要挖掘候选人过去的工作情况,主要看这个人在过去项目中考虑是否深入、全面,是否有一些令人眼前一亮的点。一般来说,我们比较期待候选人有非常擅长的一个点,在这个点做过大量的工作与深入研究。

c. 主动性;这里例如开源项目、文章积累还有对社区的一些贡献等。我们希望候选人在完成自己日常工作之外,可以主动承担更多的挑战,去做更多的尝试。


五.从事Android开发,基本处于没人带的状态,自己熟悉项目代码,做需求,渐渐的变成项目Android端的负责人,但是自觉技术不够深入,比如没写过开源库,仍然有很多不明白的东西,目前的项目没有发展,想去大厂做些确确实实在解决一些实实在在的问题的事情。请问在大公司工作的大牛会怎么看待这种求职者?

事实上,大厂不是都一定比创业公司强,我们需要看项目组的产品、技术氛围等比较多的因素。但是以你现在的情况来看,如果个人长期得不到发展,的确需要尝试为未来做考虑。可以多咨询,尝试找一些产品高速发展或是技术氛围比较不错的地方。

社招一般不太care学历与背景,当然在多个候选人水平差距不多的时候,我们还是会优选选择背景相对较好的。所以这边我们需要表现的更好,打铁还需自身硬。个人建议多看,多实践,多总结,快速提升自身实力才是硬道理。

六.现在的一线大厂面试时掌握哪些知识,掌握到什么程度才能有把握,还有现在的薪资行情怎么样。

薪资这块不同人差距很大,各个一线大厂都给得起钱,关键是候选人可以值多少钱。面试的题目随机性比较多,以微信来说主要面试的点有以下三个:

1、 基础与算法;候选人是否可以写出高质量的代码,对于常用算法的熟悉情况与整个思维过程。对于T3以下的候选人基础与算法尤为关键。

2、 项目经验;这一块主要挖掘候选人过去的工作情况,主要看这个人在过去项目中考虑是否深入、全面,是否有一些令人眼前一亮的点。一般来说,我们比较期待候选人有非常擅长的一个点,在这个点做过大量的工作与深入研究。

3、主动性;这里例如开源项目、文章积累还有对社区的一些贡献等。我们希望候选人在完成自己日常工作之外,可以主动承担更多的挑战,去做更多的尝试。