自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
8.Looper,Handler,MessageQueue 的关系
9.主线程为什么是主线程,如何开启线程,线程池和安卓常用的四种线程池
他们的特点和使用场景
11.AsyncTask 原理,并发问题,缺点等
12.如何面对大的 bitmap,如何自己设计一个 ImageLoader
13.其实可以扩展为,如何设计一个 okhttp,如何设计一个 retrofit,eventBus 等等
14.其实就考察对开源框架的认识和使用的熟练程度
15.如何避免和处理 Crash 和 ANR
16.优化篇,过度绘制,OOM,内存泄漏,布局优化,MAT, Lint
大厂面试题
1.有个问题很常见:你了解过哪些开源框架?
2.okhttp 或者 retrofit 必须了解一下底层原理,即使不能读好源码,也要看看别人是怎么分析的
3.如今热更新和插件化特别火,一定要能说出来几种,并简单说明原理
4.MVC MVP MVVM 优缺点,一点要说出自己的切身体会
5.Fragment,生命周期和使用方法
6.Rxjava 尽量也看看
7.注解机制,现在这么多使用注解的框架
8.Acitvity的生命周期是什么样的?
9.Acitvity的生命周期,如何摧毁一个Activity? (美团)
10.Intent显示跳转与隐式跳转,如何使用?(美团)
11.Activity A跳转B,B跳转C,A不能直接跳转到C,A如何传递消息给C?(美团)
12Activity如何保存状态的?
13.请描述Activity的启动流程,从点击图标开始。(B站)
14.你会在什么情况下使用Service?
15.startServer和bindServier的区别?(美团)
16.Service和Thread的区别?
17.IntentService与Service的区别?
18.ContentProvider如何自定义与使用场景是什么?
19.BroadcastReciver的静态注册与动态注册的区别?
20.广播的分类与工作原理
Java 基础知识
我是参照的《Thinking in Java》这个书和网上的博文,别的我也没买。网上 Java 的资料非常多,但是确实有很多写的不好,甚至有一些错误的,大家阅读要小心了。
主要知识点:
1.修饰符
2.类 接口 抽象类 匿名内部类 回调机制
3.几种基本类型,长度,边界
4.从 Iterator 到 Collection,再到 Set List Map(必问)
5.从以下几个角度理解学习:用法,具体实现类,线程安全性,底层数据存储结构,某些场景下如何选用?比如 ArrayList 和 LinkedList 如何选用
线程相关(必问)
6.锁机制 synchronize 用法
7.实现一个死锁
8.同步,生产者消费者模型
9.Thread 中的几个常用方法 比如问你 sleep 和 wait 区别
10.线程安全
11.JVM 了解一些,GC 了解一下,堆和栈的区别等
12.静态代理,动态代理 反射
13.设计模式 单例模式(要会写),工厂模式,抽象工厂,观察者模式等
大厂面试题
- 什么情况下会发生栈内存溢出?
- 如果让你写一段栈溢出的代码你会什么写,一个栈大概有多大,为什么?每个线程都有这样大小的一个栈吗? (美团)
- JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代?
- 介绍下GC回收机制与分代回收策略。
- Java中有几种引用关系,它们的区别是什么?
- GC收集算法有哪些?它们的特点是什么?
- 如何判断一个对象是否被回收,有哪些GC算法,实际虚拟机使用最多的是什么GC算法?(美团)
- Jvm内存 结构说一下。(东方头条)
- JVM DVM ART的区别(360)
- 描述GC机制。Class会不会回收?用不到的Class怎么回收?(东方头条)
- StackOverFlow与OOM的区别?分别发生在什么时候,JVM栈中存储的是什么,堆存储的是什么?(美团)
- Java虚拟机和Dalvik虚拟机的区别?
- 请描述new一个对象的流程。
- Java对象会不会分配到栈中?
- String, Stringbuffer, StringBuilder 的区别是什么?(东方头条)
a. String StringBuffer StringBuilder在进行字符串操作时的效率;这里主要考察String在内存中是如何创建的。(字节跳动)
- String为什么是不可变的?(字节跳动)
a. String为什么设计成final的?
- final 、finally、finalize 区别。
- 抽象类和接口的区别。
- 重载和重写的区别 (京东)
- 什么是值传递和引用传递,Java 是值传递还是引用传递?
算法和数据结构
主要知识点:
1.数组,链表,队列,栈,图
2.不会直接问你,会让你找到用处,比如Activity任务栈
3.算法
4.基本几种排序复杂度和思路
5.几种查找复杂度和思路
6.串的处理
大厂面试题
1.如何在一个1到100的整数数组中找到丢失的数字? 腾讯
- 如何在给定的整数数组中找到重复的数字? 小米
- 如何在未排序整数数组中找到最大值和最小值? 字节跳动
- 在Java中如何从给定数组中删除多重复制? 百度
5.常用的数据结构有哪些? B站
- 一个数组插入删除查找和链表的效率对比?如果一个数组要反复插入删除怎么优化降低时间复杂度? 腾讯
- arrayList底层原理 滴滴 字节跳动
8.如何在一次遍历中找到单个链表的中值? 中国平安
9.如何证明给定的链表是否包含循环?如何找到循环的头节点? 优酷
10.两个有交叉的单链表,求交叉点 华为
- 如何得到单链表的长度? 360
- 如何在不使用递归的情况下逆转单链表? 小米/美团
- 怎么判断链表有环? 滴滴
- 如何使用栈实现队列的功能?广州荔枝FM
- 两个栈实现一个队列 蘑菇街
- 两个队列实现一个栈 腾讯
- 对比一下队列和栈,以及它们底部实现 腾讯
推荐 LeetCode 刷题和读《剑指offer》。
性能优化
主要内容
1.ANR
2.内存溢出
3.内存抖动
4.内存泄漏
5.UI卡顿
6.冷启动优化等方面
大厂面试题
- 内存优化,内存抖动和内存泄漏。(东方头条)
- Bitmap压缩,质量100%与90%的区别?(东方头条)
- TraceView的使用,查找CPU占用(东方头条)
- 内存泄漏查找 (酷我音乐)
- ANR查找
a. ANR是什么,怎么解决?(美团)
- CPU波动
- 当前项目中是如何进行性能优化分析的
- 冷启动、热启动的概念(酷我音乐)
- View层次过深怎么优化,选择哪个布局比较好?(美团)
- 怎样检测函数执行是否卡顿 (字节跳动)
条)
3. TraceView的使用,查找CPU占用(东方头条)
4. 内存泄漏查找 (酷我音乐)
5. ANR查找
a. ANR是什么,怎么解决?(美团)
- CPU波动
- 当前项目中是如何进行性能优化分析的
- 冷启动、热启动的概念(酷我音乐)
- View层次过深怎么优化,选择哪个布局比较好?(美团)
- 怎样检测函数执行是否卡顿 (字节跳动)