• 有关 PHP 的 10 道问题


    1.简述面向对象的三大特性

    答:封装 --  继承  --  多态

      封装的目的:为了让类更安全

      继承的概念:子类可以继承父类的一切

      多态的概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。

    2.面向对象的接口和类有什么异同

    方法一:

    答:接口的方法不能直接调用

      不能直接转化,能继承,再把里面的抽象方法实现了就OK了

      自己的理解是:

      接口不能实例化,他里面可以有抽象方法,属性,只能被继承,在继承的时候要实现里面的抽象方法

      接口看起来和类差不多,但是类的继承是单继承,不能同时继承多个类

      接口就可以多继承,就是一个类或接口,可以继承多个接口

    方法二:

    答:接口不是类,因为关键字不一样!

      类 为class

      接口 为 interface

      接口里面只定义方法本身,但不定义方法的实现过程

      类的接口实现的载体,即类实现接口中定义的方法,其实就是定义方法的实现过程。

     

    3.一列数的规则如下:1,1,2,3,5,8,13,21,34.....求第30位数是多少,用递归算法实现

     答:

    public class MainClass
      {
           public static void Main()
          {
           Console.WriteLine(Foo(30));
           }
           public static int Foo(int i)
           {
             if (i <= 0)
               return 0;
            else if(i > 0 && i <= 2)
              return 1;
            else
                 return Foo(i -1) + Foo(i - 2);
           }
      }
     
    先看题目:数列的规律是从第3个数开始,每个数是前两个数的和。
    public static int Foo(int i)    即定义一个公共静态函数体,输入一个整数(第X位数),返回值;
    if (i <= 0)
    return 0; 预防输入0或负数,输入则返回“0”;

    else if (i > 0 && i <= 2)
    return 1; 如果输入第1位或第2位,则返回“1”(如题);

    else return Foo(i - 1) + Foo(i - 2); 输入其它的数则返回前两个数的值。注意:因为求数列中每一个值都是调用该函数,所以求前两个数的值就又要调用2个这个函数。这就是递归(调用自身)。
    eg: 求Foo(30)的值,则返回Foo(29) + Foo(28)的值,其中又要调用Foo(29) 和Foo(28)求它们的值,Foo(29)又要调用Foo(28)和Foo(27),Foo(28)又要调用Foo(27)和Foo(26)……直到调用Foo(2)和Foo(1)会返回“1”,又一层层代回去,最后加出正确答案。

    4.简述单例模式和工厂模式的实现方法

    答:(1) 单例模式就是确保一个类只能有一个实例,并且提供一个全局访问点

      (2) 类的计划生育

      让该类在外界无法造对象

      让外界只能造一个对象,做一个静态方法返回对象

      在类里面通过静态变量控制返回对象只能有一个

      (1—1) 工厂模式就是定义一个创建对象的接口,但有子类决定要实例化的是哪一个,工厂模式把实例化推迟到子类。

      (1—2)还有抽象工厂则是提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

      (2—1)工厂模式是最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。

     

    5.简述你对 MVC 模式的看法

    方法一:

    答:M:Model   (模型) 实体类,例如蛋糕

      V:View (视图) 局部控制,例如界面

      C:Controller    (控制器)用户接口类, 用户会首先访问这个东西,例如营业员

      上面三者合起来,就相当于构建了一个场景,营业员在经营食品店,客户访问我制作的网页就像去买蛋糕一样!

    方法二:

    答:MVC本来是存在Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使用同一个程序可以使用不同的表现形式。比如一批一批统计数据你可以分别用柱状图,饼图来表示,C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

    方法三:

    答:MVC是一个设计模式,它强制性的使应用程序的输入,处理和输出分开。使用MVC应用程序被分成三个核心部件: 模型,视图,控制器。他们各自处理自己的任务。

    6.写出一条SQL语句,取出A表中第31到40条记录

    答:第一种解法:

           select top 10 * from tableA where ID not in (select top 30 ID from tableA)

           第二种解法:

           select top 40 * from tableA  except select top 30 * from tableA 

           以上两种解法相对比较简单,并且不要求ID是否连续或者自动增长。不过这两种解法适合于SQL SERVER,并不适合于ORCLE数据库

           第三种解法:

           select * from (select ROW_NUMBER() over(order by t.ID) curr,t.* from tableA t) a where a.curr between 31 and 40 

           这种解法使用到了row_number() over函数,此函数返回一个列。这种写法倒是能够同时适用于SQL SERVER和ORCLE数据库,不过需要ID是自增长的。

    7.简述overload 和 override 区别

    答:overload是重载,在同一个类中,允许存在同名函数,但他们的参数个数或者参数类型不同即可。

      override是重写,重写就是子类重写了父类的方法。

    8.简述 js 的 作用 和 闭包

    答:js的函数作用域:

      没有块作用域:即作用不是以{}包围的,其作用域完全由函数来决定,因而 if / for 等语句的花括号不是独立的作用域。

      如前述, js 的在函数中定义的局部变量只对这个函数内部可见,称之为函数作用。

    答:全局作用域:

      全局作用域的变量是全局对象的属性,不论在什么函数中都可以直接访问,而不需要通过全局对象,但加上全局对象,可以提供搜索效率

     满足下列条件的变量属于全局作用域:

      在最外层定义的变量

      全局对象的属性

      任何地方隐匿定义的变量。

    答:js闭包的用途

      闭包有两个用途,一是方便实现嵌套的回调函数,二是隐藏对象的细节。

      对于前者 NodeJS 的编程风格已经可以说明问题,对二后者,对于函数内部的局部变量外部是不可见的,但可以提供访问函数来访问和修改相应的局部变量,从而实现 OOP 封装的意图。 

    9.CSS中 margin 和 padding的区别

    答:maergin外部边距

      padding内部边距

    10.简述你做过的项目,遇到的问题,如何解决的

    答:(1)羽恒梦工厂(有关教材视频的网站)

      当时遇到了一个用流媒体播放器的视频地址隐藏问题,

      解决方法是参考的网上资料,备注在博客园了。

  • 相关阅读:
    Java基础
    HTML笔记
    Java简介
    win8 图标 汇总 希望做Windows 8 应用的朋友用得着
    amCharts 的完整使用及破解[我弄过的]
    找了几个地方:发现关于SQL 的基本使用sql日期精确推算
    使用powerdesigner生成Pdm
    windows 8 Metro 设置选中ListViewItem 的样式
    关于DataTable与IList和List泛型集合的相互转换在网上总结
    C++ RString (原生字符串)
  • 原文地址:https://www.cnblogs.com/zc290987034/p/6366330.html
Copyright © 2020-2023  润新知