Android开发者该如何提升自己?

说说我的两点建议:

1、横向发展:(适合有自己专精技术的人)

在自己擅长领域深入钻研的同时,会Hybrid开发(Flutter,RN,H5)之外,会web开发、微信小程序等,再过5年你也完全不用担心找工作。但是,这确实比较难,全栈容易发展成全菜,就是啥都知道,啥都不精!

2、纵向发展:(适合大多数人)

如果做应用开发,就往应用架构方向发展;如果做系统层开发,就钻研底层驱动。

可以从以下这些方面进行学习:

移动架构

架构展示层:MVC、MVP、MVVM、Android Architecture Components;

架构层:模块化->组件化->插件化->沙盒/双开技术;

基础进阶:

比如高级自定义View、Android Framework层原理, App 管理机制等等;

JNI 和 NDK 开发也是比较常见,5G来了,招聘单位都在给自己公司规划小视频功能,然而我们却连NDK都不懂;

学习开发语言:

比如Kotlin,做底层C/C++是必不可少的,还有一个最容易忽略的 Java语言本身的高级面向对象思想;

源码:

看懂并且熟悉源码,熟悉其实现原理,争取做到能自己二次封装三方库。

android 左右方向键 安卓方向_Java

饿了么Android岗一面

  • 1:双亲委托机制?
  • 2:插件化原理?
  • 3:垃圾回收机制及其优缺点?
  • 4:PathClassLoader和DexClassLoader区别?
  • 5:说下Binder?
  • 6:Android旋转屏幕后Activity生命周期,Bundle是存储在哪儿的?
  • 7:事件分发机制?
  • 8:Handler实现?
  • 9:Java内存?
  • 10:OkHttp设计模式?
  • 11:算法。
  • 12:Http和Https的区别
  • 13:HashMap的具体实施原理,HashMap和Hashset的区别
  • 14:Java的垃圾回收机制
  • 15:JVM的原理及线上调优
  • 16:string,stringbulider,stringbuffer的区别
  • 17:Java的设计模式
  • 18:在白纸上手写二分法排序算法,这道题我在lintcode上面做过原题
  • 19:有哪些可以保持进程同步的方法
  • 20:如何避免死锁
  • 21:常见的数据结构有哪些
  • 22:leetcode 原题:查找单链表中倒数第K个节点的算法,面试官要求手写

百度Android岗一面

  • 1:算法:寻找出现超过一半的数字?
  • 2:HashMap原理?
  • 3:热更新原理?
  • 4:AstncTask+HttpClient 与 AsyncHttpClient有什么区别?
  • 5:Https握手过程?
  • 6:RecycleView原理?
  • 7:RecycleView的使用?
  • 8:Hybrid通信原理是什么,有做研究吗?
  • 9:ListView图片加载错乱的原理和解决方案?
  • 10:对称加密与非对称加密?
  • 11:TCP、UDP差别?
  • 12:TCP保证可靠的手段?