Android开发Android开发经验谈Android技术知识

速来围观!2020年超实用Android面经,为你进大厂保驾护航

2020-08-25  本文已影响0人  不正经的创作者

摘要

开篇之前,首先说一下,大神就别点进来了。小编只是尘世间一个迷途小开发,二流程序员。

这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+总结,最终拿到了自己喜欢公司offer(非一线大厂,但是薪资也涨了40%多,对我来说已经很满意惹)的故事。

当然,大厂谁不想去呢?可是时间紧,生活压力大,计划赶不上变化。生活的真谛就是妥协而已。

前提

出来社会摸爬滚打三年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。(没办法,我也知道客观上应该努力啊555,可我主观上只想躺着刷B站~555)First,先列一下小编目前的客观情况:

面试之前

首先我不建议频繁的跳槽,除非被逼无奈,频繁跳槽,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。

同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段时间你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会带来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。

但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。

如何准备

我是从6月接近中旬开始面试的,一直到7月底结束,整个面试周期差不多一个月左右的时间。这次面试采用的策略是以战代练,就是边面边复习。

面试的话,主要是朋友内推,Boss和拉勾。但Boss的话,初期不建议把简历可见,我就在这方面吃了苦头(别提了都是泪)。接下来我将这一个月内我接触的知识点铺展开来,也给大家一点参考。

接下来我将这一个月内我接触的知识点铺展开来,也给大家一点参考。

算法:LeetCode,把链表、排序、树标签里所有简单类型的题目练一下手。特别是排序,冒泡、快速、二分、选择、归并一定要达到手写的水平!

数据结构:Java的HashMap——7和8的区别、ArrayList、LinkeList。Android的ArrayMap、SparseArray系列。还有阻塞队列ArrayBlockingQueue、LinkedBlockingQueue。HashMap的结构和细节是遇到最多,建议仔细看一下源码,一定要有自己的理解(划重点)。把HashMap如何存储、如何查找。hash碰撞,以及内存利用率这些问题理解一下

设计模式和架构:准备一些自己拿手的模式,在网上查一下资料。准备一些套话,关键词耦合,二次修改方便,外部不用关心内部实现等等。MVC、MVP、MVVM三种,起码要了解两种,并且能清晰明确的说出,两种架构间的优缺点。

我本身经历过一次MVC -> MVP的过渡,所以面试的时候就只提了这两种。MVVM没接触过,就实话实说没搞过,面试官也不会再问。千万不要打肿脸充胖子,没接触过就说不会就可以了。关键词:UI逻辑、业务逻辑、不影响对方的前提下修改、逻辑清晰,方便定位

Android基础:这个就很重要了,当然涉及面也相当广。四大组件,生命周期这个啥都不说了,直接冲就是了,基本都会问到。Handler、View绘制流程、事件分发,这些都是老生常谈。

Android框架基础:AMS,Activity的启动过程。Android绘制流程(这个看个人了,因为我简历上写了熟悉Canvas库,手动狗头)

Java基础:多线程、线程池、锁机制,这两个知识点问到的还挺多的。其他的包括,内存区域、内存泄漏、垃圾回收。。。(这些懂个概念即可,不深究)

简历

简历制作是一种学问,一份好的简历往往让人眼前一亮。同时简历要突出重点,

简历制作总结: 至于其他的对大家应该没有难度。同时适当的包装无可厚非,求职者想找个好工作,面试官想找个好员工。对方就像相亲一样。一定会把你的底摸个清楚的。如果相亲的时候的没问题,等孩子都有了那就晚啦。哈哈,我就是这个意思。包装的目的是为了增加HR的通过率。这样才会有面试机会,对我们这种渣渣来说,面试机会比面试通过与否更重要。因为面试邀请都没有,你准备有个P用。

最后我还是希望大家提高自己的实力,实力才是硬道理

面试

以上是一些复习的知识点,因为要准备的东西还是蛮多的。所以时间上的安排一定要灵活,我是早上复习Java基础,中午看Android,晚上复习算法和数据结构。

有面试的话,就提前去了解一下公司的产品,去官网上冲一冲浪,下个APP玩一下。也算提前给自己一个心理准备。以下是一些面试题,供给大家参考:

  1. GC讲一下?
  2. Java数据结构了解吗?
  3. 链表和数组的区别
  4. Final?讲一下
  5. 项目中使用过锁吗?synchronized和reentrantlock?
  6. 讲一下多态?
  7. 内存泄漏?
  8. android中的内存泄露?
  9. 讲一下handler机制?
  10. listview和RecyclerView的区别
  11. activity的生命周期
  12. activity的启动模式
  13. singletop中再次启动栈顶的activity,生命周期怎么变化?
  14. fragment了解吗?
  15. 和activity的区别?
  16. handle机制?
  17. onNetIntent了解吗?
  18. 怎样判断ipv4的地址是否合法?(好难好难)
  19. 最长连续子序列长度(撕了一个使用set的),再度优化,有没有其他想法?这个空间复杂度高?时间复杂度什么?
  20. 将阿拉伯数字转换为大写数字?一直抠算法?不断修改测试用例?不断改bug?
  21. Android你了解什么?
  22. Android怎样开启多线程?

因为问题比较多,我主要写了比较常问的问题

还是那句老话,面试是一个双向考察的过程,面试官考察你,同时你也要考察考察公司。要真是不喜欢的话,工作做得也不开心,当然也不会长久。工作毕竟还是占据了生活中的大部分时间,找一个自己喜欢并愿意投入的工作对自己的成长也好一点。
同时,面试也是一个考察综合能力的地方。不要以为技术上准备的很充分了就万事大吉。在面试的时候,态度、分析问题的能力、自信度、人品这些都决定了你能否拿到offer。

面试细节

面试一般的时间是在两三个小时左右,作为求职者。我们要在这段时间内,将我们的价值展现给面试官和HR。就像推销产品一样,你得站在旁观者的角度思考一下,这个人值不值得我们买入(发offer),他(她)的性格怎么样,人品值得信任吗等等。站在这个角度想一下的话,有很多问题你自己就想通了。当然你考虑这些问题的前提是你的技术准备已经挺充分的了。

总结

2020上半年的面试总结下来,比前两年要难上许多当然大厂还是一如既往的难~~~。如今的面试官经验也丰富很多,很多问题并不会直接问你,而是抛出一个具体的问题由你去分析。有的还是考察你在产品和开发之间的项目协调问题,比如出了一个客观上无法解决的问题,你该如何去协调。还比如会考察你一些对产品的思考。

最后我会提供一些我面试准备阶段复习所用到的一些基础知识点,面试必问的一些基础原理知识资料。有需要的小伙伴可以参考一下。内容包括Android学习PDF+架构视频+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

其实除了思考力,足够扎实的技术能力也足以帮助大家度过“分水岭”。

互联网行业是一个知识迭代非常快的行业,如果你不养成学习的习惯,其他人不会停下来等你,这样的话你就等于一直在退步!

如果你有需要的话,可以点击获取

产出不易,喜欢本文的话,不妨顺手给我点个小赞支持一下呗~在这里先谢谢各位大大了

上一篇 下一篇

猜你喜欢

热点阅读