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、这样就查出来每个分类及其对应的子类。
评论列表
文章目录