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)羽恒梦工厂(有关教材视频的网站)

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

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

有关 PHP 的 10 道问题的更多相关文章

  1. 10道C++输出易错笔试题收集

    下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去.我从中选了10道简单的题,C++初学者可以进来挑战下,C++大牛也可以作为娱乐玩下(比如下面的 ...

  2. Java程序员的10道XML面试题

    包括web开发人员的Java面试在内的各种面试中,XML面试题在各种编程工作的面试中很常见.XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准.XML面试问题包括用于转换XML文件的X ...

  3. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

    经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...

  4. iOS进阶面试题----经典10道

    OneV‘s Den在博客里出了10道iOS面试题,用他的话是:"列出了十个应聘Leader级别的高级Cocoa/CocoaTouch开发工程师所应该掌握和理解的技术" .  在这 ...

  5. Java程序员的10道XML面试题 (转)

    包括web开发人员的Java面试在内的各种面试中,XML面试题在各种编程工作的面试中很常见.XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准.XML面试问题包括用于转换XML文件的X ...

  6. 面试必备的10道MySQL题

    MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起.下面我们先来了解一下什么是 MyS ...

  7. Java:关于main方法的10道面试题

    感觉假期过得好快,东西也丢得快. 假期吃喝玩乐之余也来温故一下Java知识,下面给大家整理了10道Java main方法的经典面试题,都来挑战一下自己的Java基础知识吧! 1.main方法是做什么用 ...

  8. 10道不得不会的JavaEE面试题

    10道不得不会的 JavaEE 面试题 我是 JavaPub,专注于面试.副业,技术人的成长记录. 以下是 JavaEE 面试题,相信大家都会有种及眼熟又陌生的感觉.看过可能在短暂的面试后又马上忘记了 ...

  9. 这10道springboot常见面试题你需要了解下

    ​ 1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的 ...

  10. 10道javascript笔试题

    1.考察this JavaScript var length = 10; function fn() { console.log(this.length); } var obj = { length: ...

随机推荐

  1. pycharm如何解决新建的文件没有后缀的问题

    如下设置: 1.settings 2.file and code templates3.点击图中绿色的“+”号,即可打开新建模板页面4.定义模板名字.后缀名保存即可

  2. 内核编译之vmlinuz vmlinux system.map initrd

    一.vmlinuz  vmlinuz是可引导的.压缩的内核.“vm”代表“Virtual Memory”.Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制.Linux能够使用 ...

  3. 【FTP】FTP服务器的搭建

    记录一下FTP服务器的搭建首先打开 程序和功能>打开或关闭Windows功能 进入到Windows功能界面:勾选FTP服务器.然后再在IIS界面,新建一个网站.右键网站,选择“添加到FTP发布” ...

  4. Ethereum for web developers

    我学习以太坊区块链平台已经有一段时间了,这个真是让我越学越兴奋啊.网络上有很多关于以太坊的资料(文章,视频,平台官网),这些我们都很容易就获取到,由于平台还在快速迭代所以相关的资料内容普遍普遍滞后.自 ...

  5. 揭开Docker的神秘面纱

    Docker 相信在飞速发展的今天已经越来越火,它已成为如今各大企业都争相使用的技术.那么Docker 是什么呢?为什么这么多人开始使用Docker? 本节课我们将一起解开Docker的神秘面纱. 本 ...

  6. 怎样找回被删除的EXCEL

    我使用的是腾讯管家进行文件恢复,步骤如下: (1)打开电脑管家,选择工具箱. (2)找到文件找回,点击. (3)选择恢复被删除的文件. (4)选择我们删除的文件. (5)文件还原后路径,点击“确认还原 ...

  7. Android开发(十二)——头部、中部、底部布局

    参考: [1] http://www.thinksaas.cn/group/topic/82898/ [2] http://***/Article/12399 其实RadioGroup不好使,不能图片 ...

  8. 【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输

    实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore1S USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid ...

  9. C#基础回顾:正则表达式-转

    写在前面:本文根据笔者的学习体会结合相关书籍资料对正则表达式的语法和使用(C#)进行基本的介绍.适用于初学者. 摘要:正则表达式(Regular Expressions),相信做软件开发的朋友或多或少 ...

  10. mysql之我们终将踩过的坑(优化)

    一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型.一个好的sql语句至少 ...