起因

事情是这样的。

4年前毕业那会,呆在公司的短视频项目,做 视频。那会做得比抖音还早,但是由于短视频太烧钱了,项目被公司关掉了。当时需要开发横竖屏直播/异步视频的场景,就研究下了市场上的 app,发现输入弹幕的交互并不友好。最直接的体验就是,微信比绝大部分IM软件在聊天场景下输入法与表情面板频繁切换时表现得更为平滑,不会给用户很突兀的闪烁感。但我们除了适配竖屏,们还需要兼容横屏/满屏/沉浸等场景。

摸索了一段时间之后,做出来的效果挺不错,比市面上的直播/异步视频播放场景下的输入交互体验都要好。于是写了个记录的 Blog Android -SystemUI的那点事 。主要是将如何设计横竖屏直/点播场景下良好的输入交互。但是文章并没有写完… 留了横屏模式下使用 PopupWindow 来实现的悬念… 本打算继续接着写第二篇。结果一拖,就是三年。

而在这三年里,前后参与开发了十多个项目(我们是流水线生产,老工具人),而涉及到输入交互的模块已经有IM聊天,直播间,异步视频播放页面,信息流评论等等。这些页面从最初使用 Activity 实现到演化成可用 Fragment,Dialog,PopupWindow 代替。所以原来那套技术实现已经不能满足。在寻找外部开源项目/技术博文无果的前提下,慢慢积累了一个库

听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。

在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。

在实现的过程中,总是会被提如下的需求:

这个字能不能大点或者醒目点儿?
感觉颜色和设计稿有差别,能不能再调调?
怎么老是崩溃啊,行不行啊?

所以,工作过一年后你会发现,自己的工作重点就是**将找各种各样的组件、框架,拖拖拽拽,改改样式。**在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。

造成这种局面的有两种原因:

**1.**所开发的App功能要求并不复杂,在性能上呢,也不需要极致的追求;
2.自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划。

从自身规划的角度讲,技术上的进阶分如下几个阶段:

**1.做好业务需求的功能。这个是初级程序员就应该有的能力。

**2.**解决极端情况下的技术问题,比如性能优化,OOM等。**稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的App在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。**在忽略这些问题的过程中,也放弃了进一步提升的可能性。**还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。
**3.**在开发框架和效率上做文章。**举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。

上面列举的几个阶段,首先要从思考方式上去逼迫自己不断地逼迫自己,不要偷懒。其次,要想按照上述阶段发展,还需要落在实处,在具体的技术体系中不断的学习。

举个例子:

对于OOM,需要知道有哪些优化工具可以使用(Lint、MAT等),如何检测OOM,以及垃圾回收机制等深层次的原理。对于性能优化来说,如何减少apk体积、资源动态加载等都是必会的。以下是性能优化相关思维导图**(文末还有更多Android架构进阶的学习资料免费分享)**

在体系化的学习过程中,博客、书籍、视频课程都是较好的学习手段。

鉴于Android也是基于java语言的,因此很多与java相关的基础也是必须掌握的,比如《深入理解Java虚拟机》、《Effective Java》等相关书籍也是必读的。

Android相关的书籍包括《Android权威编程指南》、《Android开发艺术探索》等,进一步的还可以去阅读Android相关源码,配合《Android源码设计模式解析与实战》等书籍,对阅读源码大有裨益。

总结

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的14套腾讯、字节跳动、阿里、百度等2020面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。



网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

BC%81.md)对大家有一个方向参考。

[外链图片转存中…(img-AuM98RkR-1614048752778)]

android定位!如何化身BAT面试收割机?附面试题答案相关推荐

  1. 大牛手把手教你!如何化身BAT面试收割机?附答案

    一.背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程,也是对我目前负责项目的一次学习总结.既然选择从项目实用性考虑,下面的讲解内容可能并不一定完整,更多的是符合项目目前使用到的一些特 ...

  2. 想学IT的必看!如何化身BAT面试收割机?终局之战

    前言 下面的题目都是大家在面试字节跳动或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享. 参考解析:郭霖.鸿洋 内容特点:条理清晰,含图像化表示更加易懂. 内容概要:包括 Hand ...

  3. 如何化身BAT面试收割机?Android校招面试指南

    没有稳定的工作,只有稳定的能力. 又到了万物复苏的季节,在程序猿这个行当里,作为 Android 开发出生的,在经历了八年的脱发生涯后,有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起,在 R ...

  4. 如何化身BAT面试收割机?Android篇

    前言 今天来跟大家分享TIM最强保活思路的几种实现方法.这篇文章我将通过ioctl跟binder驱动交互,实现以最快的方式唤醒新的保活服务,最大程度防止保活失败.同时,我也将跟您分享,我是怎么做到在不 ...

  5. Android Wear 开发 (一),如何化身BAT面试收割机

    3.   自定义卡片:保留官方提供的卡片流样式,个性化修改卡片内容 4.   完全自定义界面:自己实现界面,需要处理多分辨率问题,自由度高 5.   手表表盘:类似手机动态壁纸的机制 开发平台的搭建 ...

  6. 如何化身BAT面试收割机?看看这篇文章吧!

    前言 前不久,几个朋友聚会,谈到了现在的后辈,我就说起了那个大三就已经拿到网易offer的小学弟. 这个学弟是00后,专升本进入我们学校的.进来后就非常努力,每次上课都是第一个到教室的,每次都是坐第一 ...

  7. 如何化身BAT面试收割机?都是精髓!

    本文框架如下 第一部分,主要是在阅读代码过程中的日志和笔记: 第二部分,主要介绍了 Redis 的主要框架,以及 Redis 是如何提供服务的,从一个最简单的命令开始讲起: 第三部分,主要介绍 Red ...

  8. 微信小程序开发之——音乐播放器-编写页面结构和样式,如何化身BAT面试收割机

    前言 这些题目是网友去美团等一线互联网公司面试被问到的题目.笔者从自身面试经历.各大网络社交技术平台搜集整理而成,熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率. 主要分为以下几部分: (1 ...

  9. 如何化身BAT面试收割机?值得收藏!

    前言 对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,也是一样,出身于专科,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个专科渣渣也奋斗了起来 ...

最新文章

  1. 《数学之美》第1章 文字和语言 vs 数字和信息
  2. Android线程管理(一)
  3. opengl 粒子按轨迹运动_袁讲经典4:一个粒子在电场中的运动轨迹相关问题
  4. CodeForces - 1311F Moving Points(线段树+离散化)
  5. js方式调用php_举例说明JS调用PHP和PHP调用JS的方法
  6. 四年级计算机课程,信息技术(四年级)全部课程PPT课件.ppt
  7. Hive设计和体系结构
  8. 标准模板库之双向循环链表的内部关系
  9. .net语言中使用MapWinGIS.ocx
  10. 在中国云市场淘金?看国际云大佬如何“软着陆”
  11. 深度学习样本标完后图片增强标签内容不变
  12. 银联 php hex2bin,银联支付
  13. word 制作流程图
  14. 语音中常用输入特征的提取过程:MFCC、FBank
  15. java.lang.RuntimeException: Method w in android.util.Log not mocked Androidstudio单元测试配置build.gradle
  16. 学校计算机总帐和明细帐的表格,总账与明细账
  17. 蓝牙相关学习:4.2.BLE空口包结构 - PDU
  18. Android: NDK doer not contain any platfor
  19. 图解 RNN, LSTM, GRU
  20. MyBatis的日志工厂 | MyBatis系列(五)

热门文章

  1. linux gcc忽略警告,GCC 警告提示的用法
  2. sudo cd为什么不能够执行
  3. read only status pyCharm
  4. 越努力越幸运!(2017年终总结)
  5. ARIMA疫情期间港口靠挂数的时间序列分析
  6. 想分享给马云和李开复的一篇文章
  7. 小程序如何实现定点跳转其他的小程序(京东、苏宁)的具体店铺或商品页面
  8. dbd mysql_解决无法安装DBD::mysql模块
  9. 为何穷人玩股票绝大多数会赔钱?
  10. 《FontForge常见问题FAQ》字王翻译版