华为被虐,美团被刷花3个月从咸鱼到大厂Offer收割机「面试总结」

Android面试题由易—难,适合小白—高级架构师!(注:面试者通关利器!)

前言

Android进阶小刘】是我的头条号,里面会不定期更新一些Android进阶学习视频,感兴趣可以关注一下!

马上又到了秋招,接着又是金九银十跳槽季,应该有一大波小伙伴按耐不住了,要我给点干货。很多人也说面试有没有什么小秘诀,在这里也不能说给大家建议,只能说带给大家一些我面试踩过的坑,大家多多注意!接下来就是大家要求的学习资料,我一般分为必学知识+面试题,好在平时我就有搜集整理资料的习惯,这么多年应该够大家近期刷题需要了。接下来废话不多说,大家看文章吧!

大厂面试准备步骤

简历+项目+刷题+复习基础+做面经

简历

简历什么的确实没有啥发言权……LZ简历什么的极其拉垮,但是还好学校是985,也有一些公司愿意捞。然后最近发现我的简历出现了不止一处错别字……所以这个方面我没啥好分享的。但是有一点是底线–诚实,不能把自己不会的写上去。面试官是基于简历问你问题,能通过筛选证明用人单位认可这份简历,只要你的表现对得起简历即可。

项目

如果大家不选择像我一样纯从0开始搭建项目的话,可以选择去github上找适合自己方向的项目。

刷题

推荐两个网站:牛客、LeetCode。当然可以从简单开始刷,LZ最开始的时候那叫一个痛苦,easy都不会,只能看答案写。抄答案抄了60多题之后就可以自己写了,因为熟练了。再之后发现有些medium可以秒撕了,easy基本看一眼就有思路。技巧就是最开始抄抄答案没事,抄多了也就会了。无他,唯手熟尔。

复习基础

这个每个方向可能略有不同,LZ只拿Android端举例,其他方向在牛客搜搜肯定也能找到。Android端的基础从重要往轻排序大概是这样:算法、Java(一门精通的语言)、计算机网络、操作系统(很多厂甚至不问)。算法这点是字节的老师一直强调的,你可以没有基础,但是代码能力必须很强。对于其他的方面,高频考题一定要复习透彻,拿计网举例,TCP/IP协议族得熟悉吧,OSI模型得熟吧。LZ面了这么多家,没遇到网络方面新的题型,要是达不到理解(下面有个小技巧),那死背总会吧。

做面经

这里是做!不是看,是把题复制下来自己做,只是看很容易忘的。牛客上的面经一定要自己写一遍,就是打字打出来,不要只是脑子里过一遍。

像我每次面试完都会有整理面经的习惯,这么多年下来也积累了不少,有按照难度来分类的,有按照公司分类的,有按照知识点分类的,一目了然。

注意:这份资料是由易到难,符合每个Android开发者对学习资料的要求,对小白来说,是一份好的学习路线,对大佬来说也是一个查漏补缺的机会,对即将准备面试的朋友来说更是一份通关利器。这份大厂内部学习资料的可以 **点击【学习】**来即可!

  • 比如基础部分:生命周期,Context,动画…

  • 中级部分:HashMap,Kotlin,HTTP,Flutter…

  • 高级部分:性能优化,Android Framework,Android优秀三方库源码,热修复、插件化、模块化、组件化、Gradle…

  • 其他大厂BATJ面试真题解析

腾讯,字节跳动,阿里巴巴,百度,京东,滴滴,美团…

  • 还有其他一些按照知识点系统分类的面试真题

  • 九大板块Android高级工程师学习路线

小程序,NDK,架构设计,开源框架,全方面性能调优,框架体系架构,基本技能,项目实战,Flutter

以上就是我全部的一个学习路线的规划了,从整体的一个知识体系出发,梳理全部的知识,有漏洞就去查阅我相关的手写笔记加以巩固,最后上面试刷题,争取查漏补缺,下次面试不再出现这么多的不知道和知识空白。

技巧

经过了整个春招的磨砺,除了硬实力之外,有一些需要自己注意的技巧分享出来:

1、简历不要投太早,容易因为太久没被处理导致心态崩溃。因为我之前2月底投了一波,但是那时候很多厂简历筛选工作还没开始,搞得自己无名焦虑,头发又少了。

2、不要给面试官一种你在背知识点的感觉,要结合实现进行分析。我这里有一句话:**数据结构决定算法、算法决定数据结构。**就拿TCP举例,你要是遇到TCP的头部结构有什么的问题,是不是就懵了,觉得这是靠背诵的。但是你套上这句话,联想一下知识点:SACK确认机制、滑动窗口、全双工通道、套接字结构……是不是就能够理解为什么需要那些头部结构了,都是有对应的功能需要实现才会出现这些结构的。遇事不决拿结构分析。

3、多看源码,源码里面有很多注释,很多时候看看注释就知道这个类是干什么的了,然后再往下跟,会有助于自己理解逻辑。更重要的是让面试官知道你这种跟源码的学习方式。

4、调整好心态,不要因为某些厂把自己挂了就觉得自己不行。这是我被挂多了之后的心得,此处不留爷自有留爷处。

5、面心仪的公司之前先面几家其他公司,小公司或者同等体量的公司。

6、面试一次复盘一次,整理自己发挥不好的点。不能说一次问你不会两次问你还不会吧,那不是能力问题,那是态度问题。而且很多厂是有面试记录的,二三面转挑你面试不好的问题问你。

7、表现自己对于计算机、码代码的热情以及愿意钻研的精神。

这里说的热情不是让你自我介绍的时候说喜欢码代码,而是不经意见透露一些。比如有维护个人博客、比如一直在维护个人github、比如在遇到问题的时候提了各种解决方案最后根据某种选择策略决定了最终方案、比如最近遇到的问题以及现在解决到了哪一步……

我举个例子吧,LZ最近准备的案例是BiometricPrompt相关,这是AndroidP开始有的生物识别类,意在同一生物识别的弹窗样式而让用户对于识别更加放心。

但是弹窗会使得背景Activity偏蓝,于是想解决这个问题,找到了源码FragmentDialog,发现里面关于Style和Theme部分的代码是通过从Bundle中取出的值决定的,但是Bundle是BiometricPrompt中利用构造器模式进行初始化的,而且是private的,所以没有接口可以定制。

于是想通过反射试试能否修改对应Bundle中的数据。实现之后发现失败了,因为回看FragmentDialog中,它将Theme和Style对应处理写死了,只是通过int值不同调用不同的case而已。所以修改Bundle是行不通的,现在在想能否利用动态代理相关思想hook一下对应的setStyle或者setTheme方法,达到修复背景颜色问题。但是这样子又违背了这个类创造出来的目的,所以最近在苦恼这一点。

项目里还是利用了AndroidM的相关生物识别操作自定义弹窗做的。看我加粗的部分:提出问题+初步解决方案+失败了+失败原因分析+下一步操作+对于这个操作的思考。

不要求你解决了什么问题,但是你要体现出来,你真的在思考。这确实是我最近遇到的问题,我解决方案还是使用AndroidM相关库进行的自定义。上面这段话透露了什么?你乐于思考、会解决问题,你在学习新技术,你知道版本适配问题,你会利用源码作为解决问题的工具,你知道动态代理和hook,你会利用反射解决问题。上述能力都是我想体现的,一个案例就够了。我通过这个案例已经打动不少面试官了,各位要做的就是按照我的模式找到自己解决的问题。

尾声

生活中我们都要经历太多失败、太多挫折,面试的过程中我也经历过迷茫和不安,希望大家能够相互帮助,相互支持,在招聘路上取得自己满意的结果!PS:具体面经和知识点请参见我其他的帖子。

本人也在一个大佬开一个学交流群里,群里大佬会重点介绍学习准备过程和一些面试技巧,很多小伙伴也在里面交流交流一下,大佬有时间也会解答大家的困惑,需要的同学可以参加一下。

点击我【学习 加入 2020金九银十(预热期)备战面试群 当然群里也有大家一起更新搜集的资料 ,欢迎大家一起加入。

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页