mapreduce原理,partion发生在什么阶段
hadoop生态说一说
介绍几种熟悉的设计模式
手写多线程下的单例模式
手写懒汉式单例模式(考虑线程安全)
设计模式: 单例模式(懒汉饿汉) 工厂方法模式 观察者模式 责任链模式
描述一下知道的设计模式,装饰者模式和代理模式的区别
单例模式(双检锁模式)、简单工厂、观察者模式、适配器模式、职责链模式等等
假设一个a类变到b类,那么你用适配器模式怎么完成
决策树算法怎么实现的
单例模式:懒汉式、饿汉式、双重校验锁、静态加载,内部类加载、枚举类加载。保证一个类仅有一个实例,并提供一个访问它的全局访问点。
使用场景:创建对象消耗的资源太多/打开一个窗口
代理模式:为其它对象提供一种代理以控制对这个对象的访问。动态代理和静态代理,什么时候使用动态代理。
使用场景:AOP
适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
使用场景:Android系统版本升级
装饰者模式:动态给类加功能。
使用场景:动态的给一个对象增加功能或者撤销功能
观察者模式:对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并且自动更新。
使用场景:Android button
策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
使用场景:算法需要自由切换且屏蔽具体细节
外观模式(门面模式):为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
使用场景:为复杂的子系统提供一个外界访问的接口
命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。
使用场景:触发-反馈机制
创建者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
使用场景:相同的方法,不同的执行顺序,产生不同的事件结果时。
工厂方法模式:一个用于创造对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
使用场景:spring框架
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
使用场景:一个对象族,有相同的约束,比如产生相同数量的男女
责任链模式:使多个对象都有计划处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。