Bbb988456edf645f24bf10f056de4e53
答读者问:准备面试需要做哪些技术储备,面试官更加关心什么方面的技术点?

这个系列整理了关于如何进入大厂的一些问题,包含了技术储备,面试官更加关心什么方面的技术点等等。然后张绍文大神因为最近重感冒生病了,文章和回答都做到一半,所以后面会在开一篇文章回复相关的问题。


第一个问题:

我明年准备面试,工作 3 年了想面个大厂,现在那面试官会更注重问哪方面呢?是算法还是那些框架原理?还是 Android 源码?还是看你做过的项目经验?我知道肯定都会问到,那么问的那一方面偏多呢?因为精力有限,想在一方面深入了解一下,突出自己的一技之长。

希望张绍文、Jacky 王世昌,jack 回答。(绍文老师重感冒生病了,答案我稍后补充上)

Jack Wang 的回答:

简单说几个方面:

  1. GitHub 上获得别人认可(Star)的开源框架(开源方向)
  2. 对 React-Native 或者 Weex 或者热修复框架有比较深入研究的(动态化方面)
  3. 技术上有个人见解,并影响到其他同学的(影响力)
  4. 在国内或者国外技术网站上发表过文章(个人能力)

这几点,如果能有一点做的比较出色,笔者认为即是一技之长。

Jacky 王世昌 的回答

在我看来对技术的热爱永远是第一位的,这是因为有这种热情无论解决什么技术问题,都是时间问题,所以如果有自己的博客、开源项目会加很多分。

如果我作为面试官,具体面试的东西还是会根据面试者的情况制定的,现在一线大厂社招基本也得在资深以上了,我会先问 Java( 线程安全、JVM 原理),然后会问写 Android(基本的性能优化、架构思想及 Android Framework ),涉及到算法的应该不多,但是不排除有一些想炫技的面试官。大厂对知识的广度和深度都会考察,但是对某一领域的深度会更打动面试官。


第二个问题:笔试成绩高对面试有影响么?

“想准备明年春招,请问笔试成绩高对面试有影响么,会比较容易吗?”

宅男潇涧的回答 :

我觉得笔试成绩高低对面试是有影响的,个人觉得比较好的面试流程是先笔试,然后后面的面试官都拿着你的面试结果来有针对性地考查你,如果大部分题目都答对了,那么面试官就会感觉到你可能水平不错,也就会问些稍微难点的题目挑战你,不会上来就问”你说下 Activity 的生命周期(或者启动模式)“这种烂大街的题目了。如果你某道题目做错了,他也许就会问你为啥选了那个错误的答案?一方面看你是如何思考的,到底是哪个知识点存在漏洞,另一方面,如果你知道你做错了,你是否回去研究了到底为啥做错了,这点挺重要的。我曾经经历的阿里实习生面试时,每次下一个面试官都会问我上次面试官问过的我答错了的题,他就是想知道我后来回去有没有把知识点补起来。笔试成绩不能决定是否能拿到 offer,但是或多或少都会影响后面的面试的。


第三个问题:如何让自己保持一个随时可面试可跳槽的状态呢?

想问各位大神两个问题,第一个是如何让自己保持一个随时可面试可跳槽的状态呢?是在项目中不断总结沉淀呢?还是要不停的去钻研一些面试题或者算法题呢?(感觉很多面试题在实际项目中用到的不多)另一个问题是,Android 开发(或者说客户端开发)天花板是不是很低呢?如果是的话,如何进行突破呢?多谢多谢~

孤独狂饮的回答

第一问:

为何要随时保持一个可以跳槽的状态呢?既然到了一个公司就应该尽力去适应这个公司的发展,要不然自己走过的路都被自己否定了。到公司后,可以针对项目中不太好的地方进行优化和调整,对于新开的业务或者功能,可以考虑使用最新的技术去解决相关问题,这样就可以不断的自我扩充。必要的时候需要去看一看算法,我平时会去 leetcode 练习一下算法,因为算法真的很重要,很多公司都会很注重算法的。面试题很多来自于敲代码和思考的一些过程,应该在我们工作中去寻找一些解决方法,同时可以看一看别人总结的经验,对我们来说还是很有帮助的。

第二问

天花板这个词用的很妙,很含蓄,一开始真没反应过来哈。其实 Android 的技术瓶颈并不是很低,有很多的东西都需要你去了解和掌握。首先是基础的东西,其次是各自的原理(handler, animation),然后是一些主流的开源框架(okhttp, fresco),最后如果还想想深造一步的话,可以去看看 Android 系统的源码,Android 源码的设计模式等。当你感觉有能力的时候,可以尝试跟一拨人一起完成一个功能,提升自我价值,开源相关项目,汲取更多智慧,至少我目前是这样做的。我本人其实并不打算一直往技术底层走,但是该了解的还是会先去了解。我想扩展认知范围,不仅会 Android,也要会相关的东西,毕竟一辈子时间那么的长,也应该扩展一下自己的见识面吧。 只会 android,貌似在以后来说不太够用,现在都流行全栈开发人员,但是也不是说每样技术都要精通,关键是要涉猎面广,专注于一个技术领域,其他为辅,这样以后,不仅能独当一面,而且有需要可以自己立刻上手,做到集百家之长,融会贯通。比方说我们完成一个产品的时候,首先经过需求评审,然后 UI 设计出图,技术方案定型,代码开发,测试上线,维护。 当然这个流程很大,我们可以选择自己喜欢的领域,像 后台开发 ( Python ),前端设计 ( Vue ), 很贴合我们,就可以学学。

宅男潇涧的回答

第一个问题谈到“如何保持一个随时可面试可跳槽的状态”,其实这不仅是一个很难维持的状态,而且还是一个很不好的状态。为什么呢?因为如果总是不满足当前的工作内容或者薪资待遇一心想着跳出去的话,那么就总是需要去钻研面试题或者算法题,这样会浪费很多原本可以用来提高自己的知识储备和实战技能的宝贵时间。以我自己为例,我第一份工作是在魅族,待遇一切都好,可是我发现我不怎么喜欢做 framework 层开发,我更喜欢做应用层开发,是的,我就是这么肤浅(逃)。部门老大对我很好,安排我到其他组帮忙做了段时间的应用开发。后来,我思来想去,还是想找个做应用开发的工作,于是花费了几个周末的时间去图书馆看书复习那些面试中问来问去的东西,此外,由于我不是校招生,工作经验还不到半年,所以简历关基本上都过不了。最后整个跳槽过程耗时数月,阴错阳差来到鹅厂,不能说这期间没有收获,但是这些时间原本是可以更好的利用的。所以,我个人建议把时间发在当前的工作岗位上,做出成绩来,得到大家的认可更好些。平时的确是需要不断总结沉淀的,我每个阶段的任务我都会总结一下,比如相机模块的开发、RN 模块的开发、耗电量统计以及应用瘦身等等,知识沉淀了,经验增长了,心里会很开心的。

第二个问题是关于“客户端开发的天花板”的问题,个人认为触碰到客户端开发的天花板还是比较难的,能完成平时的业务开发只是“地板“,要是真能熟练掌握 Android 应用开发方方面面的知识,在知识广度和深度上都有所造诣应该不简单吧。再来就是基于客户端我们还能做什么?音视频?图像处理?机器学习?AR/VR?这么多有意思的领域等着我们去探索,想想都很有劲不是吗?我个人比较喜欢移动端的图像处理和机器学习的领域,知识储备主要还是研究生阶段课程的内容,在移动端的实践较少,所以平时也就是关注下而已,没有机会实践。如果想要突破的话,可能真得下番苦功夫,潜心钻研,实践出真知。总之,我觉得客户端开发的天花板并不低,倒是起点低了很多,涌进来的浮躁的人也就多了。一位牛人曾经说过,“当我学到更多的知识时,我感觉自己更加无知了”,与君共勉之。

键盘男的回答:

“随时可跳槽”这个想法不错,但不建议读者老想着跳槽。

在项目中沉淀知识和经验,这是必须的。知识是全球通用的,每个人都可以获取;但经验,是你在项目中遇到问题、思考、解决后,才能积累,别人拿不走。举个简单例子,“会用 okhttp、retrofit 是知识”,“会用 okhttp、retrofit 请求我司后端接口,并用 interceptor 添加各种 header,并对返回的‘奇葩数据’做特殊处理”是经验。

top Created with Sketch.