面试题

handler实现原理,activity启动原理,进程通信原理,多线程等等,

4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!


绘制部分


Drawable


简历


java 架构性能



  • 1.首先说说我技术上的目标吧,我的目标分为近、中、远三个层次:
    • 1.近:指的是一年以内。我的目标是干好自己的本行工作 android,同时吃透公司中 android 相关的各种技术,然后有目标的学习公司中有关音视频的技术(目前有权限接触)。
    • 2.中:指的是两三年内。我的目标是慢慢开始接触公司中的音视频开发,同时吃透公司中音视频相关的技术,然后有目标的学习公司中的关于图像视频方面的各种算法(目前没有权限接触)。
    • 3.远:三年之后,估计我会跳槽或者与靠谱的人一起创业啥的,此时我的目标是成长为T型人才,能担任起技术负责人的角色,不再局限于某种技术。
  • 2.再说说我个人的定位吧,首先我们常常会听见大家会将算法工程区分开来,我自认为在这两个之中在我在工程这边的优势更大一些,虽然我对算法也挺感兴趣,但是毕竟比不上各种paper拿到手软的硕士博士。这个时候我的定位就是了解算法的工程型程序员,这样能让我在两边都各有优势。
  • 3.最后就是技术路线了,前面说了我的技术目标,这样一来我的技术路线就比较好理解了。
    • 1.思维导图中的路线分三个等级:红色(需要了解源码原理,或者精读书籍)、蓝色(需要会使用)、灰色(只需了解)
    • 2.首先是 android 方面,这也是我最近在做的事情:
      • 1.架构分 mvc、mvp、mvvm:mvc 已经腐朽、mvp 是目前各大厂商使用的主流框架,不过大多公司不会遵循 mvp 的原始设计而是进行合适的魔改、mvvm 中的 databinding 2015年就出来了但是现在还是上不了台面,剩下的几个是这两年 google 推荐的架构框架,标红的是可以被整合到 mvp 中去的,所以值得学习。
      • 2.数据库分为两大类:sqlite 与 realm(一个性能比较好的移动端数据库)。因为 realm 是 c++ 实现的所以并不需要去特别的了解其原理只需会用即可。sqlite 中又有许许多多的 orm 这里面以 greenDao 和 room 性能最佳。room 似乎用的人不多,所以去了解 greenDao 的原理即可。
      • 3.网络这边:目前 retrofit + okhttp 是绝对的王者所以必须了解其中原理。socket 是网络库的基石会用即可,当然这里面涉及到的计算机网络知识还是需要了解原理的。volley 这东西非常老的项目中应该还会使用,在我这边不作要求。
      • 4.代码生成:这东西用好了可以做大量有意思的东西,android端的 aop 就可以用这些技术来实现,不过也不需要了解其原理,会用就行。
      • 5.动态框架中 flutter 目前看来有称王的趋势,所以不仅要会用,还需要了解其原理。而其他两个东西估计是打不过 flutter 了,不学也罢。
      • 6.图片处理框架中:Fresco 以性能强、功能多、定制性强著称。glide、Picasso等等以轻量,侵入性弱著称。像短视频这种场景,在图片处理方面的需求很多,自然是使用 Fresco 而且需了解其原理。
      • 7.序列化与反序列化中:json 是老牌霸主。但 protobuf 的性能极强,又有 google 背书。所以两个都不能拉下。
      • 8.剩下的日志、kotlin、插件化、推送、im 等等就不一一列举的,这些都是需要了解其内在原理,这样才能在自己写轮子或者基于开源组件定制轮子的时候不出纰漏。
    • 2.接下来是音视频方面:这些里面的东西大多也是我需要学习的,所以可以与读者一同成长
      • 1.音视频的基本原理与概念是必须知道的东西,这里随意列了两个东西,更具体的也许要等我学习之后再进行补充了。
      • 2.c++ 是进入音视频领域的敲门砖,不了解你连代码都看不懂,所以这里列了三本书可以按顺序观看
      • 3.雷宵骅的博客,雷宵骅是个大牛级别的人物,可惜英年早逝。他的博客一定要去看。
      • 4.FFmpeg 也是一个难啃但是必须啃的骨头,这里列了两本书和一个类库,红色优先级。
      • 5.protobuf前面说了就不再赘述。OpenGL 与 OpenSL 这两个技术只需会用即可。
      • 6.最后就是 gpuImage 和 grafika 了。这两一个是基于 OpenGL 的封装库,一个是 google 开源的 android 端图形图像处理项目,都必须去看源码了解原理。
    • 3.然后是后端技术:这里的话没有兴趣的同学其实可以不去了解,这里只是我的个人喜好。因为我也实习过半年的 java 后台,所以后端我也比较熟悉,可以闲着没事玩玩,拓展拓展。
      • 1.rpc 是微服务架构的前提,各种大厂都出过自己的 rpc 架构。我在这篇文章中分析过这些东西,有兴趣可以去看看。我这里列的红色优先级都是与 python 相关,原因是 python 在深度学习中非常有用,而且在写后台方面也能快速迭代。
      • 2.数据库和消息队列是两个在后端非常常用的技术,这里我只将他们列到了会用的范围,因为并没有太多的时间去了解他们的技术原理。
      • 3.服务治理这方面了解即可
    • 4.接下来到了算法方面:其实音视频的深了之后自然而然的会需要用到各种算法,包括视频特效,视频渲染,人脸识别,美颜瘦脸等等等等。
      • 1.图像处理,这一块我在毕业设计的时候做过,还是挺有意思的。Opencv就能解决大多数这方面的需求了,如果能再看一看《数字图像处理》这本书,你将会别的更加完美:)。
      • 2.深度学习。这一块我也在毕设中用到过,其实这里对数学知识要求有点高,真的有兴趣的同学可以按顺序把前面三本书看完,然后学学 python 和 c++ (这也是我前面学这两个语言的原因之一)。最后看一下 cs231n 的视频进行实战。如果此时还满足不了你的话,就可以去看前沿论文了。我自己的目标也是只要能复现论文就行。
      • 3.推荐算法的话了解就行。
    • 5.最后一个东西是 linux/unix:这里面的东西我觉得还是挺重要的,虽然你不需要去了解原理,但是如果你不会用 shell 和 vim 的话。前面我列举的很多东西你将学的举步维艰。所以花几个周末去学学吧,比起编码还是简单的,学不会的原因可能只是因为你不愿跳出舒适区。

推荐阅读更多精彩内容

  • 前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...
    Boyko阅读 2,686评论 8 129
  • 最近从成都来深圳了。目前在深圳这边找工作。作为一个Android开发者,来深圳这边找工作给我的感觉就是好难。可能是...
    CokaZhang阅读 3,054评论 6 17
  • 年关时是面试求职高峰期,最近有很多网友都在求大厂面试题。发出来分享给大家。 这些题目是网友去百度、小米、乐视、美团...
    java了个巴拉阅读 1,803评论 0 45
  • 金九银十,又到了面试求职高峰期,最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享...
    程序员技术圈阅读 408评论 0 11
  • 委托模式与状态模式 由于策略模式与状态模式有一定的共同性,所以我把两种模式放在一起讨论。 同时我在知乎上发现一个回...
    VirusKnight阅读 367评论 0 0