面试

1.能够使html和php分离开使用的模板?

答:Smarty、template、PHPlibTemplate、FastTemplate

2.使用那些工具进行版本控制?
   答:
Clear case
       2.CVS
3.SVN
       4.PVCS
       5 Perforce
       6.CCC
       7.StarTeam
       8.RCS

3.写出Zend框架的目录结构,简单说明目录作用?
答:

application/ – 存放应用程序的目录,包括 MVC 系统、配置文件、服务以及引导程序(Bootstrap.php)
    configs/ –配置文件目录。
    application/modules   – 多模块目录结果例如admin(后台前程),default(前台),shop(商城)各个模块下都有自己的controllers,modules,Views
    controllers/models/views/ – 控制器/模型/视图 目录。
    application/cache –存放缓存等数据
    application/helpers/ – 这个是存放“行动助手”(action helper)的目录。这些助手类默认的命名空间是“Controller_Helper_”,如果是多模块那么命令空间将是“<Module>_Controller_Helper”。

Bootstrap.php – 这个是应用程序入口文件。这个类的主要工作是引导应用程序,注册并初始化组件(component)。注意:不要在这个文件调用前置控制器(front controller)的dispatch() 方法。

library/ – 存放类库的目录。第三方的类库和自己写的类库放在这里进行自动 加载 但要注意要用自己独立的命名空间(建子目录)。

public/ – 存放公开文件的目录,也即网站的根目录,存放可以被用户访问的文件,例如js、css和图片等等。index.php 是应用程序的单入口,其主要工作是建立php环境,引用Bootstrap.php来初始化,并调用前置控制器的dispatch()方法来分发请求。

4.谈谈对mvc的认识?
答:
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图是用户看到并与之交互的界面。
模型表示企业数据和业务规则。
控制器接受用户的输入并调用模型和视图去完成用户的需求。
MVC的优点:低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、可扩展性,有利于软件工程化管理
MVC的缺点:没有明确的定义,完全理解MVC并不容易。不适合小型规模的应用程序。

5. PHP如何抛出和接收错误?
答:
使用try...catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会抛出一个异常。Catch代码块捕获异常,并创建一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。

6.下面的类是否正确,如果正确请补全方法输入类属性$_a;错误请修改并输出属性$_a

<?php
Class A
{
       protected$a=1;
       publicfunction test()
       {
       echo$this->a;
       }

}
答:

$a=new A;
$a->test();

?>

7.请取出数组中的最大值?
$a=array(1,9,3,5,6,8);
$a=array(1,2,3,4,5,9);

答:

$b=max($a);
echo $b;
or
$a=array(1,9,3,5,6,8);
rsort($a);
Echo array_shift($a);

8.请说明PHP中传值和引用的区别。什么时候传值什么时候引用?
    答:
    按值传递:函数范围内对值的任何改变在函数外部都会被忽略。
    按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改。
    优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
    按引用传递则不需要复制值,对于性能提高很有好处。
     如果不想改变原变量的值的时候就传值,如
     $a=1;
     function aa($a){
     echo ++$a;
     }
     aa($a);
     如果可以让函数改变了原变量的值就可以引用传值,
     $a=1;
     function aa(&$a){
     echo ++$a;
     }
     aa($a);

9.有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用PHP函数)
答:
$a=array(1,9,3,5,6,8,7);
<?php
function getMinStr($str) {

for ($i=0;$i<count($str);$i++) {

for($j=$i+1;$j<count($str);$j++) {

if($str[$i]<$str[$j]) {

$tmp = $str[$i];

$str[$i]=$str[$j];

$str[$j]=$tmp;

}

}

}

return $str;

}

$str = array(4,3,8,9,2);
print_r(getMinStr($str));

10.请问同时满足这样条件的数:被10除于9,被9除于8,被8除于7,在100—1000之间,有几个这样的数?(并写出算法)
答:

A不存在,B 1个 C2个   D 3个

分析过程:
   P除以10余9:P+1就被10整除

   P除以9余8:P+1就被9整除

   P除以8余7:P+1就被8整除

   所以P=8,9,10的功倍数-1

   8=2*2*2,9=3*3,10=2*5

   则P+1一定是2*2*2*3*3*5的倍数(只能约掉一个2 )

   又100<=P<=1000

   101<=P+1<=1001

   所以P+1=360,720

   所以P=359,719

11.请写出一个简单的静态数组?
答:
Class A{
Static $a=array('11'=>'1111');
}

Print_r(A::$a);

12.写一个简单的jquery显示隐藏代码?
答:
$("#aa").hide();
$("#aa").show();

13.语句include和require的区别是什么?
   答:
PHP在遇到include时就必须重新解释一次,如果在同一个页面出现10次include,它便会重新解释10次。PHP遇到require时,不管在同一个php网页中出现几次require,PHP只会解释一次而已。
Require执行效率比include高。
Require包含进来的内容被当成当前文件的一个组成部分,所以当包含进来的文件有语法错误或者文件不存在的时候,那个PHP脚本都不再执行。Include函数相当于指定这个文件的路径,当被包含的文件有错时不会影响到本身的程序执行。
Include可以进行判断是否包含,而require则是不管任何情况都包含进来。

14.用PHP获取当前时间并打印,打印格式:2006-5-10 22:21:21
答:
Echo Date("Y-m-d H:i:s");

15.字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么?
   答:
   Implode()、explode()、substr()、str_replace()、strpos、strrpos、strstr

16.解释一下PHP的类中:protect,public,private,interface,abstract,final,static的含义
   答:
   Protected受保护的,在本类和子类中有效。
    Public 公共的,在本类、子类中、类外都可以使用。
    Private 私有的,在本类中有效。
    Interface 定义一个接口时使用的关键字。
    Abstract 定义一个抽象类或者抽象方法时使用的关键字。
    Final 用final申明的方法无法被覆盖,用final申明的类不能被继承。
    Static 定义静态方法或者静态属性使用的关键字

17.写出下列代码的数据结果
   答:
   $date='08/26/2003';
    print ereg_replace(“([0-9]+)/([0-9]+)/([0-9]+)”,2/1/3,$date,);

18.从表login中选出name字段包含admin的前10条结果所有信息的sql语句
   答:
    Select *from login where name like '%admin%' limit 0,10;

解释:左连接,右连接,内连接,索引。
  答:
   1、內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来。内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来。
   2、左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少。
   3、左连接是只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来
   4、右连接是只要右边表中有记录,数据就能检索出来 ;
   5、全连接则会回返回两个表中的所有记录

20.简述论坛中无限分类的实现原理。
  答:
   1、数据库分类表的设计:id字段、父id字段、类名称字段、path字段
   2、Path字段存当前分类的路径,格式:0,父类id,本身id
   3、查询分类:select * from 分类表order by path asc;
   4、这样就查出来每个分类及其对应的子类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值