先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
正文
虽然这一路挺艰辛,也不知道自己下一步是迈向哪里,但是在心态和技术上让我成长了很多,回头看来我还算是挺幸运的吧。
字节3轮技术面+一轮HR面
技术面一面(时长47分钟)
有些问题忘记了,记忆中就只有这些内容
-
自我介绍
-
项目有没有上线
-
项目难点
DialogFragment
内存泄漏的定位过程
Leakcanary
的原理
-
Handler
介绍一下 -
Handler
内存泄漏说一下 -
说一下设计模式
-
手写单例
-
算法:[112. 路径总和](javascript:void(0)😉
技术面二面(时长48分钟)
-
自我介绍
-
介绍一下项目
-
软件大概样式是怎样
-
首页是怎样做的
- 首页下拉刷新是怎么做的?(说了滑动冲突的处理)
view
事件分发机制怎样
- 事件好几层,怎么知道是由哪个控件处理(说了根据触摸的位置啥的,不太了解对不对)
- 提到了责任链,内部链怎么分发的
- 怎么判断哪个
view
处理(根据return true/ false
)
- 我们的事件有
action_move,action_down,action_cancel
,所有的事件都是一层一层往下分发吗(说了不一定,down
被拦截了,后续就收不到其他的事件了,然后提到了action_cancel
的机制)
- 我听到你首页用了
recyclerView
,那他一般怎么用?
- 提到了
adapter
adapter
用来干嘛?
adapter
中有哪些是主要方法(说了bindView
,这块不太记得了,说项目中用到的是BRVAH
)
- 提到了
ListView
- 为什么用
Rv
不用Lv
(说了1.强制实现viewHolder
(避免findViewById
) 2.缓存机制)
Lv
二级缓存怎么判断这个View
是他要的?(答了postion,id
)
- 然后问
id
指的是?(这里说忘记了)
- 四级缓存是怎么找到
view
他要的?(说了itemType
)
- 如果有相同的
itemType
怎么处理?(说了直接使用任意一个)
- 如果四级缓存中找不到呢?(说了手动加载)
- 手动加载是哪里来的?(说了从布局
xml
中定义的itemtype
中拿的)
xml
怎么关联到Rv
(加载代码inflate
的,不太了解)
-
堆内存和栈内存区别
-
5层网络协议包括哪些?
-
tcp
三次握手说一下 -
equals
和==
区别 -
hashmap
实现原理(说了基本结构,put
) -
get
是怎样实现的
智力题:
- 5升桶,3升桶,水无限,你给我装出4升水
算法:[82. 删除排序链表中的重复元素 II](javascript:void(0)😉
技术面三面(时长37分钟)
-
自我介绍
-
架构设计主要是什么
-
说一下你提到的依赖倒置
-
除了依赖倒置还有什么重要的原则(刚说完单一职责就被打断)
-
MVP注意事项(说了内存泄漏的处理)
-
内存泄漏的原理
-
怎么判断内存不能被释放
-
如何检测内存泄漏(说了线下用
LeakCanary
,线上用Memory profiler
,然后自己扯到DialogFragment
内存泄漏) -
打断,问
final
作用(说了修饰类,方法,变量,作用) -
非静态内部类引用外部类对象,需要
final
关键字吗?(说了应该用static
,转为静态内部类,防止内存泄漏) -
多线程使用过吗
-
说一下线程池的使用(刚说了构造方法实现)
-
核心线程数什么作用(说了线程池的运行流程)
-
核心线程数和最大线程数的设置(
IO
密集型和CPU
密集型,最大线程数的话,看系统支持的并发量) -
一个进程有多少个线程?(说了空间允许的范围内可以一直开辟)
-
实际上是多少?(说了
2g
分配的空间) -
为什么是2g(说了之前看过,具体原理不太清楚)
-
一个异步任务都开一个线程,还是多个任务开一个线程,你怎么决定开不开?(说了耗时的话就开,不太耗时不开,因为线程切换调度的话,存在一定的开销)
-
线程安全怎么保证?
-
syncronized
内部原理是什么(说了修饰静态方法和非静态方法,代码块) -
修饰静态方法和非静态方法,能够并发执行吗?(可以,因为他们锁的对象不一样,说到了死锁)
-
死锁的原理是什么?
-
出现死锁怎么排查(这个不太会,说了用
jvm
中的jstack
) -
追问怎么用?(说没用过,只是知道)
-
问我他的原理是什么?(不太知道,说看
traces.txt
,看堆栈) -
怎么安全停止一个线程(说了用
volatile
修饰变量,通过while
(变量),手动设置true false
) -
volatile
原理是什么?(说了java
内存模型啥的,修饰特性啥的) -
网络了解吗
-
tcp
优点(可靠性,面向连接) -
面向连接是什么?(说了计算机通信前建立连接)
-
面向连接和非面向连接的本质区别是什么?(乱答,不知道)
-
拥塞控制原理
-
http
与udp
区别(说了层数) -
http
请求流程
下面开始聊天了
- 反问
HR 面
-
你是周一面的三面,这几天关于面试你是怎么考虑的?
-
周一面试完,周四周五才给你反馈,有考虑过面试不通过吗
我说周二就给我反馈了
-
面试感受如何?
-
你对面试做了什么准备
-
客户端基础知识方面的话,你是怎么复习和准备的?
-
有做一些刷题吗?
-
字节算法这块,难度怎么样
-
距离毕业还有一年半,你怎么规划这段时间
-
你们是信息安全专业?应该不是计算机专业的同学吧
-
你是什么时候考虑转开发
-
你是大一就打算做开发?还是说进到工作室后,受到师兄的影响才转开发?
-
介绍一下工作室
-
配合方式是怎样的?
-
说一下影响比较深的项目
-
主要是客户端做?还是前端后台都有?
-
这个项目你们老师也是怎样评价的?
-
团队协作有没有遇到比较难推进的时候?
-
你会主动去配合团队吗
-
自己学习或者工作,怎么安排时间?
-
工作的时间占你一天多少时间?
-
任务你是怎么管理
-
你的方法论挺好的,你提到的日程管理软件是哪个?
-
旁边人用哪几个词语评价你
-
你的优点缺点分别是什么?
-
有遇到压力特别大的时候吗?
-
你在学校成绩怎样
-
你对自己的未来的规划
-
什么时候能来?能来多久
-
学校课程怎样
-
反问
面试字节需要做好哪些准备
通过整个面经就会知道,现在互联网校园招聘技术岗位面试所考察的内容是非常的标准化的!
面试流程主要分为三个部分:
-
字节跳动是非常重视应试同学编程能力的考察的,每轮技术面试都会考察2-3道算法题目。
-
然后第一轮面试会着重考察候选者的Android基础知识,java基础,数据库,操作系统,计算机网络等。
-
然后后续面试面试官会围绕着候选者的项目进行提问。
最后看一下学习需要的所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!
[外链图片转存中…(img-nP4Me3vC-1713703036790)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-3LA10Rp8-1713703036790)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!