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

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

回答1

①第一问:

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

②第二问

天花板这个词用的很妙,很含蓄,一开始真没反应过来哈。其实 Android 的技术瓶颈并不是很低,有很多的东西都需要你去了解和掌握。首先是基础的东西,其次是各自的原理(handler, animation),然后是一些主流的开源框架(okhttp, fresco),最后如果还想想深造一步的话,可以去看看 Android 系统的源码,Android 源码的设计模式等。当你感觉有能力的时候,可以尝试跟一拨人一起完成一个功能,提升自我价值,开源相关项目,汲取更多智慧,至少我目前是这样做的。我本人其实并不打算一直往技术底层走,但是该了解的还是会先去了解。我想扩展认知范围,不仅会 Android,也要会相关的东西,毕竟一辈子时间那么的长,也应该扩展一下自己的见识面吧。

timg.jpg

回答2;

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

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

回答3;

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

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

“随时可跳槽”意味着你有核心竞争力,你能胜任大多数公司的工作。当你做得足够多的业务,遇到足够多的苦难,你随便拿个 app 出来玩,知道如何实现那些功能,这就判断自己是否“能胜任大多数工作”。学习知识当然少不了,看看《 Android 技术图谱》是否掌握了大半?还有对技术的直觉,看到某大牛写的技术文章,是不是看了标题和导语,大概就知道下文说什么?

还有,当你在微信技术群能轻松回答各种网友提问,或者反驳别人的技术观点,跟大牛谈笑风生,你就“随时可以跳槽”了。

钻研面试题、算法题,纯粹浪费时间,在面试前突击一下就好。

四 第四个问题:面试中对于优秀第三方库的掌握在面试里面的重要性占比是怎么样的?

在面试中对于优秀第三方库的掌握在面试里面的重要性占比是怎么样的?有时候一些库之前仅限调用 api 而已,无法深入到源码级别,有时候去看源码又是似懂非懂的状态,这时候肯定不敢说掌握。所以应该怎么表达自己对于第三方库的或者说优秀源码的理解。

回答1;

  1. 第三方库是很重要的面试点,足够看出一个人对日常使用的框架的研究程度、学习能力和态度。
  2. “仅限调用 api ”,那等于不会这个库,面试时就不要提起这个库了。“只会调用 API ”是面试大忌,就算你用这个 API 做一万个项目,都不如一句对原理阐述来的好;
  3. “怎样表达对于优秀源码的理解”,不要关心“怎样表达”,面试时直接说关键原理,说出来算赢,否则就算讲的天花乱坠也没用,面试官不傻。

回答2;

对于程序员这一个行业来说,看源码的确很重要,但是看源码之前要明白自己为什么要去看,如果仅仅是为了应付面试而去看源码个人觉得是纯粹的浪费时间行为,因为这种方式看源码第一不知道自己要看什么,很容易被绕晕,第二看完之后没有太大的收获,只能了解到一个大致的流程,而这些流程为什么要这样设计,或者说这样设计的优缺点基本上很难弄明白。只能理解到表皮,而表皮这些东西随便搜一下“XX 源码解析”,看几篇文章就能说出个大概,但是再往深处就很难答出来了。

我自己并不会特地的去看源码,而是有需要的时候去看看。

第一种:对比查看,设计了一套逻辑和某某框架中的有点类似,所以我把这套框架拿出来分析一下,看看它的设计思路,然后对比一下我们两个的设计异同,分析一下各自的优缺点,这样我在具体写代码的时候就可以有意识的规避掉这些缺点,使其变的更加完善。

例如:设计 PagerLayoutManager 的时候参考了 HorizontalPage 但规避了后者内存占用过高,添加大量数据时UI卡顿的问题,并且使用了另一种更简便的方式实现了分页辅助工具。

第二种:分析 Bug,我用了某一套开源库,发现在某种特殊情况下会出现 Bug,于是把它拿出来看一下,为什么会出现这个 Bug,是这个库实现的问题,还是我使用的问题,以及如何才能规避这个 Bug。

例如:项目中有使用二维码,但是二维码显示区域较小,使用了一个第三方库生成的二维码,看起来像一堆密密麻麻的小点,手机经常扫描失败,后来发现是容错级别太高了,于是复制一下过来调整了容错级别,显示才算正常。

第三种:添加新功能,我项目中某一个模块需要一系列的功能,我去网上找到一个开源库能满足大部分的功能,但又不完全满足,需要对其中部分进行调整,此时需要把它的源代码拿过来进行分析,进而修改调整,最终满足项目的需求。

例如:音视频开发,需要对左右声道音量分别控制,但是 ExoPlayer 并没有提供这个方法,于是研究 ExoPlayer 源码为其添加了这个方法。

其实公司招聘问开源库相关的东西,考察的并非是对这些库有多深的了解,而是自学能力和解决实际问题的能力,当面试官在问这些问题的时候,重点是要结合自身的实际工作经历,最后谈一下自己的看法,不需要一味的去陈述某一个库的设计。

五 第五题:关于阿里巴巴的面试问题

11 年毕业,做 Android 5 年以上,计划随时去杭州发展,目标阿里。由于现在工作不是很忙,计划用一两个月时间来复习和学习。我想知道如果我现在尝试给阿里投简历,电话面试失败了,最短多长时间还有机会再投一遍好有机会电话面试?我是应该现在就尝试下好查漏补缺还是等准备充分了再投简历以免浪费面试机会呢?

回答1;

  1. 先去小点的公司面试,积累面试经验,补全知识体系;
  2. 阿里内部有很多 BU,就算一个没中还可以投其他的,不用担心被冻结。当然,把你最心仪的BU面试留到你最自信的时候。
  3. 准备的时间里,不要一味看书,适度参加一些面试更能知道要学什么

回答2;

问题1:阿里多久可以再次面试?
理论上讲的话,如果你的面试流程结束的话,是可以马上接着再投简历进行面试的,但是如果你的面试流程还在进行中,其他部门是没法同时面试的。需要再等一等,通常来说,面试结果都会在一到二周左右出来,比较着急的话,可以找下内推的同学帮你查下进度或者电话面试快结束的时候,询问下面试官。
问题2:是否应该准备充足再面试?
答案是 YES,每一次面试机会都应该全力把握,尤其是阿里这种需要四轮、五轮面试的,浪费一次机会等于是重头再来。所以最好要准备充足,保持好状态,如果你不知道自己到底有没有准备好,建议可以先找一些其他的互联网公司刷下面试感觉。毕竟,多个选择多条路嘛!

资料总结.png

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
/bbs.csdn.net/topics/618165277)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值