他经历了什么?七年资深Android程序员想转学Java,网友纷纷留言劝阻!2021年Android岗该如何进阶呢?

他经历了什么?七年资深Android程序员想转学Java,网友纷纷留言劝阻!2021年Android岗该如何进阶呢?,第1张

概述“现在学习Android开发还有前景吗?”最近在网上看到一热门文章,说的是一名工作七年的Android程序员想转学Java,他到底经历了什么,是什么把他给压垮了,难道说Android开发真的没有前景了吗?网友给出的答案并不是一致的,大部分网友都在劝阻他,对Android开发前景还是很看好的,也有少数网

“现在学习AndroID开发还有前景吗?”
最近在网上看到一热门文章,说的是一名工作七年的AndroID程序员想转学Java,他到底经历了什么,是什么把他给压垮了,难道说AndroID开发真的没有前景了吗?网友给出的答案并不是一致的,大部分网友都在劝阻他,对AndroID开发前景还是很看好的,也有少数网友有着同样的经历,感觉工作就是在摸鱼,技术点已经遇到了瓶颈。那么2021了我们还应该学习AndroID吗?到底如何还能做到吃香的程度呢?小编根据自己多年工作经验与素材收集,有了以下见解:

“AndroID开发还有什么可以研究的?”

近些年,移动开发市场看似并不乐观,小程序、快应用的崛起,让许多App的增长达到瓶颈,尤其是AndroID开发。

既然红利期已过,就更需要精炼的技术作为支撑,像现在的中高级招聘要求,除开学历要求、AndroID基础之外,把JNI/NDK/Framework,甚至Js、Server端开发也作为了提升点,是全栈方向的雏形。


其实,安卓开发的从业者会发现,各大公司中高端职位有明显增加,这也意味着安卓开发已进入技术赋能业务时代,所以增强个人的竞争实力,也就是AndroID开发能力很有必要。
我之前被朋友拉到了一个AndroID中高阶技术交流群,群里有很多大神时不时会在群里交流开发经验,并且还会有很多实用的总结经验,我全部都下载私藏了,拿着资料还能听大神培训,爽爆了,我也推荐给大家,有需要的可以点此处免费自取。

因为我本身就是本科院校出生,从事AndroID开发今年就3年了,在群里通过大神的培训和资料,顺利的让自己的级别和薪资都有上升。
所以,也来和大家总结一下,AndroID开发人员的发展方向。

第一:横向提升

基于全栈发展的趋势,在自己擅长领域深入钻研的同时,横向扩展,不要关起门闭门造车。
而这里说的横向提升就是向前端转型,在除了要在APP会hybrID开发(web、native、前端交互、硬件交互)之外,还要会web开发,微信小程序,H5。
比如服务端开发,我们做AndroID开发很多时候,要依赖于服务端接口返回数据,可以自己试着搭建一下,至少要对服务端的结构理论、服务于服务之间通信、聚合是什么样的流程也是需要有所耳闻。

第二:纵向重塑

一直以来,做AndroID开发有这么两个说法,如果是做应用开发,往应用架构方向发展比较合适;如果是做系统层开发,往往底层驱动比较合适。
那具体应该学习什么呢?

1、移动架构
架构展示层—MVC、MVP、MVVM、Clean、Flux、AndroID Architecture Components;
架构层—模块化->组件化->插件化->沙盒/双开技术,比如可以双开微信,类似Docker,每个页面都是插件,类似Vue.Js中每个页面都是组件。

2、基础进阶
这个方向可能比较多,比如VIEW、AndroID动画机制、四大组件工作原理、多媒体技术等等。
我们平常在工作中碰到的VIEw滑动冲突问题,其实通过掌握VIEw工作机制和AndroID触摸时间体系就能轻易解决掉。
还有对于需要开发绚丽的动画效果,那么对于视图动画和属性动画一些特性必须有一定的了解。
AndroID中的四大组件工作机制其实底层应用的是Binder机制,我们不妨送AIDL这个接口来了解Binder。
JNI和NDK开发也是比较常见的,特别对于一些做NDK项目为主的,这一块开发流程也是需要掌握。
NDK开发也是佣人单位区分应聘者的手段之一,企业不一定要用到,但是可以通过是否掌握NDK来筛选人才。

3、语言学习开发语言
这里要纠正一下学习语言不是跨行业,比如Kotlin可以说是AndroID世界的头等公民了,再有时下比较火的Python和GO,另外做底层C/C+++是必不可少的。

4、源码
要求能看懂并且能够熟悉源码(自己选几个第三方库的也可以),要做到熟悉源码及其实现原理,并且要能做到自己二次封装(或自己贡献三方库)三方库

这样一来,你就会在维护中慢慢成为这个技术块的专家了,我觉得输出倒逼输入是一个不错的学习方式。
当然文中所有资料都是免费分享给大家的,有需要的朋友可以点此处免费领取。
其实,学习的方向还有很多,这里就不一 一给大家罗列了,因为不同项目需要学习的进阶的技能都不一样,如果说想要360度全发展的话,那肯定是要进行更加系统的学习。

另外附上一份BATJ大厂面试真题:

百度

Bitmap 使用时候注意什么?Oom 是否可以try catch ?内存泄露如何产生?适配器模式,装饰者模式,外观模式的异同?ANR 如何产生?String buffer 与string builder 的区别?如何保证线程安全?java四中引用Jni 用过么?多进程场景遇见过么?关于handler,在任何地方new handler 都是什么线程下sqlite升级,增加字段的语句bitmap recycler 相关强引用置为null,会不会被回收?glIDe 使用什么缓存?GlIDe 内存缓存如何控制大小?如何保证多线程读写文件的安全?

阿里巴巴

LRUCache原理图片加载原理模块化实现(好处,原因)JVM视频加密传输统计启动时长,标准如何保持应用的稳定性ThreadLocal 原理谈谈classloader动态布局热修复,插件化HashMap源码,SpareArray原理性能优化,怎么保证应用启动不卡顿怎么去除重复代码SP是进程同步的吗?有什么方法做到同步介绍下SurfVIEwHashMap实现原理,ConcurrentHashMap 的实现原理broadcastReceiver,LocalbroadcastReceiver 区别Bundle 机制Handler 机制androID 事件传递机制线程间 *** 作 ListApp启动流程,从点击桌面开始动态加载类加载器Osgihttps请求慢的解决办法,DNS,携带数据,直接访问IPGC回收策略画出 AndroID 的大体架构图描述清点击 AndroID Studio 的 build 按钮后发生了什么,大体说清一个应用程序安装到手机上时发生了什么;对 Dalvik、ART 虚拟机有基本的了解;AndroID 上的 Inter-Process-Communication 跨进程通信时如何工作的;App 是如何沙箱化,为什么要这么做;权限管理系统(底层的权限是如何进行 grant 的)进程和 Application 的生命周期;系统启动流程 Zygote进程 –> SystemServer进程 –> 各种系统服务 –> 应用进程recyclevIEw ListvIEw 的区别,性能排序,快速排序的实现树:B 树的介绍图:有向无环图的解释TCP/UDP的区别synchronized与Lock的区别volatileJava线程池Java中对象的生命周期类加载机制双亲委派模型AndroID事件分发机制MVP模式RxJava抽象类和接口的区别集合 Set实现 Hash 怎么防止碰撞JVM 内存区域 开线程影响哪块内存垃圾收集机制 对象创建,新生代与老年代二叉树 深度遍历与广度遍历B树、B 树消息机制进程调度进程与线程死锁进程状态JVM内存模型并发集合了解哪些ConCurrentHashMap实现CAS介绍开启线程的三种方式,run()和start()方法区别线程池常用数据结构简介判断环(猜测应该是链表环)排序,堆排序实现链表反转动态权限适配方案,权限组的概念网络请求缓存处理,okhttp如何处理网络缓存的图片加载库相关,bitmap如何处理大图,如一张30M的大图,如何预- - 防OOM进程保活ListvIEw图片加载错乱的原理和解决方案https相关,如何验证证书的合法性,https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解

美团

static synchronized 方法的多线程访问和作用,同一个类里面两个synchronized方法,两个线程同时访问的问题内部类和静态内部类和匿名内部类,以及项目中的应用handler发消息给子线程,looper怎么启动VIEw事件传递activity栈封装vIEw的时候怎么知道vIEw的大小arrayList和linkedList的区别,以及应用场景怎么启动service,service和activity怎么进行数据交互下拉状态栏是不是影响activity的生命周期,如果在onStop的时候做了* 网络请求,onResume的时候怎么恢复vIEw渲染

今日头条

数据结构中堆的概念,堆排序死锁的概念,怎么避免死锁reentrantlock 、synchronized和volatile(n面)HashMapsingleTask启动模式用到的一些开源框架,介绍一个看过源码的,内部实现过程。消息机制实现reentrantlock的内部实现App启动崩溃异常捕捉事件传递机制的介绍ListVIEw的优化二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径模式MVP,MVC介绍断点续传的实现集合的接口和具体实现类,介绍TreeMap具体实现synchronized与reentrantlock手写生产者/消费者模式逻辑地址与物理地址,为什么使用逻辑地址一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,* 给出时间复杂度、空间复杂度。手写算法AndroID进程分类前台切换到后台,然后再回到前台,Activity生命周期回调方法。dDialog,生命值周期回调方法。Activity的启动模式

爱奇艺

RxJava的功能与原理实现RecycleVIEw的使用,原理,RecycleVIEw优化ANR的原因四大组件Service的开启方式Activity与Service通信的方式Activity之间的通信方式HashMap的实现,与HashSet的区别JVM内存模型,内存区域Java中同步使用的关键字,死锁MVP模式Java设计模式,观察者模式Activity与Fragment之间生命周期比较广播的使用场景

携程

Activity启动模式广播的使用方式,场景App中唤醒其他进程的实现方式AndroIDManifest的作用与理解List,Set,Map的区别HashSet与HashMap怎么判断集合元素重复Java中内存区域与垃圾回收机制EventBus作用,实现方式,代替EventBus的方式AndroID中开启摄像头的主要步骤

网易

concurrenthashmapvolatilesynchronized与LockJava线程池wait/notifyNIO垃圾收集器Activity生命周期AlertDialog,popupWindow,Activity区别

小米

String 为什么要设计成不可变的?fragment 各种情况下的生命周期Activity 上有 Dialog 的时候按 home 键时的生命周期横竖屏切换的时候,Activity 各种情况下的生命周期Application 和 Activity 的 context 对象的区别序列化的作用,以及 AndroID 两种序列化的区别。List 和 Map 的实现方式以及存储方式。静态内部类的设计意图。线程如何关闭,以及如何防止线程的内存泄漏

由于篇幅原因,真题解析了,为了方便大家学习,小编已将所有面试真题与答案解析整理成了一个完整pdf文档,如下图所示:


如有需要的朋友可以点此处免费领取。

总结

以上是内存溢出为你收集整理的他经历了什么?七年资深Android程序员想转学Java,网友纷纷留言劝阻!2021年Android岗该如何进阶呢?全部内容,希望文章能够帮你解决他经历了什么?七年资深Android程序员想转学Java,网友纷纷留言劝阻!2021年Android岗该如何进阶呢?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1039875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存