# AndroidGuide2 **Repository Path**: peng0702/android-guide2 ## Basic Information - **Project Name**: AndroidGuide2 - **Description**: Android面试 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-16 - **Last Updated**: 2022-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 hello,大家好,欢迎大家来到这里,**能来到这里,证明是一种缘分**。 下面我先简单介绍一下自己。 我目前是一名程序员,Android 高级工程师,17 年毕业,从实习到现在,一直从事在 Android 开发,目前在广州。 1. CSDN 博客专家,访问量 113 万+,原创 130+ 2. 从毕业开始,一直在中大厂工作,典型的比上不足,比下有余。哈哈。 这几年开,我是站在巨人的肩膀上成长起来的,同样,我也希望成为你们的巨人。觉得不错的话可以关注一下我的微信公众号**程序员徐公**。主要分享 1. **Android 开发相关知识**:包括 java,kotlin, Android 技术。 2. **面试相关分享**:包括常见的面试题目,大厂面试真题、面试经验套路分享。 3. **算法相关学习笔记**:比如怎么学习算法,leetcode 常见算法总结,跟大家一起学习算法。 4. **时事点评**:主要是关于互联网的,比如小米高管屌丝事件,拼多多女员工猝死事件等 5. 公众号回复“**黑马**”两字,可以获得 Android 学习视频。回复 ”**java**“ 两字,可以获得 java 学习视频。 希望我们可以成为朋友,成长路上的忠实伙伴! ![](https://gitee.com/gdutxiaoxu/blog-picture/raw/master/21/02/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%BE%90%E5%85%AC%20(new).png) **目录如下** - [简介](#简介) - [性能优化](#性能优化) - [启动优化](#启动优化) - [个人总结](#个人总结) - [Android 必学](#android-必学) - [开源框架](#开源框架) - [面试必备](#面试必备) - [网络和基础](#网络和基础) - [面经](#面经) - [徐公随笔](#徐公随笔) - [设计模式](#设计模式) - [算法](#算法) - [剑指 offer](#剑指-offer) - [leetcode 算法](#leetcode-算法) - [算法总结](#算法总结) - [Git](#git) # 性能优化 ## 启动优化 [Android 启动优化(七) - JetPack App Startup 使用及源码浅析](https://mp.weixin.qq.com/s/teU8bNyRnzoYo4aUx5HORQ) [Android 启动优化(六)- 深入理解布局优化](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485155&idx=1&sn=59b7211f2b1414d4f99b0897aa132c50&chksm=fad959a3cdaed0b52ff20fe7cbd40c5fb0ef438ba4aea0a0ac59d04a8ddff817bb8bfe7dd2e8#rd) [Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485017&idx=1&sn=8ce73fc945f71a8539a0dbd4a9fe0248&chksm=fad95919cdaed00f4fcb746c78806283e0102374fb00a4c4d7bc0ec46d3c4ae7da1ab14530ec#rd) [Android 启动优化(四)- AnchorTask 是怎么实现的](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485016&idx=1&sn=196c5e8d130c8e8111c8841782aec607&chksm=fad95918cdaed00e5f1719c49cf8b2c9e4bbe560bf558709d76b0fb9e44b611aeccd9f122e7a#rd) [Android 启动优化(三)- AnchorTask 开源了](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485000&idx=1&sn=36f6b98ac4fb90374149e60e6455fca3&chksm=fad95908cdaed01e0ae8c051c8bd8d78bf336d7dfdce02d57a954bc49bd4c8b16e78ab92232f#rd) [Android 启动优化(二) - 拓扑排序的原理以及解题思路](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484988&idx=1&sn=42c83e9ca5eb3d60a1b993e340086e7c&chksm=fad9597ccdaed06a4064b026d9142235d743e6873e042ce83066edb4e5e6a191f0deeb688bc5#rd) [Android 启动优化(一) - 有向无环图](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484968&idx=1&sn=a7938f7504167110baae12f777b248e7&chksm=fad95968cdaed07e1ce56e11cffdb84638092e37aaa300b68f2de7a267aceaf19df152b21825#rd) [面试官:今日头条启动很快,你觉得可能是做了哪些优化?](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484387&idx=1&sn=d576ead499a6662b548ede3ea53dc6ea&chksm=fad95ca3cdaed5b54923c7ddb2e7fbb53def2d732f97fc64dcc9ecee5b1f382a05c2457463ea#rd) # 个人总结 [程序员该如何写好自己的简历,一位 5 年中大厂老哥跟你聊聊](https://mp.weixin.qq.com/s/cqVo6UQqnWZtKdZ6mJt93w) [我的 5 年 Android 学习之路,那些年一起踩过的坑](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485229&idx=1&sn=decb80fd2a5870764e954b2419f0e599&chksm=fad9586dcdaed17b9ca091578f156c80cc84238c742cbfbef0a7d959528e72ff9286e1bee079#rd) [关于我,一个简单低调的程序员](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485050&idx=2&sn=4ca8bb93a6c3d588100b2a6ab5b359f7&chksm=fad9593acdaed02ce17687a9396a78741aef05ead1cd038a0ae85a124ad7c4c1f3ab70968e8a#rd) [职场上这四件事,越早知道越好](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485028&idx=2&sn=9df955d54f9eedd58f95bfae1d4717b1&chksm=fad95924cdaed03238715f1150827a8ce24f257dec390785ea2d6626c1d3a9f9e5f4d74c072f#rd) [今天,说三件小事](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484166&idx=1&sn=1b4646ea54b01dcbc655f1fe747cb36f&chksm=fad95c46cdaed550adbdad109ad79d172ffff03a07a5b7aafe173f6f1e85414604842339bc6c#rd) [技术人的未来在哪里](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484161&idx=2&sn=8d19078c3789c757f4aa4ca23e00a60e&chksm=fad95c41cdaed557b7a676ef23c7f9e94b797bf0d4a6e1fa8df9626fc98c4bffbcf0ce86afb2#rd) [致刚入职场的你 - 程序员的成长笔记](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484138&idx=2&sn=5685e895e85ad1a08b30750885f78644&chksm=fad95daacdaed4bc0b7445db3db62a64894957be350bc87f9bc4b3eff2d0f425c54ed5422a8f#rd) [2019.05 随笔](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484097&idx=1&sn=14688c3feff94ebae9b6afff1a195a87&chksm=fad95d81cdaed497af06ad27de5ece24c06529f6ca51746f953d2fb1d1f22108f6723d5b34c6#rd) # Android 必学 [Android 点九图机制讲解及在聊天气泡中的应用](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484321&idx=1&sn=88ec287ce8637d4ff6295668ac5e450c&chksm=fad95ce1cdaed5f7801578431aa4f00bcf63d61944155aed5c9bc8e97cb687b33e8d1b3603c9#rd) [SharedPreferences灵魂拷问之原理](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484506&idx=1&sn=c3a5d40e89f5a87e4319504d98f3e1ca&chksm=fad95b1acdaed20c82b466f184943d0db12ee250ba6bc4f466004956a3d4ced9c0fabb432a2b#rd) [java 源码系列 - 带你读懂 Reference 和 ReferenceQueue](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483972&idx=1&sn=bd685ebc176453deb2337ec20b90e0c1&chksm=fad95d04cdaed412ccc2a473885cdc16e3101deb2dc5dc9af0cce7b5af8613dbe5c01af54335#rd) [Android livedata 源码解剖](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483896&idx=1&sn=531974c06b1986c8c9e877b94cca2c06&chksm=fad95eb8cdaed7ae5c524694ac70e51eec0fa9fecdc99df9eae7625b4225dcaf91d0963ed4b8#rd) [Android lifecyle 源码解剖](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483893&idx=1&sn=b3f91d756351254d4dabd5552936ea80&chksm=fad95eb5cdaed7a30e22b8b5a78952a073f76cfe07fb390675f31f05bfd4f1432f14a262264c#rd) [Android LiveData 使用详解](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483885&idx=1&sn=a7f703f5a2f60ad0442782606f1c19af&chksm=fad95eadcdaed7bbd4c19eda6274fe0b0d8979b8fb8e5dc731d761656f814644687909f504f3#rd) [Android lifecycle 使用详解](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483869&idx=1&sn=f240f10085d69e7bdfc85f3d720e738b&chksm=fad95e9dcdaed78b037d2a06842e0337ea75592a01792c8ae14aea3f2cf21d49bd3cd235cf47#rd) [你真的了解 View 的坐标吗](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483857&idx=1&sn=67e61599dfa3579365ed87649993ea97&chksm=fad95e91cdaed787a47dab8ba9b2438fd80e4502a7a1936050315a31289ff9ddc17637750339#rd) [一步步读懂 ButterKnife](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483855&idx=1&sn=56a0d830c9674d4fe6178318d824e48a&chksm=fad95e8fcdaed7997b005e8341cad75319042841a6a990f956cd8864edf954c81e89a780be7f#rd) [Android 二次封装网络加载框架](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483838&idx=1&sn=c8f8d0de55a2886eae217bb0fe4071b2&chksm=fad95efecdaed7e8baa0091786a7cb0c068de3b0fb2f91de575ee91cb428b321d8e74ffa6a2e#rd) [Android Fragment 的妙用 - 优雅地申请权限和处理 onActivityResult](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483820&idx=1&sn=a091b0d77de4b2bd42a3d62e28026d54&chksm=fad95eeccdaed7fab5ffa2bcaaa2bbbeadfead8387c4686e9f679054e50c93f75d762f29c99b#rd) [TextView AutoLink, ClikSpan 与长按事件冲突的解决](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483794&idx=1&sn=3207a62e046ff58c1336b0cb63a57a2b&chksm=fad95ed2cdaed7c41dd6e7271c0ae863fee8c7ef195708a387194dfe806b5de77e1edb028557#rd) [聊一聊 Android 中巧妙的位操作](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483789&idx=1&sn=79582d4b8014c38d302103be5ea068a3&chksm=fad95ecdcdaed7dbd6f66c2bd31503a9f23efe8f396a2c73f9036c3f1bfb1b31adffecb015d3#rd) [Android 自定义 MarqueeView 实现跑马灯 —— 原理篇](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483784&idx=1&sn=321c1f8d626aacb466355f2e04925042&chksm=fad95ec8cdaed7dedb932eab30cc647751a1bab3b0d0473850100a2d0619fc00615afe267c8a#rd) [Android MarqueeView 实现跑马灯效果](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483783&idx=1&sn=3dfd9b1087602a2c30133460948ad775&chksm=fad95ec7cdaed7d1e9ffb51f84c8fc6f17696725584f411b1ce9bd9c2d6d1fb35d6eabdc42b7#rd) [Android Hook 机制之简单实战](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483782&idx=1&sn=5a4eb45eba69e18a5f515d1bfccca5a0&chksm=fad95ec6cdaed7d075cb127fd8c1c8668da162388b1e97b252c713c16a358b143473eba5d73f#rd) # 开源框架 [面试官,怎样实现 Router 框架?](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484462&idx=1&sn=5dac470d0ad7da6ec763bc8aba9686e2&chksm=fad95b6ecdaed2782e8c62629cbd880276b53a8099cecf01e62d043344bb70f947316931a540#rd) [面试官:简历上最好不要写Glide,不是问源码那么简单](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484458&idx=1&sn=44712068a160ab7eb234b8109dc1ea0a&chksm=fad95b6acdaed27c375ee10b95434888c98af8aa021dc3db035e0f043e8c2139a81a17cd675f#rd) [从筛选简历和面试流程讲起,再给培训班出身的程序员一些建议](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484334&idx=1&sn=d02decb4ea1496ba51da7628786c2e0b&chksm=fad95ceecdaed5f89d040242c12ae188017010d302fe068b12872aff1a6ffc1410eb0a3338cb#rd) [Rxjava 2.x 源码系列 - 线程切换 (上)](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484069&idx=1&sn=6089992fd339d41f84df6d6e6f7d0a4f&chksm=fad95de5cdaed4f368c4146633312fe4d6c06149de8b8e901c814f5218b115f1450839b2d926#rd) [Rxjava 2.x 源码系列 - 线程切换 (下)](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484069&idx=2&sn=c43bb82ccd15828eef41474b3139f5cb&chksm=fad95de5cdaed4f3748d4cf0dca1acf9964da0b23ed5d564bfc8fc335437a57e0fb0c1df9905#rd) [Rxjava 2.x 源码系列 - 线程切换 (下)](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484065&idx=1&sn=b24bbdc8f3579a555f1cb867e2d7c624&chksm=fad95de1cdaed4f71b7d2b089fe3ad875422cd8be8cc379bf6740d8645d849c5e492574149cc#rd) [Rxjava 2.x 源码系列 - 变换操作符 Map(上)](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484062&idx=1&sn=c58426a3570f976759cbc68d91322e93&chksm=fad95ddecdaed4c8321bca28927300f04c3b654b590b8c8ecf28644cabed3b941440c3e2131a#rd) [Rxjava 源码系列 - 基础框架分析](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484059&idx=1&sn=a3f3d4738cdea62065f988157b07276b&chksm=fad95ddbcdaed4cdb504b8613ccd1644c1730965d60819c985be2ed1d2cd79e49abfbdc7cdd2#rd) [一步步拆解 LeakCanary](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483754&idx=1&sn=f5ea640f40d0158b88a0971bca63bdab&chksm=fad95e2acdaed73c05b4dd8a815666faa5a7b7dba3b9d54b615f52815fb14fb1c976ab6d740d#rd) [java 源码系列 - 带你读懂 Reference 和 ReferenceQueue](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483753&idx=1&sn=4f09601c8dab18011373e067a914741c&chksm=fad95e29cdaed73fdd95b69f8a82ce154f9e289b014996ca39b58504e9f3a8fb99355b6614e1#rd) # 面试必备 ## 网络和基础 [面试官系列 - https 真的安全吗,可以抓包吗,如何防止抓包吗](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484736&idx=1&sn=54cecc6255bccfa0d24fb898a76d463e&chksm=fad95a00cdaed3162ba79779f18a1d55bcdf6f68fb00bf773d2c59e8e16315912835971ba063#rd) [Android 面试必备 - http 与 https 协议](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484130&idx=1&sn=e9c32f01c38060c44fea574e72ff4844&chksm=fad95da2cdaed4b477f19c10a92891daaf3149a65908ce4e637d42144580352570437b22cf12#rd) [Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484120&idx=1&sn=e794c38027d4461e009c1ef74bf4bddf&chksm=fad95d98cdaed48e3ccd059ce0311b040b6e36335b7d00f77575dba2b9be3fca67a874eca87f#rd) [Android 面试必备 - 系统、App、Activity 启动过程](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484173&idx=1&sn=d572ce765722051e54e18c8b03780432&chksm=fad95c4dcdaed55b6aac8299b2bb2641f53f55437c5b469120cdace3e077ed02445182832731#rd) [Android 面试必备 - JVM 及 类加载机制](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484152&idx=1&sn=c6fbe9dc5cef2fa1e4efbacda6c79040&chksm=fad95db8cdaed4ae3bfd81296821a4a134b5ac003208d680b6f8aa8ac781018065bf4b18e9b9#rd) ## 面经 [面试 Google, 我失败了 | Google 面经分享](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484714&idx=1&sn=cd4ead3d7a3f968dce30985537028456&chksm=fad95a6acdaed37cc92e01e12a1d2a778374289234d43e36b9abe20361fd23e6c748a0719dcd#rd) [常见的链表翻转,字节跳动加了个条件,面试者高呼「我太难了」| 图解算法](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484452&idx=1&sn=1bc60c27b6aba442f8aa08f95a031bbe&chksm=fad95b64cdaed2723ca5c8fa28ba272a5622da649135f5dfcfb9e1b069bbd1bbd057b52d6445#rd) [面试官:说说多线程并发问题](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484341&idx=1&sn=fdd1c17579443b079fdd3ab0bf94db75&chksm=fad95cf5cdaed5e39fb64931a325cfe91d7335d0b2f814feedfe3affb22c33cad737093f59d6#rd) [【不用背的原理】不用背的ThreadLocal原理](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484308&idx=1&sn=dbd4e688c47af4465929945a3b3fc488&chksm=fad95cd4cdaed5c224872a29fb65d4c994c8dbc1b5f9e7d484aa421251df741d8da11f04b06f#rd) # 徐公随笔 [关于小米得屌丝者得天下的一些思考](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484897&idx=1&sn=364912146522ea6bfb290cd08d7b00c3&chksm=fad95aa1cdaed3b7f468d0895233177906e8dc91a9dca5d737baab8fdea3b7ad375279ce5563#rd) [延迟享受,在最好的年纪请不要选择安逸](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484256&idx=2&sn=b144fd92effd3e6623462e53d89c7ab2&chksm=fad95c20cdaed536939c66190aede427efccaae90e32feeee02824227443327ac22cb8a1fad7#rd) [我面试人只看这4点](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485067&idx=1&sn=7cea1e4ae804a774c9c50b8b906fc59e&chksm=fad959cbcdaed0dd755b67f7057b4a6508d89ab12999cfba1470a76b474de0387e4c9d10eb4c#rd) [那些年,我们一起追过的安卓技术大佬们](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484533&idx=1&sn=a963383f5bbf739985fe84a524a445a3&chksm=fad95b35cdaed223ecda587bb7b21b5a50cbf8f60b67de492b54e6f06e94fa361ce9790da2c7#rd) [职场上这四件事,越早知道越好](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485028&idx=2&sn=9df955d54f9eedd58f95bfae1d4717b1&chksm=fad95924cdaed03238715f1150827a8ce24f257dec390785ea2d6626c1d3a9f9e5f4d74c072f#rd) [干起来,你就超过了 50% 的人](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484138&idx=1&sn=0d08f5a584c19bb93563786c856f8723&chksm=fad95daacdaed4bcda381cdd41a4e6035d853ce9ad4ea274883fe9787fba9683dc886b3a0b9f#rd) [致刚入职场的你 - 程序员的成长笔记](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484138&idx=2&sn=5685e895e85ad1a08b30750885f78644&chksm=fad95daacdaed4bc0b7445db3db62a64894957be350bc87f9bc4b3eff2d0f425c54ed5422a8f#rd) [拼夕夕事件反思,底层逆袭,靠拼命加班行吗](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484947&idx=1&sn=56ce85925bee8637b0a90938d21785ac&chksm=fad95953cdaed045b1f7da333bc9efeb4b4458d3a802cbe341c3b6fc5b40dd2f564773cec783#rd) # 设计模式 [[即学即用] Android开发——状态模式](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484489&idx=2&sn=4afb4a8cb8ebe3a73c28811f09140fa2&chksm=fad95b09cdaed21f7d1c462f8577bd31eb782574065d54096cd217c995baa178e8ea98d8808d#rd) [带你了解Android常见的内存缓存算法](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483679&idx=1&sn=d184d0e13483ed322adf7e4de9c2af76&chksm=fad95e5fcdaed74998d718ed68fcf1320c7ab6fd2f6a0d1a36ec04c84f3235be3403b215a6d5#rd) [Android 建造者模式(Builder)及其应用](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483677&idx=1&sn=df59316a59eb5a32605b2e65a170cfe0&chksm=fad95e5dcdaed74b58705026a556ddaa926509adf8cb158e027088d0f8d5c5cec12a37ea66ac#rd) [责任链模式以及在 Android 中的应用](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484230&idx=1&sn=dd8cb5a0f16e271acc9992c826f9ef72&chksm=fad95c06cdaed5109ea90bbc70d2a488eaae1f4965eb3131a7599e06e0bc4c8635e23a699be9#rd) [java 代理模式详解](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483759&idx=1&sn=aef490fa742642c7763e4e366888b2d8&chksm=fad95e2fcdaed7398e9605ce8fa6fcfda6a323daf8ee46615963333017f2637d03c33f49cbc0#rd) [装饰者模式及其应用](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483982&idx=1&sn=b2822b172992a761df3e27fec597ac56&chksm=fad95d0ecdaed41816cae073e44bb2fc5c21701896b60c0219bc9acfe9bf18deacf3d18674c7#rd) [Kotlin下的5种单例模式,真香](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247485212&idx=2&sn=5903c0bd50043ae4ab67e2c0566109bc&chksm=fad9585ccdaed14a2b70b92d62c50de79db81ccc8bf21a2449dc8faec4f18f2e08c1dfd6e18d#rd) # 算法 刚开始准备刷算法题目的时候,感觉真的是好难,十道题目有九道是不会的。心中曾一万只草泥马跑过,自己怎么这么辣鸡。 慢慢得,我发现算法也是一个可以通过练习慢慢成长的。 1. 首先我们要掌握基本的数据结构,数组,链表,哈希表, Set,二叉树,堆,栈等。你要知道他们有什么优缺点,适应场景是什么,时间复杂度和空间复杂度是多少。而不能知道简单的 API。 2. 接着,掌握了这些基本的数据结构之后,一些基本的算法你也要掌握以下,比如快速排序,归并排序,对排序,二分查找。这些基本的一定要掌握,面试当中经常也会问到。 3. 分类刷题,我们在力扣上面可以看到,https://leetcode-cn.com/problemset/algorithms/ ,刷题是可以按标签来的。比如链表,数组,二分查找,二叉树,动态规划等 4. 学好算法不是一日之功,需要长期的积累。建议的做法是每天做一两道题,题目不在多,贵在于理解。坚持一两个月,你会发现你的感觉逐渐好起来了 **最后,让我们一起加油,一起进大厂,拿期权,高薪。** ## 剑指 offer [剑指offer](https://github.com/gdutxiaoxu/Android_interview/tree/master/Android_interview/剑指offer) - [【Java】剑指offer(1)找出数组中重复的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(1)找出数组中重复的数字.md) - [【Java】剑指offer(2)不修改数组找出重复的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(2)不修改数组找出重复的数字.md) - [【Java】剑指offer(3)二维数组中的查找.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(3)二维数组中的查找.md) - [【Java】剑指offer(4)替换空格.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(4)替换空格.md) - [【Java】剑指offer(5)从尾到头打印链表.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(5)从尾到头打印链表.md) - [【Java】剑指offer(6)重建二叉树.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(6)重建二叉树.md) - [【Java】剑指offer(7)二叉树的下一个结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(7)二叉树的下一个结点.md) - [【Java】剑指offer(8)用两个栈实现队列.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(8)用两个栈实现队列.md) - [【Java】剑指offer(9)斐波那契数列及青蛙跳台阶问题.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(9)斐波那契数列及青蛙跳台阶问题.md) - [【Java】剑指offer(10)旋转数组的最小数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(10)旋转数组的最小数字.md) - [【Java】剑指offer(11)矩阵中的路径.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(11)矩阵中的路径.md) - [【Java】剑指offer(12)机器人的运动范围.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(12)机器人的运动范围.md) - [【Java】剑指offer(13)剪绳子.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(13)剪绳子.md) - [【Java】剑指offer(14)二进制中1的个数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(14)二进制中1的个数.md) - [【Java】剑指offer(15)数值的整数次方.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(15)数值的整数次方.md) - [【Java】剑指offer(16)打印1到最大的n位数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(16)打印1到最大的n位数.md) - [【Java】剑指offer(17)在O(1)时间删除链表结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(17)在O(1)时间删除链表结点.md) - [【Java】剑指offer(18)删除链表中重复的结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(18)删除链表中重复的结点.md) - [【Java】剑指offer(19)正则表达式匹配.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(19)正则表达式匹配.md) - [【Java】剑指offer(20)表示数值的字符串.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(20)表示数值的字符串.md) - [【Java】剑指offer(21)调整数组顺序使奇数位于偶数前面.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(21)调整数组顺序使奇数位于偶数前面.md) - [【Java】剑指offer(22)链表中倒数第k个结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(22)链表中倒数第k个结点.md) - [【Java】剑指offer(23)链表中环的入口结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(23)链表中环的入口结点.md) - [【Java】剑指offer(24)反转链表.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(24)反转链表.md) - [【Java】剑指offer(25)合并两个排序的链表.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(25)合并两个排序的链表.md) - [【Java】剑指offer(26)树的子结构.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(26)树的子结构.md) - [【Java】剑指offer(27)二叉树的镜像.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(27)二叉树的镜像.md) - [【Java】剑指offer(28)对称的二叉树.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(28)对称的二叉树.md) - [【Java】剑指offer(29)顺时针打印矩阵.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(29)顺时针打印矩阵.md) - [【Java】剑指offer(30)包含min函数的栈.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(30)包含min函数的栈.md) - [【Java】剑指offer(31)栈的压入、弹出序列.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(31)栈的压入、弹出序列.md) - [【Java】剑指offer(32)从上往下打印二叉树.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(32)从上往下打印二叉树.md) - [【Java】剑指offer(33)二叉搜索树的后序遍历序列.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(33)二叉搜索树的后序遍历序列.md) - [【Java】剑指offer(34)二叉树中和为某一值的路径.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(34)二叉树中和为某一值的路径.md) - [【Java】剑指offer(35)复杂链表的复制.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(35)复杂链表的复制.md) - [【Java】剑指offer(36)二叉搜索树与双向链表.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(36)二叉搜索树与双向链表.md) - [【Java】剑指offer(37)序列化二叉树.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(37)序列化二叉树.md) - [【Java】剑指offer(38)字符串的排列.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(38)字符串的排列.md) - [【Java】剑指offer(39)数组中出现次数超过一半的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(39)数组中出现次数超过一半的数字.md) - [【Java】剑指offer(40)最小的k个数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(40)最小的k个数.md) - [【Java】剑指offer(41)数据流中的中位数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(41)数据流中的中位数.md) - [【Java】剑指offer(42)连续子数组的最大和.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(42)连续子数组的最大和.md) - [【Java】剑指offer(43)从1到n整数中1出现的次数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(43)从1到n整数中1出现的次数.md) - [【Java】剑指offer(44)数字序列中某一位的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(44)数字序列中某一位的数字.md) - [【Java】剑指offer(45)把数组排成最小的数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(45)把数组排成最小的数.md) - [【Java】剑指offer(46)把数字翻译成字符串.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(46)把数字翻译成字符串.md) - [【Java】剑指offer(47)礼物的最大价值.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(47)礼物的最大价值.md) - [【Java】剑指offer(48)最长不含重复字符的子字符串.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(48)最长不含重复字符的子字符串.md) - [【Java】剑指offer(50-1)字符串中第一个只出现一次的字符.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(50-1)字符串中第一个只出现一次的字符.md) - [【Java】剑指offer(50-2)字符流中第一个只出现一次的字符.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(50-2)字符流中第一个只出现一次的字符.md) - [【Java】剑指offer(51)数组中的逆序对.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(51)数组中的逆序对.md) - [【Java】剑指offer(52)两个链表的第一个公共结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(52)两个链表的第一个公共结点.md) - [【Java】剑指offer(53-1)数字在排序数组中出现的次数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(53-1)数字在排序数组中出现的次数.md) - [【Java】剑指offer(53-2)0到n-1中缺失的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(53-2)0到n-1中缺失的数字.md) - [【Java】剑指offer(53-3)数组中数值和下标相等的元素.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(53-3)数组中数值和下标相等的元素.md) - [【Java】剑指offer(54)二叉搜索树的第k个结点.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(54)二叉搜索树的第k个结点.md) - [【Java】剑指offer(55-1)二叉树的深度.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(55-1)二叉树的深度.md) - [【Java】剑指offer(55-2)平衡二叉树.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(55-2)平衡二叉树.md) - [【Java】剑指offer(56-1)数组中只出现一次的两个数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(56-1)数组中只出现一次的两个数字.md) - [【Java】剑指offer(56-2)数组中唯一只出现一次的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(56-2)数组中唯一只出现一次的数字.md) - [【Java】剑指offer(57-1)和为s的两个数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(57-1)和为s的两个数字.md) - [【Java】剑指offer(57-2)为s的连续正数序列.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(57-2)为s的连续正数序列.md) - [【Java】剑指offer(58-1)翻转单词顺序.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(58-1)翻转单词顺序.md) - [【Java】剑指offer(58-2)左旋转字符串.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(58-2)左旋转字符串.md) - [【Java】剑指offer(59-1)滑动窗口的最大值.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(59-1)滑动窗口的最大值.md) - [【Java】剑指offer(59-2)队列的最大值.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(59-2)队列的最大值.md) - [【Java】剑指offer(60)n个骰子的点数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(60)n个骰子的点数.md) - [【Java】剑指offer(61)扑克牌的顺子.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(61)扑克牌的顺子.md) - [【Java】剑指offer(62)圆圈中最后剩下的数字.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(62)圆圈中最后剩下的数字.md) - [【Java】剑指offer(63)股票的最大利润.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(63)股票的最大利润.md) - [【Java】剑指offer(64)求1+2+…+n.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(64)求1+2+…+n.md) - [【Java】剑指offer(65)不用加减乘除做加法.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(65)不用加减乘除做加法.md) - [【Java】剑指offer(66)构建乘积数组.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(66)构建乘积数组.md) - [【Java】剑指offer(67)把字符串转换成整数.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/【Java】剑指offer(67)把字符串转换成整数.md) - [【Java】剑指offer(68)树中两个结点的最低公共祖先.md](https://github.com/gdutxiaoxu/Android_interview/tree/master/剑指offer/[Java]剑指offer(68)树中两个结点的最低公共祖先.md) ## leetcode 算法 [leetcode](https://github.com/gdutxiaoxu/Android_interview/blob/master/Android_interview/leetcode) - [arraylist-leetcode-list.md](https://github.com/gdutxiaoxu/Android_interview/blob/master/leetcode/ArrayList/arraylist-leetcode-list.md) - [arraylist.md](https://github.com/gdutxiaoxu/Android_interview/blob/master/leetcode/ArrayList/arraylist.md) - [算法总结】30道题搞定大厂算法面试-二叉树](https://github.com/gdutxiaoxu/Android_interview/blob/master/leetcode/%E3%80%90%E7%AE%97%E6%B3%95%E6%80%BB%E7%BB%93%E3%80%9130%E9%81%93%E9%A2%98%E6%90%9E%E5%AE%9A%E5%A4%A7%E5%8E%82%E7%AE%97%E6%B3%95%E9%9D%A2%E8%AF%95-%E4%BA%8C%E5%8F%89%E6%A0%91.md) ## 算法总结 [【算法总结】你真的掌握了二叉树的遍历嘛](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484928&idx=1&sn=05d599f2e456c1fd53905fe4928a58c0&chksm=fad95940cdaed056f0e28261b19b40877d77135d2462412022f96ab5e2cbeb69f8aee98e4582#rd) [【算法总结】五道常见的算法-二叉树](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484922&idx=1&sn=df3dfad24d2caefb788369ba62ad31f4&chksm=fad95abacdaed3ac69fb2d331020188f7b1c21fac9d7519308395f55e120fb4c6d2be4e0a661#rd) [面试官:手写生产者消费者模型](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484909&idx=1&sn=e83b7b0e69fb630c4549ef9b23c79793&chksm=fad95aadcdaed3bb707f2ed96306ea5462ea1e9ce20b71b6af158372d53644396998b78416e9#rd) [快速排序与各种衍生知识点](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484843&idx=1&sn=34abc19234b561b30c69c5b56637dac7&chksm=fad95aebcdaed3fdb7805768341fafd6c38f2bf73b1638bd85e7ed2cf067654778078770a477#rd) [面试官系列 - LeetCode链表知识点&题型总结](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484804&idx=1&sn=d498f9d0e9b3811b26e86694ef66e9ba&chksm=fad95ac4cdaed3d2403d605ec09861f6796d082eab05d4f7f6c104d3d3e3f1d17ae4b7d10ecc#rd) [java 版剑指offer集锦](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484788&idx=2&sn=7df4d6de80c077d3268e19067c04ef81&chksm=fad95a34cdaed322ce765f23030d44191784923a4ce70acc750cc32d8859af16225f89a4662f#rd) [面试官:你有m个鸡蛋,如何用最少的次数测出鸡蛋会在哪一层碎?](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484399&idx=1&sn=1e05a2f6eb679a25cccc36d81274920c&chksm=fad95cafcdaed5b92b8da07b567c6aa7c66b336b9d2257f76cee4986c9ea19c714e0a8bba514#rd) [归并排序 递归版和非递归版的实现](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484045&idx=1&sn=c1fc1c24ed16218aa6409c96f24e811a&chksm=fad95dcdcdaed4dbd8db36208f414c5e2fbbf542e03194d942cc40976329719f603a502ae821#rd) [笔试题—字符串常见的算法题集锦](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483678&idx=1&sn=1306ae11091c5a85f9880a5fab49fe7a&chksm=fad95e5ecdaed748c02a7cad4167cc0722c76141c38063181549786afa0de5c76da5cf876d30#rd) # Git [Git config 使用说明](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484083&idx=1&sn=2fd5f3ab3899c225cf75a1894a2dbb88&chksm=fad95df3cdaed4e5dc35dc9f33d771eec3ad9f156841833fe914308c0dd2adc8b80f08fa9de1#rd) [Git 配置别名 —— 让命令变得更简单](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247484080&idx=1&sn=afb5d1761e10dbef27a89244fc5c3bf6&chksm=fad95df0cdaed4e6865bd59284dd79af5f4b5e9b8d961d0869133957b755c24feda91e19bf99#rd) [git 设置 mergetool,difftool 为 BeyondCompare](http://mp.weixin.qq.com/s?__biz=MzUzODQxMzYxNQ==&mid=2247483729&idx=1&sn=9786e928150084ab9ac43856defc0720&chksm=fad95e11cdaed707e7aa3e81b5ec1cf82bbd232d24b7a60b198cb74085f1b8b26cd8dc84a7fd#rd)