Java Android学习/面试指南
Flutter | Android | Java | Kotlin | 面试 | 网络 | 系统 | 系统设计 | 工具 | 数据库 | 算法 | TODO |
---|---|---|---|---|---|---|---|---|---|---|---|
|
目录
Android
基础知识
- Activity详细解析
- Service详细解析
- IntentService详细解析
- IntentService原理解析文章
- ContentProvider实例详解
- BroadcastReceiver详细解析
- Android异步任务机制之AsycTask
- Handler,Looper,MessageQueue关系
- Android-SQLite的基本使用
- Android系统相机与相册的使用
- 图片缓存原理
- Android数据存储的五种方式
- Android跟随手指移动的View
- RecyclerView的使用
- Android获取SHA1
- Recyclerview和Listview的异同.md
- 初识ConstraintLayout
- TabLayout记录
- 用SpannableString打造绚丽多彩的文本显示效果
- 解析ConstraintLayout的性能优势
- Android新特性介绍,ConstraintLayout完全解析
- Android新特性介绍,ConstraintLayout完全解析
- Android 一个无限循环滚动的卡片式ViewPager
- Android 中获取控件宽和高的方法(详细解析)
进阶
- Android 学习笔记核心篇
- Android内存泄漏性能优化总结
- 进程间通信详解
- Android中的动画
- 深入了解MVXX模式
- Android项目总结
- Android项目总结2
- 自定义RadioGroup
- Android导入项目一直在Building的解决方案
- 基于TOTP的双向认证算法
- 基于TOTP的双向认证算法
- Android 触控事件解析 - Mastering The Android Touch System 笔记
- 《Android 高性能编程》—— @IntDef 注解,减缓枚举的使用
- Android官网建议代码规范
- 30多年编码经验总结成10条最佳实践
- Android中利用异步来优化处理速度
- 三大图片缓存框架的对比
- SVG图片在Android中的应用
- 携程App的网络性能优化实践
- 途牛插件化原理
- Android分包原理
- 插件化实现的思想
- Android 7.0新特性总结
- RecyclerView局部刷新的坑
- Android单元测试
- gradle 详解——你真的了解Gradle吗?
- AndroidStudio-Gradle多渠道打包
- Android基础入门教程——8.1.1 Android中的13种Drawable小结 Part 1
- Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2
- Android-Drawable高级用法
- 安卓开踩过的坑:你的 Bitmap 究竟占多大内存?
- Android 4.4 中 WebView 使用注意事项
- Android图像处理 - 高斯模糊的原理及实现
- Android实战——GreenDao3.2的使用,爱不释手
- Realm for Android详细教程
- 给 Android 开发者的 RxJava 详解
- Android 谈谈自动化测试
- 检查app是否具有通知栏权限
- Android中图片压缩分析(上)
- Android Studio3.0更新之路(遇坑必入)
- Android Studio3.0正式版填坑路
- Android混合编程:WebView实践
- runOnUiThread 、Handler.post、View.post之间的区别
- 理解 Activity.runOnUiThread
- 说说 getMainLooper
- Android 探究 LayoutInflater setFactory
- 巧用ViewPager 打造不一样的广告轮播切换效果
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- MNCrashMonitor 监听程序崩溃日志,直接页面展示崩溃日志列表
- 『进阶之路』—— 线程池
- 从json文件到炫酷动画-Lottie实现思路和源码分析
- Lottie动画库 Android 端源码浅析
Gradle相关
- 如何理解 Transform API
- Gradle自定义插件详解
- Android 突破 DEX 文件的 64k方法数限制
- Android Dex分包之旅
- 美团Android DEX自动拆包及动态加载简介
- gradle简单入门系列
- Gradle简单配置
- Android 如何编写基于编译时注解的项目
- Gradle 完整指南(Android)
- NDK-JNI开发入门教程项目
- 深入理解Android之Gradle Groovy
- Groovy 闭包
- 要点提炼| Gradle指南
- Gradle专题
- 发布library到Maven仓库
自定义View
- 自定义View入门
- 自定义view详细教程
- 自定义ViewGroup入门
- Android事件分发机制
- CameraView
- CheckView
- CircleView
- FlowLayout
- PieView
- SlideslipListView
- 二阶贝塞尔曲线
- 三阶贝塞尔曲线
- 贝塞尔曲线Demo
- 具有弹性的小球
- PathMeasure
Android常见设计模式
音视频开发
热修复相关
- Android 热修复 Tinker Gradle Plugin解析
- Android 热修复 Tinker接入及源码浅析
- Android 热修复 Tinker 源码分析之DexDiff / DexPatch
插件化相关
编译器相关
- Android Studio 3.0 新功能解析和旧项目适配
- Android-studio使用教程1
- Android-studio使用教程2
- Android-studio使用教程3
- Android-studio使用教程4
- Android-studio使用教程5
- Android-studio使用教程6
- Android-studio使用教程7
性能优化
开源框架
- 当下流行开源框架总览
- easypermission
- ButterKnifeZelezny
- RxJava+retrofit2
- LinLog
- Retrofit 2.0 使用教程
- retrofit 2.0 源码解析
- 关于 RxJava 背压
- RxJava 2.0中backpressure(背压)概念的理解
- Retrofit2 完全解析 探索与okhttp之间的关系 *Dagger2
- 图片加载
- RxJava
应用发布
打包
框架源码分析
- EventBus源码分析
- Bufferknife源码分析
- Glide 源码分析
- OKHttp 源码分析
- Retrofit 源码分析
- ViewModel 源码分析
- 自定义View详解
- Activity界面绘制过程详解
- Activity启动过程
- Android Touch事件分发详解
- AsyncTask详解
- butterknife源码详解
- InstantRun详解
- ListView源码分析
- VideoView源码分析
- View绘制过程详解
- 网络部分 - HttpURLConnection详解 - HttpURLConnection与HttpClient - volley-retrofit-okhttp之我们该如何选择网路框架 - Volley源码分析 - Retrofit详解(上) - Retrofit详解(下)
Kotlin
Flutter
- Flutter学习:
TODO学习清单
Java
基础
- Java 基础知识回顾
- J2EE 基础知识回顾
- Collections 工具类和 Arrays 工具类常见方法
- Java常见关键字总结:static、final、this、super
- Java常见关键字总结:static、final、this、super
容器
- 常见问题总结:
- 源码分析:
并发
- 并发编程面试必备:synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比
- 并发编程面试必备:乐观锁与悲观锁
- 并发编程面试必备:JUC 中的 Atomic 原子类总结
- 并发编程面试必备:AQS 原理以及 AQS 同步组件总结
- BATJ都爱问的多线程面试题
- 并发容器总结
JVM
I/O
Java 8
编程规范
网络
- 浅析socket
- 浅析Hessian
- 浅析RPC协议
- 浅析dubbo服务
- SSH原理与应用
- 理解OAuth 2.0
- OAuth 2和JWT - 如何设计安全的API?
- 计算机网络常见面试题
- 计算机网络基础知识总结
- HTTPS中的TLS
操作系统
Linux相关
计算机操作系统
数据结构与算法
数据结构
算法
数据库
MySQL
- MySQL 学习与面试
- 一千行MySQL学习笔记
- MySQL高性能优化规范建议
- 搞定数据库索引就是这么简单
- 事务隔离级别(图文详解)
- 一条SQL语句在MySQL中如何执行的
- linux下安装MySQL
- MySQL基础操作
- MySQL导出数据库、表
- Error-ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
- ERROR-1045-(28000)--Access-denied-for-user-'debian-sys-maint'@'localhost
- mysql设置远程链接权限
- 关于初次安装mysql8.01遇到的问题解决
Redis
数据库系统原理
SQL
Leetcode-Database 题解
系统设计
设计模式
常用框架
Spring
ZooKeeper
数据通信
- 数据通信(RESTful、RPC、消息队列)相关知识点总结
- Dubbo 总结:关于 Dubbo 的重要知识点
- 消息队列总结:新手也能看懂,消息队列其实很简单
- 一文搞懂 RabbitMQ 的重要概念以及安装
网站架构
攻击技术
面试指南
备战面试
- 【备战面试1】程序员的简历就该这样写
- 【备战面试2】初出茅庐的程序员该如何准备面试?
- 【备战面试3】7个大部分程序员在面试前很关心的问题
- 【备战面试4】Github上开源的Java面试/学习相关的仓库推荐
- 【备战面试5】如果面试官问你“你有什么问题问我吗?”时,你该如何回答
- 【备战面试6】美团面试常见问题总结(附详解答案)
常见面试题总结
- 第一周(2018-8-7) (为什么 Java 中只有值传递、==与equals、 hashCode与equals)
- 第二周(2018-8-13)(String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......)
- 第三周(2018-08-22) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别、HashMap的底层实现、HashMap 和 Hashtable 的区别、HashMap 的长度为什么是2的幂次方、HashSet 和 HashMap 区别、ConcurrentHashMap 和 Hashtable 的区别、ConcurrentHashMap线程安全的具体实现方式/底层具体实现、集合框架底层数据结构总结)
- 第四周(2018-8-30).md (主要内容是几道面试常问的多线程基础题。)
面经
Android面试专场
工具
Git
Docker
构建工具
正则表达式
致谢
本文并非原创,通过各位博主综合而得,以便供自己方便学习,在此感谢各位前辈,并在下面注明出处
- Snailclimb/JavaGuide
- UCodeUStory/DataStructure
- JackChan1999/Android-Interview
- linsir6/AndroidNote
- CharonChui/AndroidNote
- CS-Notes
License
MIT License
Copyright (c) 2019 pengMaster
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.