网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
基于全栈发展的趋势,在自己擅长领域深入钻研的同时,横向扩展,不要关起门闭门造车。
而这里说的横向提升就是向前端转型,在除了要在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是进程同步的吗?有什么方法做到同步
- 介绍下SurfView
- HashMap实现原理,ConcurrentHashMap 的实现原理
- BroadcastReceiver,LocalBroadcastReceiver 区别
- Bundle 机制
- Handler 机制
- android 事件传递机制
- 线程间 操作 List
- App启动流程,从点击桌面开始
- 动态加载
- 类加载器
- OSGI
- Https请求慢的解决办法,DNS,携带数据,直接访问IP
- GC回收策略
- 画出 Android 的大体架构图
- 描述清点击 Android Studio 的 build 按钮后发生了什么,大体说清一个应用程序安装到手机上时发生了什么;
- 对 Dalvik、ART 虚拟机有基本的了解;
- Android 上的 Inter-Process-Communication 跨进程通信时如何工作的;
- App 是如何沙箱化,为什么要这么做;
- 权限管理系统(底层的权限是如何进行 grant 的)
- 进程和 Application 的生命周期;
- 系统启动流程 Zygote进程 –> SystemServer进程 –> 各种系统服务 –> 应用进程
- recycleview listview 的区别,性能
- 排序,快速排序的实现
- 树:B 树的介绍
- 图:有向无环图的解释
- TCP/UDP的区别
- synchronized与Lock的区别
- volatile
- Java线程池
- 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面)
- HashMap
- singleTask启动模式
- 用到的一些开源框架,介绍一个看过源码的,内部实现过程。
- 消息机制实现
- ReentrantLock的内部实现
- App启动崩溃异常捕捉
- 事件传递机制的介绍
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!