Android常见的面试题总结(四)

来源:互联网 发布:王者荣耀红莲斗篷数据 编辑:程序博客网 时间:2024/06/05 16:35

1.构建者

建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示。
建造者模式的优点是:使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
2.对mvp的理解
  • View和Model之间的耦合度降低,使其更关注自身业务逻辑;
  • 便于单元测试;
  • 代码复用率提高;
  • 代码框架更适用于快速迭代开发;
  • MVP的核心思想把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Modele类还是Model。
4.多线程访问同一个对象
如果两个或多个线程访问相同的对象,或者访问不同步的共享状态 ,就会出现竞态条件;
为了避免出现该问题,可以锁定共享的对象。但是过多的锁定也会有麻烦,那就是死锁;
当至少有两个线程被挂起,等待对方解除锁定。由于两个线程都在等待对方,就出现了死锁,线程将无限等下去;
要避免同步问题,最好不要在线程之间共享数据。当然,这并不总是可行的。如果需要共享数据,就必须使用同步技术;
确保一次只有一个线程访问和改变共享状态。注意,同步问题与竞态条件和死锁有关。如果不注意这些问题,就很难在应用程序中找到问题的原因,因为线程问题是不定期发生的。
5.recycle view显示多种布局的时
getItemViewType onBindViewHolder
6.粘性广播和粘性的EventBus
发送事件之后再订阅该事件也能收到该事件
@Subscribe(sticky = true)
7.git命令
http://www.cnblogs.com/cspku/articles/Git_cmds.html
8.自定义view的主要方法
View的工作流程主要是指measure,layout,draw这三大流程,即测量,布局和绘制,其中measure确定了View测量的宽和高,layout确定了View的位置,而draw则将View绘制到屏幕上。
9.对数据库中视图和事务的理解:
视图是从一个或多个表导出的表。视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统 根据视图的定义去操作与视图相关联的基本表。
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个,要么全部成功要么全部失败的单元,可以简化错误恢复并使用应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统 负责事务的处理。

原创粉丝点击