大家好,最近分享了一些内推的渠道,后台有小伙伴问我,现在准备大公司的面试是不是都要靠背面经?甚至网上还有很多人把面试前的准备戏称为背八股文。
其实不少同学对此都有疑问,我们在面试当中问到的问题实际工作当中真的都会用到吗?难道不是面试造航母,进去拧螺丝吗?今天就和大家聊聊这个话题。
不瞒大家说,其实当年刚做Android开发的时候,在面试之前也都会做很详细的准备,和背面经也差不多。
什么准备呢?就是把我总结到的各种知识点复习、重温一遍。这些知识点大部分都是当时的主管给我们分享的,少部分是我自己继续探索学习的。每次重温这些知识点的时候,真的有考前突击应试的感觉。我在网上找了一份Android的面试知识图谱,大家看下这个架构是不是很像高中书本的目录?
因为Android这个岗位涉及到的知识点还是比较多的,除了Android系统内部的四大组件,View、各种第三方库之外,还要求有Java基础,算法数据结构、设计模式,计算机网络的一系列相关知识。整个体系比较庞大,知识点也非常密集,你很难保证面试官擅长以及提问的领域刚好是你最熟悉的。所以为了保证面试的质量,面试之前的详细准备就是必须的。
其实正常面试之前好好准备,复习或者是学习一下自己薄弱、不太擅长的部分也无可厚非。但是随着互联网声势越来越浩大,吸引力的提升。越来越多的人想往里面挤,导致很多人开始把考场上用到的一套全拿来用了,不再是复习和学习了,而是单纯的死记硬背。甚至很多培训班教学生虚构简历,然后通过狂背面经的方式来通过面试。
如果你背面经只是为了应付面试当中一些刁钻的问题,或者是记住一些容易遗忘的知识点,那我觉得还是有用的。如果是指望通过背面经来弥补自身能力的不足,我感觉很难有效果,越大的厂,越专业的面试官,越没有效果。
现在的一个面试趋势是越来越看重动手实践的能力,很多大厂会上来就让求职者做两道题,或者是写一段代码。你嘴上说得再好听,天花乱坠,但写出来的代码骗不了人。有经验的面试官看看你的代码规范,看看你的编码速度,以及思考的过程,基本上就知道你水平如何。当然这样做也有缺点,因为不是每个人都擅长算法、数据结构,能不能做出题受发挥的影响也不小。但至少能够通过这一环节的,大部分都是货真价实的。
另外一个是对于一些知识点,面试的时候往往不会浅尝辄止,而是会不断发问,看看你的理解究竟如何。比如我之前面试的时候,让候选人聊聊他熟悉的第三方库,他自己选了Glide,可能是觉得Glide比较简单,哐哐哐把原理一通说。但是当我问他Glide有哪些缺点,你有没有办法可以对它进行优化的时候,对面就张口结舌说不上来了。连这么简单的Glide优化都想不出来,那想必其他的一些更复杂的场景,只会更加困难。最后我没有给他通过,虽然我问他的其他基础问题都勉强答上来了,但是就这一个问题,就暴露了他的实力。毕竟用人单位招聘的是有能力能解决问题的人,而不是一个只会死记硬背的人。
最后,和大家聊聊大家比较感兴趣的问题,面试的时候考察的知识在实际当中真的会用到吗?
根据我目前的经验,基本上不会用到。想想看也知道,无论是让我们写的算法、数据结构题,还是问我们的各种设计模式,框架细节,显然都非常脱离实际。所以很多人诟病,面试造航母,进去拧螺丝。
但是如果你仔细分析,你会发现现在的模式已经是最优解了。面试当中有很多潜在的条件,比如有区分度,能够把优秀的人筛选出来,淘汰掉看起来不太行的人。再比如能考察一个人的潜力,能看出来谁是潜力股,谁未来前途无量,谁以后可能最多就是一个普通员工。再比如应对变化,每个人的岗位和职责都不是一成不变的,招进来的人必须基本面出色,能够应对岗位和工作内容的变化。这几个条件一叠加,你就会发现来源于工作但高于工作的问题是唯一解。
其次,有些技能虽然不直接用到,但并非没有价值。举个最简单的例子,就是英语。我想绝大多数人工作场景当中用不到英文吧,别说你们了,我80%的场景下也是用中文交流。但你能说英语没有用吗?显然不行,因为做我们这行需要读论文,论文全是英文的,英语不好就读不了。对于算法工程师而言,不会读paper,不会了解最新的前沿技术,用不了3、5年就落伍了。
还有很多时候,不会造航母连螺丝都拧不好。拿大公司里的算法工程师举个例子,大家都知道很多算法说是算法,其实每天做的都是数据的活。但即使如此,也一样能看得出差距。有些人能够结合下游业务方使用的模型以及场景深度思考,做出来的特征效果很好,用上之后,立刻提升了模型好几个点。有些人不管不顾,只会想当然地做一些特征。表面上看起来大家的工作内容和产出好像差不多,但是到了年底晋升评绩效的时候,你们说老板会更喜欢哪一种呢?
最后最后,知识和技能并不是用到了才有价值,有的能力是其他更深层次能力的基础,有些技能提升了你的专业素养,有的知识则是重要的储备。因为在职场上,永远是书到用时方恨少,谁也不知道机会什么时候回来。当机会来临,才去学习显然是来不及的。所以千万不能抱着这种有用才学,没用就不了解的想法。所谓技多不压身,多了解一些多学一点总不是坏事。
还是那句老话,想躺平的废柴有的是说服自己的借口,而赶路的行人们却早已出发。
文末分享一份Android中高级面试复习笔记
这份资料我从2020年春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
正文总共分为6个部分:
Java 基础(★★)
Java 高级(★★)
Android 基础(★★★)
Android 高级(★★★)
Android 项目(★★★)
项目面试常见问题(★★★)
面向对象思想
多态
异常处理
数据类型
Java 的 IO
集合
Java 多线程
Java 中的反射
Java 中的动态代理
Java 中的设计模式&回收机制
Java 的类加载器
Android 基本常识
Activity
Service
BroadCastReceiver
ContentProvider&数据库
Android 中的布局
ListView
JNI & NDK
Android 中的网络访问
Intent
Fragment
Android 性能优化
Android 屏幕适配
AIDL
自定义控件
Android 中的事件处理
Android 签名
Android 中的动画
网络协议
其他
以上是整理总结的Android中高级面试遇到的真题解析,希望对大家有帮助;同时很多人经常也会遇到很多关于简历制作,职业困惑、HR经典面试问题回答等有关面试的问题。同样我也搜集整理了全套简历制作、金三银四社招困惑、HR面试等问题解析,有疑问,可以提供专业的解答。
对于Android开发的朋友来说应该是最全面最完整的面试资料,为了更好地整理每个模块,我参考了很多网上的优质博文和项目,力求不漏掉每一个知识点。很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个资料也已经帮助了很多的安卓开发者,希望也能帮助到你。