2020年底狂欢总结,月薪30K的BATJ大厂面试笔记解析:技能面+HR面

2020面试20家公司后的几点建议

1.简历要如实写,相关的知识点一定要烂熟于心。

2.基础扎实,android和java相关的知识树网上有很多资料,看过但让你讲出来未必能说的好。

3.提前总结,你还擅长什么其他技术?这种开放问题要看知识面了。

4.学会提问,你有什么问题要问我吗?这种礼貌性问题也是一个了解对方的好机会。

5.良好的心里素质,无论遇到什么情况,面试官迟到、面试官态度冰冷说话不客气、质疑你的回答等等各种问题都不要慌也不要排斥,一定要沉住气,耐心积极的思考并回答对方的提问。

6.推荐几本书,也是好几次面试后发现里面涵盖了大部分答案。《Android开发艺术探索》《Android源码设计模式-解析与实战》《Android进阶之光》《深入理解Java虚拟机》,多看几遍。

大厂的面试流程比较长,面试是一场全面大考验,如果想换个工作,最好提前充分准备。


面试准备

知识点准备

Android开发给人的感觉是门槛很低,因此有不少人会说Android很简单,实际上Android开发说简单也不简单。简单是因为它入门快、上手简单;不简单是因为Android的知识点比较琐碎,如何从琐碎的知识点中理解Android工程师的本质并形成一个完整的知识体系,这是不简单的。

相信不少开发者会有这种感觉,Android的好多知识点自己都知道,但又不是特别懂,这就是碎片化知识未形成一个完整体系的表现。如何对Android建立全面的理解?需要一种有效的学习方式,在学习过程中知道哪些知识点需要深挖、哪些知识点需要融会贯通、哪些知识点了解即可。在这里Android学科参考众多学习者和开发者在Android应用层的学习过程,总结了一个适合大多数人的学习路线,整体路线如下图所示。


领取下载完整版路线图地址:【点击我

面试刷题准备

tb:电面一

  • dp是什么,sp呢,有什么区别

  • 自定义View,ViewGroup注意那些回调?

  • 界面卡顿的原因以及解决方法

  • android中的存储类型

  • service用过么,基本调用方法

  • Handler机制

  • LinearLayout、FrameLayout、RelativeLayout性能对比,为什么

  • Activity的生命周期,finish调用后其他生命周期还会走么?

  • FW层熟悉么,源码看过么

  • GC回收机制熟悉么,分代算法知道么

  • Java的类类加载原理

  • 内存泄漏如何排查,MAT分析方法以及原理,各种泄漏的原因是什么比如

  • Handler为什么会泄漏

  • gradle熟悉么,自动打包知道么

  • 介绍下先的app架构和通信

  • 自己负责过哪些模块,跟同事相比自己的优势是什么

  • 遇到过什么印象深刻的问题,怎么解决的

现场面试:三场

First:

  • 最近都做了哪些工作?

  • 遇到了什么印象深刻的问题。A:会顺着你介绍的项目问下具体实现。

  • 推送消息有富文本么?

  • 热修复了解么,用的什么?

  • apk包大小有限制么?怎么减少包大小?

  • 工作中有没有用过或者写过什么工具?脚本,插件等等

  • 比如:多人协同开发可能对一些相同资源都各自放了一份,有没有方法自动检测这种重复之类的

  • 写过native的底层代码么

  • view的绘制熟悉么,介绍下

  • gc相关的算法

  • anr是因为什么产生的,怎么排查

  • 界面上的话,有什么优化措施么?比如列表展示之类的,平时遇到过内存问题吗,怎么优化的?

  • 平时用过哪些设计模式?

Second:

  • 介绍下最近一年主要做了什么工作

会对简历上突出的技能进行详情的询问:

比如:音频合成的具体步骤,以及遇到的一些问题和细节处理。
会根据面试发散一些问题,问到,seek方法播放到末尾后重新播放会有一些卡顿的不流畅问题,怎么避免,从交互设计或者技术角度。(个人表示没怎么关注这种)。

  • 项目团队多少人,怎么分配工作

  • 线程之间怎么通信的?

  • app的架构是怎么样的,并且为什么这样,有什么优缺点?

  • 算法熟悉么?给了一个二叉排序树,出了一个给定节点找到它的下一个元素(指的是大小顺序的下一个)的算法题。

  • 在职场工作里,自己的优势是什么

Third:

  • 技术问题不再局限于简历,可能根据简历和回答情况渐进并扩散。

  • 感觉各个技术面试官之前并没有沟通,可能会问到类似的问题

  • 介绍下自己主要负责的工作

  • Activity的生命周期有哪些,知道onRestart么,介绍下

  • savedInstanceState知道么,干什么用的,什么时候有值,什么时候为空,平时是怎么用的

  • View绘制熟悉么,介绍下,能说下是实现原理么?

  • 平时用过什么开发工具,分析工具?

  • ANR是怎么回事?怎么查?Service会引起ANR么?

  • Activity的启动模式有哪些?栈里是A-B-C,先想直接到A,BC都清理掉,有几种方法可以做到?这几种方法产生的结果是有几个A的实例?

  • 有什么工具可以看到Activity栈信息么?多个栈话,有方法分别得到各个栈的Activity列表么

  • 都熟悉哪些命令?知道怎么用命令启动一个Activity么?

  • SharedPrefrences的apply和commit有什么区别

  • java里带$的函数见过么,是什么意思

  • MD5是加密方法么,Base64呢

  • 有博客和github,主要是写的什么?有哪些关注

  • android 10.0 有哪些新特性

  • 差不多就这些吧。。最后每个面试官都会让你问他问题。

二.NetBase:

  • Canvas的底层机制,绘制框架,硬件加速是什么原理,canvas lock的缓冲区是怎么回事

  • surfaceview, suface,surfacetexure等相关的,以及底层原理

  • android文件存储,各版本存储位置的权限控制的演进,外部存储,内部存储

  • 上层业务activity和fragment的遇到什么坑??页面展示上的一些坑和优化经验

  • 网络请求的开源框架:OKHttp介绍,写过拦截器么

三.Netbase:AI

  • 数据层有统一的管理么,数据缓存是怎么做的,http请求等有提供统一管理么?

  • 有用什么模式么,逻辑什么的都在Activity层?怎么分离的

  • 如果用了一些解耦的策略,怎么管理生命周期的?

  • 有什么提高编译速度的方法?

  • 对应用里的线程有做统一管理么?

  • jni的算法提供都是主线程的?是不是想问服务类的啊

  • 边沿检测用的啥?深度学习相关的有了解么?

  • 上线后的app性能分析检测有做么

四.yz:

  • 进程间通信方式?Binder的构成有几部分?

  • HttpClient和HttpConnection的区别

  • View的事件传递机制

  • MVC,MVP,MVVM分别是什么?

  • Android中常用的设计模式,说三个比较高级的?

  • 内存优化,OOM的原因和排查方法

  • 想改变listview的高度,怎么做

  • Https是怎么回事?

  • 除了日常开发,其他有做过什么工作?比如持续化集成,自动化测试等等

五.DiDi:比较全面

  • ActivityA跳转ActivityB然后B按back返回A,各自的生命周期顺序,A与B均不透明。

  • Synchronize关键字后面跟类或者对象有什么不同。

  • 单例的DCL方式下,那个单例的私有变量要不要加volatile关键字,这个关键字有什么用

  • JVM的引用树,什么变量能作为GCRoot?GC垃圾回收的几种方法

  • ThreadLocal是什么?Looper中的消息死循环为什么没有ANR?

  • Android中main方法入口在哪里

  • jdk1.5?SparseArray和ArrayMap各自的数据结构,前者的查找是怎么

  • 实现的,与HashMap的区别

  • Runnable与Callable、Future、FutureTask的区别,AsyncTask用到哪个?AsyncTask是顺序执行么,for循环中执行200次new AsyncTask并execute,会有异常吗

  • IntentService生命周期是怎样的,使用场合等

  • RecyclerView和ListView有什么区别?局部刷新?前者使用时多重type场景下怎么避免滑动卡顿。懒加载怎么实现,怎么优化滑动体验。

  • SQLite的数据库升级用过么

  • 开放问题:如果提高启动速度,设计一个延迟加载框架或者sdk的方法和注意的问题。

  • Scroller有什么方法,怎么使用的。

  • 分享下项目中遇到的问题

  • webwiew了解?怎么实现和javascript的通信?相互双方的通信。@JavascriptInterface在?版本有bug,除了这个还有其他调用android方法的方案吗?

  • ReactiveNative了解多少

  • JNI和NDK熟悉么?Java和C方法之前的相互调用怎么做?

面试技巧准备

1、之前的薪水有多少?

【参考回答】:在以前的单位,差不多一个月薪水是在1500到2000之间吧,因为奖金是看绩效考核的,不过我一般情况的薪水都在1800到1900之间。
【解答思路】:之前的薪水可据实以报,切勿写不实数据,因为有些公司会去查证,万一得知所言不实,就可能会丧失工作机会。

2、希望待遇多少?

【参考回答】:刚到公司,还是按照公司的岗位工资我就满意了,后期我想咱们单位应该是能力与待遇成正比的,对吗?
【解答思路】:常被问到希望待遇时,最好能诚实回答,考虑年龄、经验及能力等客观条件来决定,对某些企业而言,这也是评论应征者的能力及经验的参考,一般要求比以前一工作薪水高出百分之十是合理范围。

3、除了本公司外,还应征了哪些公司?

【参考回答】:是我离职以来应聘的第一家单位,之前还没有过求职
【解答思路】:这是相当多公司会问的问题,其用意是要概略知道应征者的求职志向,所以这并非绝对是负面答案,就算不便说出公司名称,也应回答“销售同种产品的公司”,如果应征的其他公司是不同业界,容易让人产生无法信任的感觉。

4、何时可以到职?

【参考回答】:如果被录用的话,可按公司规定时间上班。
【解答思路】:大多数企业会关心就职时间,最好是回答“如果被录用的话,可按公司规定时间上班,”但如果还未辞去上一个工作、上班时间又太近,似乎有些强人所难,因为交接至少要一个月的时间,应进一步说明原因,录取公司应该会通融的

5、你了解我们公司吗

【参考回答】:之前我在网络上以及朋友的口中了解过咱们单位,咱们单位在网络行业是xxx巨头,………
【解答思路】:只要毕业生提前做些准备,从多种途径收集用人单位的信息,这样的问题就比较容易回答,如果答非所问或张口结舌,场面可能会很尴尬。

6、希望工作地点在哪里?

【参考回答】:至于工作地点,我会按照单位的需求而定
【解答思路】:这是有数个分公司及营业场所的企业会问到的问题,如果有希望的工作地点,可据实说出来,如:现在虽然希望在某营业场所工作,但也可有“将来还是希望能到总公司服务”之类的要求。

7、你为什么应聘我们单位

【参考回答】:有两点,一是我对这个行业很感兴趣,二是咱们单位在这个行业里属于领军式企业,对我吸引力很打。
【解答思路】:毕业生可以从该单位在行业中的地位、自己的兴趣、能力和日后的发展前景等角度回答此问题

8、你找工作最重要的考虑因素是什么

【参考回答】:我觉得应该是发展和提升,再者就是公司的培训,每个人都有自己的职业规划和定位,二我的规划就是在这段时间内无论是外职业生涯还是内职业生涯,我希望都有所发展。
【解答思路】:可以结合你正在应聘的工作,侧重谈你的兴趣、你对于取得事业上的成就的渴望、施展你的才能的可能性、未来的发展前景等方面来谈

9、你认为你适合什么样的工作

【参考回答】:我大学的专业是计算机应用,主要学习的是网络方面的知识,在我毕业以后我又进行了网络工程师系统的培训,所以我觉得在网络方面的工作我会做的很好
【解答思路】:结合你的长处或者专业背景回答,也许单位是结合未来的工作安排来提问,也许只是一般性地了解你对自己的评价,不要说不知道,也不要说什么都行

10、你为什么选择我们公司?

【参考回答】:在几家应聘单位中我之所以选择咱们公司,是因为看重咱们公司在业内的影响力以及咱们公司的实力
【解答思路】:
1、面试官试图从中了解你求职的动机、愿望以及对此项工作的态度。
2、建议从行业、企业和岗位这三个角度来回答。
3、参考答案——“我十分看好贵公司所在的行业,我认为贵公司十分重视人才,而且这项工作很适合我,相信自己一定能做好。”

11、您在前一家公司的离职原因是什么?

【参考回答】:我离职是因为这家公司倒闭。我在公司工作了三年多,有较深的感情。从去年始,由于市场形势突变,公司的局面急转直下。到眼下这一步我觉得很遗憾,但还要面对显示,重新寻找能发挥我能力的舞台。
【解答思路】:
1、最重要的是:应聘者要使找招聘单位相信,应聘者在过往的单位的“离职原因”在此家招聘单位里不存在。
2、避免把“离职原因”说得太详细、太具体。
3、不能掺杂主观的负面感受,如“太幸苦”、“人际关系复杂”、“管理太混乱”、“公司不重视人才”、“公司排斥我们某某的员工”等。
4、但也不能躲闪、回避,如“想换换环境”、“个人原因”等。
5、不能涉及自己负面的人格特征,如不诚实、懒惰、缺乏责任感、不随和等。
6、尽量使解释的理由为应聘者个人形象添彩。
7、同一个面试问题并非只有一个答案,而同一个答案并不是在任何面试场合都有效,关键在于应聘者掌握了规律后,对面试的具体情况进行把握,有意识地揣摩面试官提出问题的心理背景,然后投其所好。

12、如果我录用你,你认为你在这份工作上会待多久呢?

【参考回答】:
A.这问题可能要等我工作一段时间后,才能比较具体地回答。
B.一份工作至少要做3年、5年,才能学习到精华的部分。
C.这个问题蛮难回答的,可能要看当时的情形。
D.至少2年,2年后我计划再出国深造。
【解答思路】:选择B最多A次之。B的回答能充分显示出你的稳定性,不过,这必须配合你的履历表上,之前的工作是否也有一致性。A的回答则是非常实际,有些人事主管因为欣赏应征者的坦诚,能够接受这样的回答。

更多面试技巧我都整理好了,需要的朋友自行下载直达领取链接:【点击我,即可获得!

尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章