- 举一个用 Java 实现的装饰模式(decorator design pattern) ?它是作用于对象层次还是类层次?
装饰模式增加强了单个对象的能力。Java IO 到处都使用了装饰模式,典型例子就是Buffered 系列类如 BufferedReader 和BufferedWriter,它们增强了 Reader 和 Writer 对象,以实现提升性能的 Buffer 层次的读取和写入。
- 在 Java 中,为什么不允许从静态方法中访问非静态变量?
Java 中不能从静态上下文访问非静态数据只是因为非静态变量是跟具体的对象实例关联的,而静态的却没有和任何实例关联。
- 设计一个 ATM 机,请说出你的设计思路?
比如设计金融系统来说,必须知道它们应该在任何情况下都能够正常工作。不管是断电还是其他情况,ATM 应该保持正确的状态(事务) , 想想 加锁(locking)、事务(transaction)、错误条件(error condition)、边界条件(boundary condition) 等等。尽管
你不能想到具体的设计,但如果你可以指出非功能性需求,提出一些问题,想到关于边界条件,这些都会是很好的。
- 在 Java 中,什么时候用重载,什么时候用重写?
如果你看到一个类的不同实现有着不同的方式来做同一件事,那么就应该用重写(overriding),而重载(overloading)是用不同的输入做同一件事。在 Java 中,重载的方法签名不同,而重写并不是。
- 举例说明什么情况下会更倾向于使用抽象类而不是接口?
接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。下面有几个点可以帮助你回答这个问题:
在 Java 中,你只能继承一个类,但可以实现多个接口。所以一旦你继承了一个类,你就失去了继承其他类的机会了。
接口通常被用来表示附属描述或行为如:Runnable、Clonable、Serializable 等等,因此当你使用抽象类来表示行为时,你的类就不能同时是 Runnable 和 Clonable(注:这里的意思是指如果把 Runnable 等实现为抽象类的情况),因为在 Java 中你不能继承两个类,但当你使用接口时,你的类就可以同时拥有多个不同的行为。
在一些对时间要求比较高的应用中,倾向于使用抽象类,它会比接口稍快一点。
如果希望把一系列行为都规范在类继承层次内,并且可以更好地在同一个地方进行编码,那么抽象类是一个更好的选择。有时,接口和抽象类可以一起使用,接口中定义函数,而在抽象类中定义默认的实现。
11.谈谈你对Android设计模式的理解
12.MVC MVP MVVM原理和区别
13.你所知道的设计模式有哪些?
14.项目中常用的设计模式
15.手写生产者/消费者模式
16.写出观察者模式的代码
17.适配器模式,装饰者模式,外观模式的异同?
18.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
19.谈谈对RxJava的理解
20.RxJava的功能与原理实现
21.RxJava的作用,与平时使用的异步操作来比的优缺点
22.说说EventBus作用,实现方式,代替EventBus的方式
23.从0设计一款App整体架构,如何去做?
24.说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)
25.谈谈对java状态机理解
26.Fragment如果在Adapter中使用应该如何解耦?
27.Binder机制及底层实现
28.对于应用更新这块是如何做的?(解答:灰度,强制更新,分区域更新)?
29.实现一个Json解析器(可以通过正则提高速度)
30.统计启动时长,标准
============================================================================
篇幅原因面试试题答案我们今年整理在这一份腾讯T4级别的Android架构师全套学习资料里面了,这份学习资料+面试题特别适合有3-5年以上经验的小伙伴深入学习提升,让你成功实现年薪40W以上。
主要包括腾讯,以及阿里、字节跳动,华为,小米,等一线互联网公司主流架构技术。如果你有需要,尽管拿走好了。
**1.腾讯T4级别Android架构师技术脑图;**查漏补缺,体系化深入学习提升
2…全套体系化高级架构视频(七大主流技术模块)
3.2019最新整理BATJ Android高级面试题(含答案解析)
**4.设计面试和数据结构算法专题;**大厂必会,巩固基础
- 设计模式专题;
- 数据结构算法专题;
免费分享
在评论区留言或者私信我,视频教程,BAT面试真题解析文档,我看到都会回复的
也可以点击下方链接,前往免费领取腾讯T4级别Android架构师面试资料+全套视频
为什么免费分享?
很多开发人员工作几年,技术薪资均没有提升。
程序开发是吃青春饭的工作,有很多志在学习提升,却又苦于找不到学习方向和路线的开发人员。
希望大家通过我分享的这套高级架构资料,结合自身不足、重点学习、系统学习、早日进阶成为Android高级架构师。实现个人理想和创造更多价值。
不负青春对我们的期待,不负时代对我们鞭策。
Android架构师之路很漫长,一起共勉吧!喜欢的话别忘记点击关注和赞哦
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!