写在前面

记得我大二时“不务正业”地自学Android并跟了老师做项目,到大三开始在目前的公司实习,至今毕业已有几年多,学习Android已经6、7年多了!但总感觉知识点很零散,并且不够深入,遇到瓶颈,所以有了这文章。

本文是我对自身的Android编程技能的总结、思考和反省,意在系统地、深入地学习Android的重难点,使自己的能力上一个台阶。下面我将会罗列Android知识体系中比较高频、重要或难懂的知识点,并未来会基于此文章列出的知识点一个一个学习研究,并写成一系列的文章,当做自己的学习总结笔记,也希望童鞋们和我一起学习和交流~

说明:本文不是面试经验谈,而是自我总结。我也不打算像网上很多文章那样只列出点,说出结果,而没说原因,然后死记硬背,知其所以然而不知其然。而我是打算对下面的知识点深入学习,并对每个知识点从源码或举例来写成文章,从而即知其然又知其所以然。我也不知能否做到,但我会坚持努力,当作立个flag吧~

面试

一面

面试官:先介绍一下自己吧,做过哪些项目,掌握哪些技能

我内心:(简历都有写的,你自己不会看么?只好照着简历里写的说了一遍)
熟悉Android Framework,组件化开发及MVC/MVP/MVVM程序设计框架;熟悉UI/ NDK开发,掌握TCP/IP,HTTP网络通信机制,有OkHttp使用包装经验,熟悉安卓图形处理OpenGL ES机制,有Camera视频开发经验。熟悉国密加密解密算法,有通过OMA访问手机SE,利用SIM卡进行加密解密的经验;有在支持NFC手机上进行读取NFC标签及支付的经验。有前端及后台服务器的开发经验,熟悉开发框架React,Vue,Spring Boot及Mysql数据库。熟练掌握的语言有C++11, Java, Python, Kotlin等,能熟练使用Git,VS Code, Android Studio等工具和开发环境。

面试官:懂的还挺多(这时才低头看我简历)工作经历也挺多的,那说说做的最满意的项目是哪个

我内心:(白眼)
描述了我北京一家公司的社交APP,介绍功能,实现,用到的技术,设计思想等等。

面试官:说一下项目中的性能优化怎么做的

我:首先是启动优化,MultiDex 分包机制,dex分包预加载等等。稳定性–内存优化,流畅–卡顿优化等等,反正我整理的这份一线互联网大厂高频面试知识点资料里关于性能优化的全给他讲了一遍。(文末会无偿分享给大家)

面试官:(有点懵13了,没想到我能讲这么多)内存泄漏,还有哪些检测工具?LeakCanary 的原理知道吧?

答:利用Application#registerActivityLifecycleCallbacks Activity生命周期回调onActivityDestroyed方法通过调用RefWatcher#wather方法来检测对象是否回收,通过removeWeaklyReachableReferences—>gcTrigger.runGc—>removeWeaklyReachableReferences—>heapdumpListener.analyze 三步二次检测来确定内存泄露,最终dump 内存信息来分析到最终显示分析出的泄露信息。

面试官:有点东西啊,来说一说,在5.0以上和4.0加载dex时的方式有什么区别?

不知道

面试官:说说什么是同步屏障,在Android绘制的过程中,掉帧是如何处理的

Android绘制原理,同步屏障,然后发送VSync脉冲信号

面试官:OOM、ANR 异常怎么处理

EZ,我的博客里都有解析的,大家感兴趣可以去我的主页看一下,就不多说了。

面试官:okHttp的原理了解吗?如何对它封装的

答:重试拦截器、桥接拦截器、缓存拦截器、连接拦截器、请求服务拦截器(封装)。每一个拦截器负责的工作不一样,就好像工厂流水线,最终经过这五道工序,就完成了最终的产品。

GreenDao的实现原理

忘记了

Retrofifit实现原理

只记得,Retrofifit 是一个RESTful 的HTTP 网络请求框架的封装。

整个面试大概是有一个半小时,他就简单问几句,中间喝了几次水,期间没有人给我递杯水问到后面我是有点不耐烦了的。

感想

几天后收到了二面的通知,直接拒绝了。一面给我的感觉非常不好。让我讨厌的面试官有以下几点

1、打断别人说话

在回答他提出的问题,我说着说着,他就打断:这个不是这样的,应该是这样的。或者没等我把这个答案说完,就直接顺出了下一个问题。

2、没礼貌

摆着一副架子,好像是我求着要他给我通过面试一样,一个半小时的面试,自己都要喝水,我一直在讲,也没有给我递杯水。面试中途还接了几次电话,把我晾在那里。

3、质疑别人的职业规划,对我的职业规划指手画脚。觉得自己的才是对的

问我为什么离职,我说出了自己的原因,产品方向和公司发展以及个人的一些进阶。然后他竟然怼过来说,一个做技术的在哪里不一样,这方面的东西不应该是你考虑的,做好自己的工作就行了,呵呵,呵呵呵呵。。。我就笑一笑

后来又面了几家公司都不是很满意,最后朋友内推拿了小米数码科技的offer。

感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?

Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

最后

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;

技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关

在这我也分享一份大佬自己收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

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

SkNLaERkbnFoS0ZF)

[外链图片转存中…(img-G9AkZ9L2-1620701463511)]

[外链图片转存中…(img-JLjzFxhN-1620701463513)]

相信自己,没有做不到的,只有想不到的

Android开发者该学习哪些东西提高竞争力?成功入职腾讯相关推荐

  1. Java开发者该学习哪些东西提高竞争力?灵魂拷问

    前言 MyBatis是一个支持普通SQL查询.存储过程和高级映射的优秀持久层框架.MyBatis 去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML ...

  2. 开发8年的老Android才知道,成功入职腾讯

    前言 现在已经进入招聘季节,本篇文章旨在分享知名互联网企业面试官面试方法和心得,希望通过本文的阅读能给程序员带来不一样的面试体验和感受,放松面试心态,积极备战! Android 知识体系 在 Andr ...

  3. 真香定律!一文带你搞懂Android多线程Handler,成功入职腾讯

    Google 为了帮助 Android 开发者更快更好地开发 App,推出了一系列组件,这些组件被打包成了一个整体,称作 Android Jetpack,它包含的组件如下图所示: 老的 support ...

  4. 2021年最新Android面试点梳理,成功入职腾讯

    背景 本人双非渣本 今年由于疫情,上半年一直在家里.2月份本来无忧无虑,呆在家里不给国家添乱的时候,发现身边的同学找到了大厂的offer.心里开始有点慌张.本来想在3月份如果能回到学校,就开始考研之路 ...

  5. 讲的真详细!如何成为一个更好的Android开发者?成功入职腾讯

    前言 文章篇幅较长,建议耐心食用,相信对你有帮助.码字不易,如果有误,欢迎指出. 前部分是面试经历,后部分是附带的问题笔记/推荐回答/书籍. 我的微信小号有一组特殊的朋友.他们从 CSDN上看到我之前 ...

  6. 深入浅出Android!面试题解析已整理成文档,成功入职腾讯

    前言 想要成為一名優秀的Android開發,你需要一份完備的 知識體系,在這裏,讓我們一起成長為自己所想的那樣. 金九银十是大家的換工作潮,在這波浪潮裡沉浮的我經歷過快一個月的面試後,決定把這些遇到的 ...

  7. 2020年了,Android开发者应该会哪些东西才不会被公司淘汰?

    面向Android初.中级开发者,对于要学习的Android理论知识,我认为主要包括: Android基础 & 常用 Android进阶 与时俱进.热门技术 编程语言 计算机基础 下面,我将对 ...

  8. Android开发该学习哪些东西?

    开篇: 本人也是众多Android开发道路上行走的一员,听了不少大神的知乎live,自己也看了不少书,也和不少前辈交流过,所以在这里分享一下Android开发应该学习的书籍以及知识,当然,也包括一些方 ...

  9. android培训课程!不同层级的Android开发者的不同行为,成功入职阿里

    前言 找工作还是需要大家不要紧张,有我们干这一行的接触人本来就不多 难免看到面试官会紧张,主要是因为怕面试官问的问题到不上来,那时候不要着急 ,答不上了的千万不然胡扯一些,直接就给面试官说这块我还没接 ...

最新文章

  1. mysql 范围内日期列表,mysql – 将日期列表条件中的日期转换为日期范围列表
  2. 试除法的妙用【O(√N) 复杂度】
  3. C#泛型对类型参数的推断
  4. AndroidManifest.xml介绍
  5. 坑爹的UICollectionView
  6. 最简单的控制台登录小案例,适合初学者
  7. centos 安装及vim使用
  8. 运用范式的规范数据库设计的好处
  9. 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·004
  10. BI开发之——ETL注意细节
  11. 文件服务器文件夹卷影副本,共享文件夹的卷影副本的最佳操作
  12. 各代iphone ipad iPod各种信息 获取设备型号等等整理
  13. 通过数据了解用户——数据在新品设计中的应用
  14. (一)理解word2vec:原理篇
  15. 安装tensorflow---目前还没有支持windows
  16. 智学网登录不了java_智学网常见问题解答
  17. android手机进入fastboot,安卓手机进入Fastboot模式的多种操作方法
  18. 具有立体效果的地图制作
  19. Python数据分析师训练营全套课程
  20. MicroERP简介及下载

热门文章

  1. 一些名企秋招网申链接合集
  2. 码云的上传、下载项目
  3. CSS进阶(2)- 块级格式化上下文
  4. 我热爱计算机作文450字,我的兴趣爱好作文450字精选5篇
  5. C++控制输出的字体颜色
  6. NTS-Net论文思想
  7. 【TensorFlow】神经网络中间层截取、可视化中间层结果
  8. 苹果应用中含有第三方支付怎么办?
  9. DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析
  10. 《预测控制》学习记录二-DMC的内模控制结构(IMC)分析