面试题(中高级)

1、接口和抽象类的区别

  详解参见 http://www.php.cn/php-weizijiaocheng-372186.html

  ① 对接口使用通过关键字implements,对抽象类使用通过关键字extends。接口也可以用关键字extends继承。

  ② 接口中不可以声明成员变量(包括静态变量),但可以声明类常量。抽象类中可以声明各种类型的变量

  ③ 接口中没有构造函数,抽象类可以有构造函数

  ④ 接口中的方法默认都是public类型的,而抽象类中的方法可以使用public、protected、private开修饰

  ⑤ 一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。抽象类是一种特殊的接口

  使用场景:

    使用抽象类:要创建一个模型,这个模型将由一些紧密相关的对象采用。所有类都会共享一个公共的行为实现时使用,并在其中实现该行为

    接口:要创建一些不想管对象采用的功能。如果必须从多个来源继承行为。

2、PHP常见设计模式https://blog.csdn.net/z15818264727/article/details/52354263

  单例模式:在应用程序中最多只有该类的一个实例存在,一旦创建,就会一直存在内存中

  应用场景:应用程序与数据库交互,在一个一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源

  

  工厂模式:是一种常见的实例化对象模式,是用工厂方法替代new操作的一种模式。

  使用场景:在项目中通过一个类创建多个实例对象,在快要完成的时候需要扩展功能的时候需要修改类名或者需要添加构造餐后才能实现功能扩展。工厂模式利于程序实现高内聚低耦合。

  实例参考 https://baike.baidu.com/item/%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/9852061?fr=aladdin#4

  观察者设计模式:一个对象通过提供方法允许另一个对象即观察者 注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息执行的操作与可观察的对象无关。结果是对象可以相互对话,而不必了解原因。观察者模式是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察的类状态发生改变的时候,观察类可以收到通知并且做出相应的动作;观察者模式为您提供了避免组件之间紧密耦

  适配器模式:将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本的由于接口不兼容而不能一起工作的那些类可以一起工作。

  应用场景:老代码接口不适应新的接口需求,或者代码很多很乱不便于继续修改,或者使用第三方类库。例如:php连接数据库的方法:mysql,,mysqli,pdo,可以用适配器统一

  策略模式:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境。
  例如:一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告

3、pv、uv、iv

  pv访问量(Page View),即页面访问量,每打开一次页面PV计数+1,刷新页面也是。

  UV访问数(Unique Visitor)指独立访客访问数,一台电脑终端为一个访客。

  IV是IP访问数指独立IP访问数,计算是以一个独立的IP在一个计算时段内访问网站计算为1次IP访问数。在同一个计算时段内不管这个IP访问多少次均计算为1次。计算时段有以1天为一个计算时段,也有以1个小时为一个计算时段。

  数据:3-5年用户数达到1000万注册用户。

每秒并发数预估:

  1. 每天的UV为200万(二八原则);

  2. 每日每天点击浏览30次;

  3. PV量:200*30=6000万;

  4. 集中访问量:24*0.2=4.8小时会有6000万*0.8=4800万(二八原则);

  5. 每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);

  6. 每秒并发量:16.7万/60=2780(约等于);

  7. 假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。

  8. 1毫秒=1.3次访问;

 

 

posted @ 2019-04-30 15:25  李松伟  阅读(265)  评论(0编辑  收藏  举报