php面试宝典

一、表单中 get与post提交方法的区别?javascript

答:get是发送请求HTTP协议经过url参数传递进行接收,而post是实体数据,能够经过表单提交大量信息.php

二、session与cookie的区别?html

答:session:储存用户访问的全局惟一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放java

   cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来讲是存储在用户WIN的Temp目录中的。mysql

二者均可经过时间来设置时间长短linux

三、数据库中的事务是什么?面试

答:事务(transaction)是做为一个单元的一组有序的数据库操做。若是组中的全部操做都成功,则认为事务成功,即便只有一个操做失败,事务也不成功。若是全部操做完成,事务则提交,其修改将做用于全部其余数据库进程。若是一个操做失败,则事务将回滚,该事务全部操做的影响都将取消。正则表达式

四、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)算法

答:echo date('Y-m-d H:i:s', strtotime('-1 days'));sql

五、echo(),print(),print_r()的区别(3分)

答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数能够有返回值(即使没有用)  

   print()只能打印出简单类型变量的值(如int,string)  

   print_r()能够打印出复杂类型变量的值(如数组,对象)  

   echo     输出一个或者多个字符串

六、可以使HTML和PHP分离开使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

十、PHP的意思(送1分)

答:PHP是一个基于服务端来建立动态网站的脚本语言,您能够用PHP和HTML生成网站主页

十一、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

答:now(),date()

十二、实现中文字串截取无乱码的方法。(3分)

答:function GBsubstr($string, $start, $length) {

if(strlen($string)>$length){

     $str=null;

     $len=$start+$length;

for($i=$start;$i<$len;$i++){

if(ord(substr($string,$i,1))>0xa0){

     $str.=substr($string,$i,2);

     $i++;

}else{

     $str.=substr($string,$i,1);

     }

    }

return $str.'...';

}else{

return $string;

   }

}

1三、您是否用过模板引擎? 若是有您用的模板引擎的名字是?(1分)

答:用过,smarty

1四、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,

程序功能规则,禁止外部的盗链,控制大文件的下载,使用不一样主机分流主要流量

1五、用PHP写出显示客户端IP与服务器IP的代码1分)

答:打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');

打印服务器IP:echo gethostbyname("www.bolaiwu.com")

1六、语句include和require的区别是什么?为避免屡次包含同一文件,可用(?)语句代替它们? (2分)

答:require->require是无条件包含也就是若是一个流程里加入require,不管条件成立与否都会先执行require

  include->include有返回值,而require没有(可能由于如此require的速度比include快)

注意:包含文件不存在或者语法错误的时候require是致命的,include不是

1七、如何修改SESSION的生存时间(1分).

答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache

方法2:$savePath = "./session_save_dir/";

      $lifeTime = 小时 * 秒;

      session_save_path($savePath);

      session_set_cookie_params($lifeTime);

      session_start();

方法3:setcookie() and session_set_cookie_params($lifeTime);

1八、有一个网页地址, 好比PHP开发资源网主页: http://www.phpres.com/index.html,如何获得它的内容?($1分)

答:方法1(对于PHP5及更高版本):

$readcontents = fopen("http://www.phpres.com/index.html", "rb");

$contents = stream_get_contents($readcontents);

fclose($readcontents);

echo $contents;

方法2:

echo file_get_contents("http://www.phpres.com/index.html");

1九、在HTTP 1.0中,状态码401的含义是(?);若是返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

答:状态401表明未被受权,header("Location:www.xxx.php");

20、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

答:heredoc的语法是用"<<<"加上本身定义成对的标签,在标签范围內的文字视为一个字符串

例子:

$str = <<<SHOW

my name is Jiang Qihui!

SHOW;

2一、谈谈asp,php,jsp的优缺点(1分)

答:ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它能够产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script)做为本身的开发语言。

PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法, 并耦合PHP本身的特性,使WEB开发者可以快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PHP是彻底免费的,不用花钱,你能够从PHP官方站点(http://www.php.net)自由下载。并且你能够不受限制地得到源码,甚至能够从中加进你本身须要的特点。

JSP 是Sun公司推出的新一代站点开发语言,他彻底解决了目前ASP,PHP的一个通病--脚本级执行(听说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助本身在Java 上的不凡造诣,将Java 从Java 应用程序和 Java Applet 以外,又有新的硕果,就是Jsp--Java Server Page。Jsp 能够在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操做仅在对 JSP 页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PHP、JSP 页面须要附加的语言引擎分析和执行程序代码。程序代码的执行结果被从新嵌入到HTML 代码中,而后一块儿发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术,客户端浏览器不须要任何附加的软件支持。

2二、谈谈对mvc的认识(1分)

答:由模型(model),视图(view),控制器(controller)完成的应用程序由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;

2三、写出发贴数最多的十我的名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

2四、 请说明php中传值与传引用的区别。何时传值何时传引用?(2分)  以题的形式 出

答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来讲,这将会是一个代价很大的操做。

按引用传递则不须要复制值,对于性能提升颇有好处。

2五、 在PHP中error_reporting这个函数有什么做用? (1分)

答:设置错误级别与错误信息回报

2六、请写一个函数验证电子邮件的格式是否正确 (2分)

答:function checkEmail($email)

  {

    $pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";

return preg_match($pregEmail,$email);  

  }

2七、 简述如何获得当前执行脚本路径,包括所获得参数。(2分)

答:$script_name = basename(__file__); print_r($script_name);

2八、JS表单弹出对话框函数是?得到输入焦点函数是? (2分)

答:弹出对话框: alert(),prompt(),confirm()

得到输入焦点 focus()

2九、JS的转向函数是?怎么引入一个外部JS文件?(2分)

答:window.location.href,<script type="text/javascript" src="js/js_function.js"></script>

30、foo()和@foo()之间有什么区别?(1分)

答:@foo()控制错误输出

3一、如何声明一个名为”myclass”的没有方法和属性的类? (1分)

答:class myclass{ }

3二、如何实例化一个名为”myclass”的对象?(1分)

答:new myclass()

3三、你如何访问和设置一个类的属性? (2分)

答:$object = new myclass();

   $newstr = $object->test;

   $object->test = "info";     sxhj_lzd@163

3四、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

答:mysql_fetch_row是从结果集取出1行数组,做为枚举

   mysql_fetch_array是从结果集取出一行数组做为关联数组,或数字数组,二者兼得

3五、GD库是作什么用的? (1分)

答:gd库提供了一系列用来处理图片的API,使用GD库能够处理图片,或者生成图片。

在网站上GD库一般用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

3六、指出一些在PHP输入一段HTML代码的办法。(1分)

答:echo "<a href='index.php'>aaa</a>";

3七、下面哪一个函数能够打开一个文件,以对文件进行读和写操做?(1分)

    (a) fget() (b) file_open() (c) fopen() (d) open_file()  [  c  ]

3八、下面哪一个选项没有将 john 添加到users 数组中? (1分)

  (a) $users[] = ‘john’;

  (b) array_add($users,’john’);

  (c) array_push($users,‘john’);

  (d) $users ||= ‘john’;  [  a , c  ]

3九、下面的程序会输入是否?(1分)

  $num = 10;

  function multiply(){

  $num = $num * 10;

  }

  multiply();

  echo $num;

  ?>

输出:10

40、使用php写一段简单查询,查出全部姓名为“张三”的内容并打印出来 (2分)

  表名User

  Name Tel Content Date

  张三 13333663366 大专毕业 2006-10-11

  张三 13612312331 本科毕业 2006-10-15

  张四 021-55665566 中专毕业 2006-10-15

  请根据上面的题目完成代码:

  $mysql_db=mysql_connect("local","root","pass");

  @mysql_select_db("DB",$mysql_db);

    $result = mysql_query("SELECT * FROM `user` WHERE name='张三'");

while($rs = mysql_fetch_array($result)){

echo $rs["tel"].$rs["content"].$rs["date"];

    }   

4一、如何使用下面的类,并解释下面什么意思?(3)

  class test{

function Get_test($num){

      $num=md5(md5($num)."En");

       return $num;

    }

  }

答:$testnum = "123";

   $object = new test();

   $encrypt = $object->Get_test($testnum);

echo $encrypt;

类test里面包含Get_test方法,实例化类调用方法多字符串加密

4二、写出 SQL语句的格式 : 插入,更新,删除 (4分)

  表名User

  Name Tel Content Date

  张三 13333663366 大专毕业 2006-10-11

  张三 13612312331 本科毕业 2006-10-15

  张四 021-55665566 中专毕业 2006-10-15

  (a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中

    mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES

    ('小王','13254748547','高中毕业','2007-05-06')")

  (b) 请用sql语句把张三的时间更新成为当前系统时间

    $nowDate = date("Ymd");

    mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='张山'");

  (c) 请写出删除名为张四的所有记录

    mysql_query("DELETE FROM `user` WHERE name='张四'");

4三、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)

答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串

   char的场地固定为建立表设置的长度,varchar为可变长度的字符

4四、写出如下程序的输出结果 (1分)

  $b=201;

  $c=40;

    $a=$b>$c?4:5;

  echo $a;

  ?>

答:4

4五、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

答:isset($str),empty($str);

4六、取得查询结果集总数的函数是?(1分)

答:mysql_num_rows($result);

4七、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)

答:echo $array[0];

4八、请将41题的数组的值用','号分隔并合并成字串输出(1分)

答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}

4九、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)

答:echo $a{0} 或 echo substr($a,0,1)

50、PHP能够和sql server/oracle等数据库链接吗?(1分)

答:固然能够

5一、请写出PHP5权限控制修饰符(3分)

答:public(公共),private(私用),protected(继承)

5二、请写出php5的构造函数和析构函数(2分)

答:__construct , __destruct

5三、完成如下:

5四、 

(一)建立新闻发布系统,表名为message有以下字段 (3分)

  id 文章id

  title 文章标题

  content 文章内容

  category_id 文章分类id

    hits 点击量

答:CREATE TABLE 'message'(

   'id' int(10) NOT NULL auto_increment,

   'title' varchar(200) default NULL,

   'content' text,

   'category_id' int(10) NOT NULL,

   'hits' int(20),

   PRIMARY KEY('id');

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

(二)一样上述新闻发布系统:表comment记录用户回复内容,字段以下 (4分)

  comment_id 回复id

  id 文章id,关联message表中的id

  comment_content 回复内容

  现经过查询数据库须要获得如下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

  文章id 文章标题点击量回复数量

  用一个SQL语句完成上述查询,若是文章没有回复则回复数量显示为0

答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,

IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN

comment ON message.id=comment.id GROUP BY message.`id`;

  (三)上述内容管理系统,表category保存分类信息,字段以下 (3分)

  category_id int(4) not null auto_increment;

  categroy_name varchar(40) not null;

  用户输入文章时,经过选择下拉菜单选定文章分类

  写出如何实现这个下拉菜单

答:function categoryList()

{

    $result=mysql_query("select category_id,categroy_name from category")

or die("Invalid query: " . mysql_error());

print("<select name='category' value=''>\n");

while($rowArray=mysql_fetch_array($result))

    {

print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>\n");

    }

print("</select>");

}

 

5四、 写一个函数,尽量高效的,从一个标准 url 里取出文件的扩展名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1 须要取出 php 或 .php

答案1:

function getExt($url){

   $arr = parse_url($url);

 

   $file = basename($arr['path']);

   $ext = explode(".",$file);

return $ext[1];

}

答案2:

function getExt($url) {

    $url = basename($url);

    $pos1 = strpos($url,".");

    $pos2 = strpos($url,"?");

if(strstr($url,"?")){

return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);

    } else {

return substr($url,$pos1);

    }

}

 

5五、 在 HTML 语言中,页面头部的 meta 标记能够用来输出文件的编码格式,如下是一个标准的 meta 语句

  请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的相似 meta 标记中的 charset 部分值改成 big5

  请注意:

  1. 须要处理完整的 html 页面,即不光此 meta 语句

  2. 忽略大小写

    3. ' 和 " 在此处是能够互换的

    4. 'Content-Type' 两侧的引号是能够忽略的,但 'text/html; charset=gbk' 两侧的不行

  5. 注意处理多余空格

5六、写一个函数,算出两个文件的相对路径

  如 $a = '/a/b/c/d/e.php';

  $b = '/a/b/12/34/c.php';

  计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上

答:function getRelativePath($a, $b) {   

    $returnPath = array(dirname($b));   

    $arrA = explode('/', $a);   

    $arrB = explode('/', $returnPath[0]);   

for ($n = 1, $len = count($arrB); $n < $len; $n++) {   

if ($arrA[$n] != $arrB[$n]) {   

break;   

        }    

    }   

if ($len - $n > 0) {   

        $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));   

    }   

 

    $returnPath = array_merge($returnPath, array_slice($arrA, $n));   

return implode('/', $returnPath);   

   }   

echo getRelativePath($a, $b);

 

 

5七、如何实现PHP、JSP交互?

  题目有点含糊不清,SOAP,XML_RPC,Socket function,CURL均可以实现这些,若是是考PHP和Java的整合,PHP内置了这种机制(若是考PHP和.NET的整合,也能够这么回答),例如$foo = new Java('java.lang.System');

5八、使用哪些工具进行版本控制?

  CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具,呃,这个可能须要这么回答:CVS Server on Apache做服务端,WinCVS做客户端;Subversion on Apache/DAV 作服务端,TortoiseSVN作客户端,或者Subclipse作客户端

5九、如何实现字符串翻转?

  其实PHP自己就有字符串翻转的函数:strrev(),不妨试试echo strrev($str);不过全部的这三种方法都不能解决中文字符串翻转的问题,会出错的。

代码

<?php

function reverse($var)

{

    $res="";

for($i=0,$j=strlen($var);$i<$j;$i++)

     {

        $res=$var[$i].$res;

     }

return $res;

}

$tmpvar="wofang";

$res=reverse($tmpvar);

echo $res;

?>

60、优化MYSQL数据库的方法。

  (1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),容许部分数据冗余,避免JOIN操做,以提升查询效率

  (2).系统架构设计方面,表散列,把海量数据散列到几个不一样的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master

  (3).(1)和(2)超越PHP Programmer的要求了,会更好,不会不要紧.检查有没有少加索引

  (4).写高效的SQL语句,看看有没有写低效的SQL语句,好比生成笛卡尔积的全链接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每个sql语句

  (5).所得皆必须,只从数据库取必需的数据,好比查询某篇文章的评论数,select count(*) ... where article_id = ? 就能够了,不要先select * ... where article_id = ?而后msql_num_rows.

只传送必须的SQL语句,好比修改文章的时候,若是用户只修改了标题,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)

  (6).必要的时候用不一样的存储引擎.好比InnoDB能够减小死锁.HEAP能够提升一个数量级的查询速度

6一、谈谈事务处理

  A给B的帐户转帐50美圆的例子

6二、apache+mysql+php实现最大负载的方法

见7

6三、实现中文字串截取无乱码的方法。

  mb_substr()

?>

6四、用PHP写出显示客户端IP与服务器IP的代码:

打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');

打印服务器IP:echo gethostbyname("http://www.baidu.com/")

 

6五、在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量(1)中;而连接到当前页面的的前一页面URL记录在预约义变量(2)中

<?php

//本页地址,SCRIPT_NAME也能够:php/test.php

echo $_SERVER['PHP_SELF']."<br />";

//连接到当前页面的前一页面的 URL 地址:

echo $_SERVER['HTTP_REFERER']."<br />";

//其它的见参考手册:语言参考》变量》预约义变量

//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php

echo $_SERVER["SCRIPT_FILENAME"]."<br />";

//正在浏览当前页面用户的 IP 地址:127.0.0.1

echo $_SERVER["REMOTE_ADDR"]."<br />";

//查询(query)的字符串(URL 中第一个问号 ? 以后的内容):id=1&bi=2

echo $_SERVER["QUERY_STRING"]."<br />";

//当前运行脚本所在的文档根目录:d:inetpubwwwroot

echo $_SERVER["DOCUMENT_ROOT"]."<br />";

?>

6六、执行程序段<?php echo 8%(-2) ?>将输出__。

<?php

//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0

echo 8%(-2)."<br />";

//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2

echo ((-8)%3)."<br />";

//输出2

echo (8%(-3))."<br />";

?>

6七、在HTTP 1.0中,状态码 401 的含义是____;若是返回“找不到文件”的提示,则可用 header 函数,其语句为____。

答:401表示未受权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header]

6八、数组函数 arsort 的做用是____;语句 error_reporting(2047)的做用是____。

答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的做用是:report All errors and warnings

6九、写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把script标记及其内容都去掉):

<?php

$script="如下内容不显示:<script language='javascript'>alert('cc');</script>";

echo preg_replace("/<script[^>].*?>.*?</script>/si", "替换内容", $script);

?>

70、以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,

而后再用语句____使得Apache把全部扩展名为php的文件都做为PHP脚本处理。

答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php

见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装》Microsoft Windows 下的 Apache 2.0.x

7一、语句 include 和 require 都能把另一个文件包含到当前文件中,它们的区别是____;为了不屡次包含同一文件,能够用语句____来代替它们。

答:在如何处理失败时,include() 产生一个警告而 require() 则致使一个致命错误;require_once()/include_once()

7二、一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.

答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G

7三、SQL 中LEFT JOIN的含义是__,若是 tbl_user记录了学生的姓名(name)和学号(ID),

tbl_score记录了学生(有的学生考试之后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句____.

答:天然左外链接

create database phpinterview;

use phpinterview

create table tbl_user

(

    ID                             int                            not null,

name                           varchar(50)                    not null,

primary key (ID)

);

create table tbl_score

(

    ID                             int                            not null,

score                          dec(6,2)                       not null,

subject                        varchar(20)                    not null

);

 

insert into tbl_user (ID, name) values (1, 'beimu');

insert into tbl_user (ID, name) values (2, 'aihui');

insert into tbl_score (ID, score, subject) values (1, 90, '语文');

insert into tbl_score (ID, score, subject) values (1, 80, '数学');

insert into tbl_score (ID, score, subject) values (2, 86, '数学');

insert into tbl_score (ID, score, subject) values (2, 96, '语文');

 

select A.id,sum(B.score) as sumscore

from tbl_user A left join tbl_score B

on A.ID=B.ID

group by A.id

7四、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____

答:结束标识符所在的行不能包含任何其它字符除";"

7五、写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。

<?php

function my_scandir($dir)

{

    $files=array();

if(is_dir($dir))

     {

if($handle=opendir($dir))

         {

while(($file=readdir($handle))!==false)

             {

if($file!="." && $file!="..")

                 {

if(is_dir($dir."/".$file))

                     {

                        $files[$file]=my_scandir($dir."/".$file);

                     }

else

                     {

                        $files[]=$dir."/".$file;

                     }

                 }

             }

closedir($handle);

return $files;

         }        

     }    

}

print_r(my_scandir("D:Program FilesInternet ExplorerMUI"));

?>

 

 

7六、如下哪一句不会把 John 新增到 users 阵列?

$users[] = 'john';

成功把 John 新增到阵列 users。

array_add($users,’john’);

函式 array_add() 无定义。

array_push($users,‘john’);

成功把 John 新增到阵列 users。

$users ||= 'john';

语法错误。

7七、sort()、assort()、和 ksort() 有什么分别?它们分别在什么状况下使用?

sort()

根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 从新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。

assort()

PHP 没有 assort() 函式,因此多是 asort() 的笔误。

asort()

与 sort() 同样把阵列的元素按英文字母顺序来排列,不一样的是全部索引键都得到保留,特别适合替联想阵列排序。

ksort()

根据阵列中索引键的值,以英文字母顺序排序,特别适合用于但愿把索引键排序的联想阵列。

7八、如下的代码会产生什么?为何?

$num =10;

function multiply(){

$num =$num *10;

}

multiply();

echo $num;

因为函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),因此 $num 的值是 10。

7九、 reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么状况下咱们须要这样作?

Reference 传送的是变量的地址而非它的值,因此在函式中改变一个变量的值时,整个应用都见到这个变量的新值。

一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其余部分仍然见到旧值。

$myVariable = "its' value";

Myfunction(&$myVariable); // 以 reference 传送参数

以 reference 传送参数给函式,能够使函式改变了的变量,即便在函式结束后仍然保留新值。

80、些函式能够用来在现正执行的脚本中插入函式库?

对这道题目不一样的理解会有不一样的答案,个人第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,因此咱们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。

8一、foo() 与 @foo() 有什么分别?

foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。

@foo() 在执行这个函式时,会隐藏全部上述的错误讯息。

不少应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,由于错误不应被隐藏,你必须妥善处理它们,可能的话解决它们。

8二、你如何替 PHP 的应用程式侦错?

我并不常这样作,我曾经试过不少不一样的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过如下我会介绍一个近来颇受注目的侦错工具。

PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行如下的指令安装:

pear install apd安装后在你的脚本的开头位置加入如下的语句开始进行侦错:

apd_set_pprof_trace();执行完毕,打开如下档案来查阅执行日志:

apd.dumpdir

你也能够使用 pprofp 来格式化日志。

详细的资料能够参阅 http://us.php.net/manual/en/ref.apd.php。

8三、“===”是什么?试举一个“==”是真但“===”是假的例子。

“===”是给既能够送回布尔值“假”,也能够送回一个不是布尔值但却能够赋与“假”值的函式,strpos() 和 strrpos() 即是其中两个例子。

问题的第二部份有点困难,想一个“==”是假,可是“===”是真的例子却很容易,相反的例子却不多。但我终于找到如下的例子:

if (strpos("abc", "a") == true){    // 这部分永不会被执行,由于 "a" 的位置是 0,换算成布尔值“假”}if (strpos("abc", "a") === true){    // 这部份会被执行,由于“===”保证函式 strpos() 的送回值不会换算成布尔值.}

8四、你会如何定义一个没有成员函式或特性的类别 myclass?

class myclass{}

8五、你如何产生一个 myclass 的物件?

$obj = new myclass();

8六、在一个类别内如何存取这个类别的特性及变改它的值?

使用语句:$this->propertyName,例如:

class myclass{ private $propertyName; public function __construct() {   $this->propertyName = "value"; }}

8七、include 和 include_once 有什么分别?require 又如何?

三者都是用来在脚本中插入其余档案,视乎 url_allow_fopen 是否核准,这个档案能够从系统内部或外部取得。但他们之间也有微细的分别:

include():这个函式允许你在脚本中把同一个档案插入屡次,若果档案不存在,它会发出系统警告并继续执行脚本。

include_once():它跟 include() 的功能类似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。

require():跟 include() 差很少,它也是用来在脚本中插入其余档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本停止执行

8八、如下哪个函式能够把浏览器转向到另外一个页面?

redir()

这不是一个 PHP 函式,会引致执行错误。

header()

这个是正确答案,header() 用来插入卷头资料,能够用来使浏览器转向到另外一个页面,例如:

header("Location: http://www.search-this.com/");

location()

这不是一个 PHP 函式,会引致执行错误。

redirect()

这不是一个 PHP 函式,会引致执行错误。

8九、如下哪个函式能够用来开启档案以便读/写?

fget()

这不是一个 PHP 函式,会引致执行错误。

file_open()

这不是一个 PHP 函式,会引致执行错误。

fopen()

这是正确答案,fopen() 能够用来开启档案以便读/写,事实上这个函式还有不少选项,详细资料请参阅 php.net。

open_file()

这不是一个 PHP 函式,会引致执行错误。

90、mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?

mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如个人数据库查询送回“first_name”、“last_name”、“email”三个栏位,阵列的索引即是“first_name”、“last_name”和“email”。mysql_fetch_array() 能够同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

9一、下面的代码用来作什么?请解释。

$date='08/26/2003';print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);

这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。个人一个好朋友告诉我能够把这个正规表达式拆解为如下的语句,对于如此简单的表示是来讲其实无须拆解,纯粹为了解说的方便:

// 对应一个或更多 0-9,后面紧随一个斜号$regExpression = "([0-9]+)/";// 应一个或更多 0-9,后面紧随另外一个斜号$regExpression .= "([0-9]+)/";// 再次对应一个或更多 0-9$regExpression .= "([0-9]+)";至于 \\2/\\1/\\3 则是用来对应括号,第一个括号对的是月份,第二个括号对应的是日期,第三个括号对应的是年份。

9二、给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?

首先,PHP 有内建函式 strip_tags() 除去 HTML 标签,为什么要自行编写正规表达式?好了,便看成是面试的一道考题吧,我会这样回答:

$stringOfText = "<p>This is a test</p>";$expression = "/<(.*?)>(.*?)<\/(.*?)>/";echo preg_replace($expression, "\\2", $stringOfText);// 有人说也能够使用 /(<[^>]*>)/ $expression = "/(<[^>]*>)/";echo preg_replace($expression, "", $stringOfText);

9三、PHP 和 Perl 分辨阵列和散列表的方法有什么差别?

这正是为什么我总是告诉别人选择适当的编程语言,若果你只用一种语言的话你怎么能回答这道问题?这道问题很简单,Perl 全部阵列变量都是以 @ 开头,例如 @myArray,PHP 则沿用 $ 做为全部变量的开头,例如 $myArray。

至于 Perl 表示散列表则用 %,例如 %myHash,PHP 则没有分别,还是使用 $,例如 $myHash。

9四、你如何利用 PHP 解决 HTTP 的无状态本质?

最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),而后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字以前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表即可以存取全部 cookie 变量。

还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。

9五、GD 函式库用来作什么?

这个多是我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另外一个常见用途是制做所图档。GD 之外的另外一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安9六、试写出几个输出一段 HTML 代码的方法。

嗯,你能够使用 PHP 中任何一种输出语句,包括 echo、print、printf,大部分人都使用以下例的 echo:

echo "My string $variable";你也能够使用这种方法:

echo<<<ENDThis text is written to the screen as output and this $variable is parsed too. If you wanted you can have <span> HTML tags in here as well.</span> The END; remarks must be on a line of its own, and can't contain any extra white space.END;

9七、PHP 比 Perl 好吗?请讨论。

咱们不要为一个简单的问题引起一场舌战,正如我常常说的:“为工做选择适合的语言,不要把工做迁就语言。”我我的认为 Perl 十分适合用做命令行工具,虽然它在网页应用上也有不错的表现,可是它的真正实力在命令行上才能充分发挥。一样地,PHP 虽然能够在控制台的环境中使用,可是我的认为它在网页应用上有更好的表现,PHP 有大量专门为网页应用而设计的函式,Perl 则彷佛以命令行为设计之本。

我的来讲两种语言我都喜欢,在大学期间我常用 Perl、PHP 和 Java,惋惜工做上我使用 C#,但在家里我花很多时间操练 PHP、Perl、Ruby(现正学习)和 Java,保持个人技能知识在最新状态。不少人问我 C 和 C++ 怎么样,它们是否仍有机会在个人应用中占一席位,个人答案基本上是“否”,我近来的工做主要集中在网页开发,虽然 C 和 C++ 也能够用来写网页,但它们到底不是为这种工做而设计的,“为工做选择适合的语言”,若果我须要编写一个控制台应用,用来展现 bubble sort、quick sort 和 merge sort 的效能比较,我必定会使用 C / C++。若果我须要编写一个相片簿系统,我会使用 PHP 或者 C#(我认为制做用户介面方面 .NET 语言比网页更加)。

 

9八、请说明 PHP 中传值与传引用的区别。何时传值何时传引用?

答:传值只是把某一个变量的值传给了另外一个变量,而引用则说明二者指向了同一个地方。

9九、在PHP中error_reporting这个函数有什么做用?

答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.

100、 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。

答:

<?php

if(isset($_POST['action']) && $_POST['action']=='submitted')

{

    $email=$_POST['email'];

if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))

     {

        echo "电子邮件检测失败";

     }

else

     {

        echo "电子邮件检测成功";

     }

}

else

{

?>

<html>

<head><title>EMAIL检测</title>

<script type="text/javascript">

function checkEmail(sText)

     {

var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;

var email=document.getElementById(sText).value;

if(!reg.test(email))

         {

             alert("电子邮件检测失败");

         }

else

         {

             alert("电子邮件格式正确");

         }

     }

</script>

</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">

电子邮件:<input type="text" id="email" name="email" /><br />

<input type="hidden" name="action" value="submitted" />

<input type="button" name="button" value="客户端检测" onclick="checkEmail('email')" />

<input type="submit" name="submit" value="服务器端检测" />

</form>

</body>

</html>

<?php

}

?>

10一、 简述如何获得当前执行脚本路径,包括所获得参数。

<?php

echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];

//echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

?>

10二、有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须本身实现,不能使用php函数)

<?php

function BubbleSort(&$arr)

{

    $cnt=count($arr);

    $flag=1;

for($i=0;$i<$cnt;$i++)

     {

if($flag==0)

         {

return;

         }

        $flag=0;

for($j=0;$j<$cnt-$i-1;$j++)

         {

if($arr[$j]>$arr[$j+1])

             {

                $tmp=$arr[$j];

                $arr[$j]=$arr[$j+1];

                $arr[$j+1]=$tmp;

                $flag=1;

             }

         }

     }

}

$test=array(1,3,6,8,2,7);

BubbleSort($test);

var_dump($test);

?>

10三、请举例说明在你的开发过程当中用什么方法来加快页面的加载速度

答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

 

Mysql部分

10四、 建立poll表,用于记录单选投票用户的数据

字段包括 id[ Autoincreace ] , ip , time , iid(用户选则的选项,int型)

写出create上述table的完整sql语句

drop table if exists poll;

 

/*==============================================================*/

/* Table: poll                                                  */

/*==============================================================*/

create table poll

(

id                             int unsigned                   not null auto_increment,

ip                             varchar(15)                    not null,

time                           datetime                       not null,

iid                            int                            not null,

primary key (id)

)

10五、   写出将一个选择2号选项的ip为127.0.0.1的用户在当前时间的投票记录到数据库的SQL

insert into poll (ip,time,iid) values('127.0.0.1',now(),2);

10六、 写出知足下边条件的SQL语句

  item表的结构为 id(就是poll表中的iid) , descp(用户选择的选项的文字)

  请查询并返回10条记录,包括ip和用户选择的选项的文字

10七、  如今由于投票人数太多,网站时常出现too many connection的错误,请提供解决方案

方法一:加大MySql的最大链接数

   mysql的最大链接数默认是100, 这个数值对于并发链接不少的数据库应用是远远不够的,当链接请求大于默认链接数后,就会出现没法链接数据库的错误,所以咱们须要把它适当调大一些,编辑my.ini

修改 max_connections=1000

方法二,不用mysql数据库,改成直接写文件,详细方法参照问题5

若非要用 mysql,还可

方法三:因为用mysql语句调用数据库时,在每次之执行语句前,会作一个临时的变量用来打开数据库,因此你在使用mysql语句的时候,记得在每次调用完mysql以后就关闭mysql临时变量

10八、 在成功解决链接数的问题后,发现程序运行缓慢,经查发现是mysql并发太多,表被锁定的现象严重,请提供解决方案

对于访问量大的,原本就不推荐使用数据库,能够考虑直接写到文本中,根据预测的访问量,先定义倘若是100个文件文件名依次为1.txt,2.txt…100.txt,每有用户投票的时候,随机往其中的一个文件中写入投票信息。统计的时候,再对全部文本文件中的数据进行分析。必要的时候,再导入数据库

drop table if exists item;

 

/*==============================================================*/

/* Table: item                                                  */

/*==============================================================*/

create table item

(

id                             int                            not null,

descp                          varchar(200)                   not null,

primary key (id)

);

select A.ip,b.descp

from poll A,item B

where A.id=B.id

limit 10

 

10九、 由于用户实在太多,因此又分配给你两台服务器,你会如何来安排这3台服务器?

对于服务器分配,其实有好几种方案(建议采用LINUX主机),先列出一个解决方案。

1.考虑到电信,网通(南北差别)互访问速度慢的问题,可让电信的用户走电信的线,网通的走网通的线。大体能够这样分配,国内南方用户(电信用户)拥有一台服务器A;北方用户(网通用户)拥有一台服务器B。国外的用户也能够考虑给一台服务器C。用户访问的时候,首先访问的是针对国外的服务器,那台机器是电信网通的用户访问速度都差很少的(能够考虑就租用香港或是什么地方的),通过服务器C判断后直接跳到相应的服务器。统计时三台机器的数据合起来。

1十、 如今开始要求同一ip不能重复投票,请指出如何对数据表进行相应的修改

ALTER TABLE `phpinterview`.`poll` ADD unique INDEX `IX_poll_ip`(`ip`);

1十一、   原有数据已经有不少重复ip的数据了,因此咱们把它导出为一个txt,格式和上边的poll一致,用TAB键间隔,请写一段程序,删除ip有重复的记录,并统计每一个投票选项的投票数

<?php

//读取文本并放入数组

$apoll = file("c:\1.txt");

//对每一行数据进行分割,从而获取了一个二维数组

for ($i=0;$i<count($apoll);$i++)

{

    $poll[$i] = split("    ",$apoll[$i]);

}

 

//获取IP、出现的次数数据

$arrIP=array();

for($i=0;$i<count($poll);$i++)

{

    $arrIP[$poll[$i][1]]=isset($arrIP[$poll[$i][1]])?$arrIP[$poll[$i][1]]+1:1;

}

 

//获取选项、投票个数

$arrRes=array();

for($i=0;$i<count($poll);$i++)

{

if($arrIP[$poll[$i][1]]==1)

     {

        $arrRes[$poll[$i][3]]=isset($arrRes[$poll[$i][3]])?$arrRes[$poll[$i][3]]+1:1;

     }

}

var_dump($arrRes);

?>

mysql5.0测试版:

/*========================获得测试数据c: .txt=========*/

SELECT *

into outfile 'c: .txt'

FROM `testok`;

/*========================载入临时表=========*/

create TABLE phpinterview.testok(id int,ip varchar(15),time datetime,iid int);

LOAD DATA INFILE 'c: .txt'

into table testok;

/*=========================删除ip有重复的记录=========*/

delete A from testok A,(select ip from testok B group by ip having count(*) >1) B

where A.ip=B.ip

/*================统计每一个投票选项的投票数==============================*/

select iid,count(*) from testok B group by B.iid

 

1十二、使用php写一段简单查询,查出全部姓名为“张三”的内容并打印出来

表名User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

请根据上面的题目完成代码:

$mysql_db=mysql_connect("local","root","pass");

@mysql_select_db("DB",$mysql_db);

代码

drop table if exists user;

 

/*==============================================================*/

/* Table: user                                                  */

/*==============================================================*/

create table user

(

    `Name`                           varchar(20),

    Tel                            varchar(16),

    Content                        varchar(255),

    `Date`                           date

)

insert into user(name,tel,content,`date`) values('张三','13333663366','大专毕业','2006-10-11');

insert into user(name,tel,content,`date`) values('张三','13612312331','本科毕业','2006-10-15');

insert into user(name,tel,content,`date`) values('张四','021-55665566','中专毕业','2006-10-1');

select * from user where name='张三';

代码

<?php

header("content-type:text/html; charset=gbk");

$mysql_db=mysql_connect("localhost","root","");

@mysql_select_db("phpinterview",$mysql_db);

echo "<table>";

mysql_query("set names gbk");

$result=mysql_query("select Name,Tel,Content,Date from user where Name='张三'") or die("错误:".mysql_error());

while($row=mysql_fetch_array($result,MYSQL_BOTH))

{

echo "<tr><td>".$row["Name"]."</td><td>".$row["Tel"]."</td><td>".

     $row["Content"]."</td><td>".$row["Date"]."</td></tr>";

}

mysql_free_result($result);

echo "</table>"

?>

11三、如何使用下面的类,并解释下面什么意思?

class test{

function Get_test($num){

    $num=md5(md5($num)."En");

return $num;

    }

}

<?php

/**

* 使用md5加密数据...

*

*/

class test{

function Get_test($num){

         $num=md5(md5($num)."En");

return $num;

     }

}

$a=new test();

echo $a->Get_test("123");

?>

11四、用javascipt打印“上海爱吉”

 

<html>

<head><title>JS打印</title></head>

<body>

<script type="text/javascript">

     document.write("上海吉它");

</script>

</body>

</html>

11五、写出 SQL语句的格式 : 插入,更新,删除

代码

select expression

from tablename

where condition

group by columns asc

with rollup

order by column asc

limit offset,rowcount;

insert into tablename(columname) values(exp);

update tablename set columnname=exp where condition order by column limit rowcount;

delete from tablename where condition order by column limit rowcount;

 

 

11六、某内容管理系统中,表message有以下字段

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

建立上表,写出MySQL语句

11七、一样上述内容管理系统:表comment记录用户回复内容,字段以下

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

现经过查询数据库须要获得如下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题点击量回复数量

用一个SQL语句完成上述查询,若是文章没有回复则回复数量显示为0

 

 

11八、上述内容管理系统,表category保存分类信息,字段以下

category_id int(4) not null auto_increment;

categroy_name varchar(40) not null;

用户输入文章时,经过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

drop table if exists Comment;

drop table if exists category;

drop table if exists message;

/*==============================================================*/

/* Table: Comment                                               */

/*==============================================================*/

create table Comment

(

comment_id                     int unsigned                   not null,

id                             int unsigned                   not null,

comment_content                text,

primary key (comment_id)

)

type = InnoDB;

/*==============================================================*/

/* Table: category                                              */

/*==============================================================*/

create table category

(

category_id                    int                            not null AUTO_INCREMENT,

category_name                  varchar(40)                    not null,

primary key (category_id),

key AK_pk_category_id (category_id)

)

type = InnoDB;

/*==============================================================*/

/* Table: message                                               */

/*==============================================================*/

create table message

(

id                             int                            not null,

title                          varchar(120)                   not null,

content                        text                           not null,

category_id                    int unsigned,

hit                            int unsigned,

primary key (id)

)

type = InnoDB;

select A.id,A.title,A.hits,IFNULL(B.num,0)

from message A left join (select id,count(*) as num from comment B group by id) B

on A.id=B.id

order by B.num desc;

<html>

<head><title>JS打印</title></head>

<body>

<form>

<select id="category" name="category">

<?php

mysql_connect("localhost","root","") or die("db conn error:".mysql_error());

mysql_select_db("phpinterview") or die("db error".mysql_error());

$result=mysql_query("select category_id,category_name from category");

while($row=mysql_fetch_array($result))

{

echo "<option value='".$row["cateogry_id"]."'>".$row["category_name"]."</option>";

}

?>

</select>

</form>

</body>

11九、内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路

直接经过php写入文件,或使用模板来替换标签

120、 简单描述用户修改以发布内容的实现流程和基本思路

更新内容,替换静态文件

12一、 写出如下程序的输出结果

<?

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

12二、写出如下程序的输出结果

<?

$str="cd";

$$str="hotdog";

$$str.="ok";

echo $cd;

?>

hotdogok

12三、有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将全部的menu列出来

<html>

<head><title>JS打印</title></head>

<body>

<form>

<?php

function GenerateMenu($id=0,$str="")

{

     $result=mysql_query("select mainmenu,url,submenu from menu where mainmenu=$id");

while($row=mysql_fetch_array($result))

     {

echo $str.$row["url"]."<br />";

GenerateMenu($row["submenu"],$str."--");

     }

     mysql_free_result($result);

}

 

$link=mysql_connect("localhost","root","");

mysql_select_db("phpinterview");

GenerateMenu();

mysql_close($link)

?>

</form>

</body>

</html>

12四、 给你三个数,写程序求出其最大值。

$var1=1;

$var2=7;

$var3=8;

$max=$var1>$var2?$var1:$var2;

$max=$max>$var3?$max:$var3;

echo $max;

12五、写出发贴数最多的十我的名字的SQL,利用下表:

members(id,username,posts,pass,email)

SELECT username,count(*) as num FROM `members` group by username desc order by count(*) desc limit 10

10)如何经过javascript判断一个窗口是i已经被屏蔽。

<script>

var   result   =   window.open("/somepage.aspx");   

if(result==null)   

{   

        alert("浏览器不容许弹出窗口");   

}   

</script>

12六、写出session的运行机制

用户A访问站点Y,若是站点Y执行了session_start();(如下假定session_start()老是存在)那么会产生一个 session_id,这个session id通常会以COOKIE的形式保存到用户A(咱们能够经过在php.ini里设置session.use_only_cookies为1,强制SESSION ID必须以COOKIE传递。)。这时候SESSION ID表现为$_COOKIE[’PHPSESSID’];(PHPSESSID可用session_name()函数来修改)

用户A接着访问,这个session id($_COOKIE[’PHPSESSID’])就会在A每次访问Y的时候传送到站点Y。

在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,而后经过session id,来得到与SESSION数据的关联,并返回SESSION数据。

12七、防止SQL注射漏洞通常用__addslashes___函数。

12八、请说明 PHP 中传值与传引用的区别。何时传值何时传引用?
      传值只是把某一个变量的值传给了另外一个变量,而引用则说明二者指向了同一个地方。
12九、 在PHP中error_reporting这个函数有什么做用?
     设定php脚本的错误报告级别,说实话,我没怎么用过,我如今用的是C#开发,。
130、 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。
/*
检查邮件地址是否为邮件地址,返回逻辑值
*/
function CheckMailAdr($str){
return(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$str));
}
13一、简述如何获得当前执行脚本路径,包括所获得参数。
说明:例若有一个脚本 www.domain.com,传给他的参数有参数1,参数2,参数3…。传递参数的方法有多是GET有多是POST,   

那么如今请写出相似:http://www.domain.com/script.php?参数1=值1&参数2=值2.....   的结果
     关于前执行脚本路径感受有点歧义:如果获得该脚本在服务器上的绝对路径用 $_SERVER[‘APPL_PHYSICAL_PATH’].如果该脚本的URL则能够用获取
     获取全部参数:能够用如下方法:
//获取post的数据
while (list($var, $value) = each($HTTP_POST_VARS)) 
{
    echo "$var = $value n";
}
//获取get方式的数据
while (list($var, $value) = each($HTTP_GET_VARS)) 
{
    echo "$var = $value n";
}

132,有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须本身实现,不能使用php函数)
能够用冒泡排序 

<?php 
function BubbleSort($str) 

for ($i=0;$i<count($str);$i++) 
{     
    for ($j=count($str)-2;$j>=$i;$j--) 
     { 
            if($str[$j+1]<$str[$j]) 
             {    
                $tmp = $str[$j+1];   
                $str[$j+1]=$str[$j]; 
                $str[$j]=$tmp; 
             } 
     } 

return $str; 

$str = array(3,6,1,5,9,0,4,6,11); 
print_r(BubbleSort($str)); 
?>

13二、 负载均衡 

目前主要有三种网络负载平衡转发技术,分别是网络地址转换、直接路由和IP隧道技术,采用不一样的方法将客户端发送的包转发到目的服务器上,并确保目的服务器的返回包能够顺利到达客户端。
  ● 网络地址转换


  网络地址转换模式

在目标网络地址转换(DNAT)模式下,提供服务的IP被定义在平衡服务器上,应用服务器只须要定义各自的内部IP地址,可是必须将负载平衡服务器定义为缺省路由,以保证返回客户端的包通过负载平衡服务器,完成第二次地址转换后再送回客户端。

  原理:
  1. 客户发出服务请求
  2. 负载平衡服务器接收到请求,将数据包中目的IP地址改成选中的应用服务器IP地址,而后从新发出数据包
  3. 应用服务器收到后,将应答包发回给负载平衡服务器
  4. 负载平衡服务器收到应答包后将其中的源地址改回成服务IP,发回客户端
  缺点是网络地址转换的性能扩展能力有限,由于请求包和应答包都必须经过平衡服务器,当服务器的节点数量达到20或更多时,平衡服务器可能成为整个系统的瓶颈。所以,这种方式主要适用于网络负载不是很高的场合。

  ● 直接路由
   和那种请求包和应答包都必须经过平衡服务器的网络地址转换不一样,平衡服务器在直接路由模式下,将请求调度到不一样的实际服务器,实际服务器直接将结果发回 客户端。在大多数应用中,请求的字节数远小于应答的字节数,因此与网络地址转换相比平衡服务器能处理更多的请求。采用直接路由能更大程度提升平衡服务器的 最大节点数和网络吞吐量。甚至于平衡服务器使用100M全双工的网卡,系统的最大数据吞吐量仍能够超过1Gbps。

  直接路由的特色是运用网络分层原理,经过将目标IP包封装在指定MAC地址以太网数据包中欺骗TCP堆栈,所以实际服务器和负载平衡服务器必须在同一个物理网段中,而且在应用服务器上必须将服务IP定义在loopback虚拟网卡上。

  

原理:
  1. 客户发出服务请求
  2. 负载平衡服务器接收到请求,将数据包中网卡物理地址(MAC)改成选中的应用服务器的MAC地址,而后从新发出数据包
  3. 目标应用服务器收到后,将应答包经过路由器直接发回客户端(不通过负载平衡服务器)

 

直接路由是最高效,网络延时最小的负载平衡技术,可是,为达到MAC地址的欺骗,负载平衡服务器和全部应用服务器必须在同一个物理网段。并且,如今出现操做系统缺省是关闭这种特性的,如FreeBSD,必须显示打开相应的内核开关才能够。不过,目前的主流操做系统,均可以知足直接路由的需求,如WindowsLinux、AIX、Solaris、FreeBSD等。


直接路由转换模式


  ● IP隧道

  与直接路由的方法相似,区别仅仅在于不是经过MAC欺骗来转发数据包,而是经过创建负载平衡服务器和应用服务器之间的IP隧道来完成。

  由于这些服务器的链接是经过IP隧道,平衡服务器和实际服务器能够在不一样的局域网甚至是广域网。缺点是全部服务器必须使用IP隧道(IP封装)协议,比直接路由的效率要低,并且,不是全部的操做系统都支持。

 

13三、 索引

索引的原理;索引的意义;什么状况下不易用索引,

13四、 2.int  varchar char text 的最大值和在gbk和ntf_8中所占字符数

13五、 3.xss是什么?怎么预防

13六、 4.include与require的区别

13七、 5.192.168.0.1用二进制和十进制分别如何表示

13八、 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量__$_SERVER['PHP_SELF']__中;而连接到当前页面的URL记录在预约义变量__$_SERVER['HTTP_REFERER']__中

13九、 执行程序段<?php echo 8%(-2) ?>将输出__0__。

140、 在HTTP 1.0中,状态码 401 的含义是____;若是返回“找不到文件”的提示,则可用 header 函数,其语句为____。

14一、 数组函数 arsort 的做用是__对数组进行逆向排序并保持索引关系__;语句 error_reporting(2047)的做用是__报告全部错误和警告__。

14二、 PEAR中的数据库链接字符串格式是____。

14三、 写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把scrīpt标记及其内容都去掉):preg_replace("/<script[^>].*?>.*?</script>/si", "newinfo", $script);

14四、 .以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,而后再用语句____使得Apache把全部扩展名为php的文件都做为PHP脚本处理。

14五、 LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php,

14六、 语句 include 和 require 都能把另一个文件包含到当前文件中,它们的区别是____;为了不屡次包含同一文件,能够用语句__require_once||include_once__来代替它们。

14七、 类的属性能够序列化后保存到 session 中,从而之后能够恢复整个类,这要用到的函数是____。

14八、 一个函数的参数不能是对变量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__设为on.

14九、 11.SQL中LEFT JOIN的含义是__天然左外连接__。若是 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试之后被开除了,没有其记录)的学号(ID)

150、 和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句____。

15一、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。

15二、 写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。

答:

function my_scandir($dir)

{

     $files = array();

if ( $handle = opendir($dir) ) {

while ( ($file = readdir($handle)) !== false ) {

if ( $file != ".." && $file != "." ) {

if ( is_dir($dir . "/" . $file) ) {

                     $files[$file] = scandir($dir . "/" . $file);

}else {

                     $files[] = $file;

                 }

             }

         }

closedir($handle);

return $files;

     }

15四、简述论坛中无限分类的实现原理。

答:

<?php

/*

数据表结构以下:

CREATE TABLE `category` (

 `categoryID` smallint(5) unsigned NOT NULL auto_increment,

 `categoryParentID` smallint(5) unsigned NOT NULL default '0',

 `categoryName` varchar(50) NOT NULL default '',

 PRIMARY KEY (`categoryID`)

) ENGINE=MyISAM DEFAULT CHARSET=gbk;

INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES

(0, '一级类别'),

(1, '二级类别'),

(1, '二级类别'),

(1, '二级类别'),

(2, '三级类别'),

(2, '333332'),

(2, '234234'),

(3, 'aqqqqqd'),

(4, '哈哈'),

(5, '66333666');

*/

//指定分类id变量$category_id,而后返回该分类的全部子类

//$default_category为默认的选中的分类

function Get_Category($category_id = 0,$level = 0, $default_category = 0)

{

global $DB;

 $sql = "SELECT * FROM category ORDER BY categoryID DESC";

 $result = $DB->query( $sql );

while ($rows = $DB->fetch_array($result))

 {

 $category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows

[categoryName]);

 }

if (!isset($category_array[$category_id]))

 {

return "";

 }

foreach($category_array[$category_id] AS $key => $category)

 {

if ($category['id'] == $default_category)

 {

echo "<option selected value=".$category['id']."";

}else

 {

echo "<option value=".$category['id']."";

 }

if ($level > 0)

 {

echo ">" . str_repeat( " ", $level ) . " " . $category['name'] . "</option>\n";

 }

else

 {

echo ">" . $category['name'] . "</option>\n";

 }

 Get_Category($key, $level + 1, $default_category);

 }

unset($category_array[$category_id]);

}

/*

函数返回的数组格式以下所示:

Array

(

 [1] => Array ( [id] => 1 [name] =>一级类别 [level] => 0 [ParentID] => 0 )

 [4] => Array ( [id] => 4 [name] =>二级类别 [level] => 1 [ParentID] => 1 )

 [9] => Array ( [id] => 9 [name] =>哈哈 [level] => 2 [ParentID] => 4 )

 [3] => Array ( [id] => 3 [name] =>二级类别 [level] => 1 [ParentID] => 1 )

 [8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )

 [2] => Array ( [id] => 2 [name] =>二级类别 [level] => 1 [ParentID] => 1 )

 [7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )

 [6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )

 [5] => Array ( [id] => 5 [name] =>三级类别 [level] => 2 [ParentID] => 2 )

 [10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )

)

*/

//指定分类id,而后返回数组

function Category_array($category_id = 0,$level=0)

{

global $DB;

 $sql = "SELECT * FROM category ORDER BY categoryID DESC";

 $result = $DB->query($sql);

while ($rows = $DB->fetch_array($result))

 {

 $category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;

 }

foreach ($category_array AS $key=>$val)

 {

if ($key == $category_id)

 {

foreach ($val AS $k=> $v)

 {

 $options[$k] =

array(

 'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID']

 );

 $children = Category_array($k, $level+1);

if (count($children) > 0)

 {

 $options = $options + $children;

 }

 }

 }

 }

unset($category_array[$category_id]);

return $options;

}

?>

<?php

class cate

{

function Get_Category($category_id = 0,$level = 0, $default_category = 0)

        {

echo $category_id;

             $arr = array(

              '0' =>array(

                             '1' => array('id' => 1, 'parent' => 0, 'name' => '1111'),

                             '2' => array('id' => 2, 'parent' => 0, 'name' => '2222'),

                            '4' =>array('id' => 4, 'parent' => 0, 'name' => '4444')    

                          ),

              '1' =>array(

                              '3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),

                            '5' =>array('id' => 5, 'parent' => 1, 'name' => '555555')     

                            ),

              '3' =>array(

                            '6' => array('id' => 6, 'parent' => 3, 'name' => '66666'),

                            '7' =>array('id' => 7, 'parent' => 3, 'name' => '77777')

                            ),

              '4' =>array(

                            '8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),

                            '9' =>array('id' => 9, 'parent' => 4, 'name' => '9999')

                            )    

             );

if (!isset($arr[$category_id]))

             {

return "";

             }

foreach($arr[$category_id] AS $key => $cate)

             {

if ($cate['id'] == $default_category)

                 {

                     $txt = "<option selected value=".$cate['id']."";

}else{

                     $txt = "<option value=".$cate['id']."";

                 }

if ($level > 0)

                 {

                    $txt1 = ">" . str_repeat( "-", $level ) . " " . $cate['name'] . "</option>\n";

}else{

                     $txt1 = ">" . $cate['name'] . "</option>\n";

                 }

                 $val = $txt.$txt1;

echo $val;

                 self::Get_Category($key, $level + 1, $default_category);

             }

 

        }

function getFlush($category_id = 0,$level = 0, $default_category = 0)

        {

            ob_start();

            self::Get_Category($category_id ,$level, $default_category);

            $out = ob_get_contents();

            ob_end_clean();

return $out;

        }    

}

$id =$_GET['id'];

echo "<select>";

$c = new cate();

//$c->Get_Category();

$ttt=  $c->getFlush($id,'0','3');

echo $ttt;

echo "</select>";

?>

 

15五、 写出以下程序的输出结果
<?php
$str1 = null;
$str2 = false;
echo $str1==$str2 ? ‘相等’ : ‘不相等’;

$str3 = ”;
$str4 = 0;
echo $str3==$str4 ? ‘相等’ : ‘不相等’;

$str5 = 0;
$str6 = ‘0′;
echo $str5===$str6 ? ‘相等’ : ‘不相等’;
?>

15六、 写出以下程序的输出结果
<?php
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = ”;
$a5 = ‘0′;
$a6 = ‘null’;
$a7 = array();
$a8 = array(array());

echo empty($a1) ? ‘true’ : ‘false’;
echo empty($a2) ? ‘true’ : ‘false’;
echo empty($a3) ? ‘true’ : ‘false’;
echo empty($a4) ? ‘true’ : ‘false’;
echo empty($a5) ? ‘true’ : ‘false’;
echo empty($a6) ? ‘true’ : ‘false’;
echo empty($a7) ? ‘true’ : ‘false’;
echo empty($a8) ? ‘true’ : ‘false’;
?>

15七、 写出以下程序的输出结果
<?php
$test = ‘aaaaaa’;
$abc = & $test;
unset($test);

echo $abc;
?>

15八、 写出以下程序的输出结果
<?Php

15九、 $count = 5;
function get_count(){
static $count = 0;
return $count++;
}

echo $count;
++$count;
echo get_count();
echo get_count();
?>

15五、 写出以下程序的输出结果
<?php
$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();

echo $var1;
echo $var2;
?>

15六、 写出以下程序的输出结果
<?php
function get_arr($arr){
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);

get_arr(&$arr1);
get_arr($arr2);

echo count($arr1);
echo count($arr2);
?>

15七、 使用五种以上方式获取一个文件的扩展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,能够封装成函数,好比 get_ext1($file_name), get_ext2($file_name)

15八、 使用PHP描述冒泡排序和快速排序算法,对象能够是一个数组

15九、 使用PHP描述顺序查找和二分查找(也叫作折半查找)算法,顺序查找必须考虑效率,对象能够是一个有序数组

160、 写一个二维数组排序算法函数,可以具备通用性,能够调用php内置函数
【附答案】(如下答案不必定是最好的,只是一个简单的参考)

1. 相等 相等 不相等
2. true true true true true false true false
3. aaaaaa
4. 5 0 1
5. 5 2
6. 1 2
7. 使用五种以上方式获取一个文件的扩展名

function get_ext1($file_name){
return strrchr($file_name, ‘.’);
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, ‘.’));
}
function get_ext3($file_name){
return array_pop(explode(‘.’, $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
}

16一、 使用PHP描述冒泡排序和快速排序算法,对象能够是一个数组

//冒泡排序(数组排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;

for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j–){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}

//快速排序(数组排序)
function quick_sort($array) {
if (count($array) <= 1) return $array;

$key = $array[0];
$left_arr = array();
$right_arr = array();

for ($i=1; $i<count($array); $i++){
if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}

$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);

return array_merge($left_arr, array($key), $right_arr);
}

16二、 使用PHP描述顺序查找和二分查找(也叫作折半查找)算法,顺序查找必须考虑效率,对象能够是一个有序数组

//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}

//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}

16三、 写一个二维数组排序算法函数,可以具备通用性,能够调用php内置函数

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
if (!is_array($arr)) {
return false;
}
$keysvalue = array();
foreach($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else {
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key => $vals) {
$keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}

16四、 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量(1)中;而连接到当前页面的URL记录在预约义变量(2)中。

16五、 执行程序段<?php echo 8%(-2) ?>将输出(3)。

16六、 在HTTP 1.0中,状态码 401 的含义是(4);若是返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。

16七、 数组函数 arsort 的做用是(6);语句 error_reporting(2047)的做用是(7)。

16八、 PEAR中的数据库链接字符串格式是(8)。

16九、 写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把script标记及其内容都去掉):(9)。

170、 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,
而后再用语句(11)使得Apache把全部扩展名为php的文件都做为PHP脚本处理。

17一、 语句 include 和 require 都能把另一个文件包含到当前文件中,它们的区别是(12);为了不屡次包含同一文件,能够用语句(13)来代替它们。

17二、 类的属性能够序列化后保存到 session 中,从而之后能够恢复整个类,这要用到的函数是(14)。

17三、 一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.

17四、 SQL 中LEFT JOIN的含义是(16)。
若是 tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试之后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),
要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句(17)。

17五、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。

17六、 写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。

17七、 简述论坛中无限分类的实现原理。

17八、 设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就能够把窗口关闭,而输入的信息却在主网页中显示。

17九、 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量(1)中;而连接到当前页面的的前一页面URL记录在预约义变量(2)中

<?php
//本页地址,SCRIPT_NAME也能够:php/test.php
echo $_SERVER['PHP_SELF'].”<br />”;
//连接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER'].”<br />”;

//其它的见参考手册:语言参考》变量》预约义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"].”<br />”;
//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"].”<br />”;
//查询(query)的字符串(URL 中第一个问号 ? 以后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"].”<br />”;
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"].”<br />”;
?>

180、 执行程序段<?php echo 8%(-2) ?>将输出__。

18一、 <?php
//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo 8%(-2).”<br />”;
//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo ((-8)%3).”<br />”;
//输出2
echo (8%(-3)).”<br />”;
?>
在HTTP 1.0中,状态码 401 的含义是____;若是返回“找不到文件”的提示,则可用 header 函数,其语句为____。

答:401表示未受权;header(“HTTP/1.0 404 Not Found”);[见参考手册》函数参考》HTTP函数》header]

180、 数组函数 arsort 的做用是____;语句 error_reporting(2047)的做用是____。

答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的做用是:report All errors and warnings

18一、 写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把script标记及其内容都去掉):

<?php
$script=”如下内容不显示:<script language=’javascript’>alert(‘cc’);</script>”;
echo preg_replace(“/<script[^>].*?>.*?</script>/si”, “替换内容”, $script);
?>

18二、 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,
而后再用语句____使得Apache把全部扩展名为php的文件都做为PHP脚本处理。
答:LoadModule php5_module “c:/php/php5apache2.dll”;AddType application/x-httpd-php .php

见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装》Microsoft Windows 下的 Apache 2.0.x

18三、 语句 include 和 require 都能把另一个文件包含到当前文件中,它们的区别是____;为了不屡次包含同一文件,能够用语句____来代替它们。
答:在如何处理失败时,include() 产生一个警告而 require() 则致使一个致命错误;require_once()/include_once()

18四、 一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.
答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G

18五、 SQL 中LEFT JOIN的含义是__,若是 tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试之后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句____.

答:天然左外链接

create database phpinterview;
use phpinterview
create table tbl_user
(
ID                             int                            not null,
name                           varchar(50)                    not null,
primary key (ID)
);
create table tbl_score
(
ID                             int                            not null,
score                          dec(6,2)                       not null,
subject                        varchar(20)                    not null
);

insert into tbl_user (ID, name) values (1, ‘beimu’);
insert into tbl_user (ID, name) values (2, ‘aihui’);
insert into tbl_score (ID, score, subject) values (1, 90, ‘语文’);
insert into tbl_score (ID, score, subject) values (1, 80, ‘数学’);
insert into tbl_score (ID, score, subject) values (2, 86, ‘数学’);
insert into tbl_score (ID, score, subject) values (2, 96, ‘语文’);

select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id

18六、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____
答:结束标识符所在的行不能包含任何其它字符除”;”

18七、 写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。

<?php
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!=”.” && $file!=”..”)
{
if(is_dir($dir.”/”.$file))
{
$files[$file]=my_scandir($dir.”/”.$file);
}
else
{
$files[]=$dir.”/”.$file;
}
}
}
closedir($handle);
return $files;
}
}
}
print_r(my_scandir(“D:Program FilesInternet ExplorerMUI”));
?>

18八、 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量(1)中;而连接到当前页面的的前一页面URL记录在预约义变量(2)中

<?php
//本页地址,SCRIPT_NAME也能够:php/test.php
echo $_SERVER['PHP_SELF']."<br />";
//连接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER']."<br />";

//其它的见参考手册:语言参考》变量》预约义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php 
echo $_SERVER["SCRIPT_FILENAME"]."<br />";
//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"]."<br />";
//查询(query)的字符串(URL 中第一个问号 ? 以后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"]."<br />";
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."<br />";
?>

18九、 执行程序段<?php echo 8%(-2) ?>将输出__。

<?php
//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo 8%(-2)."<br />";
//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo ((-8)%3)."<br />";
//输出2
echo (8%(-3))."<br />";
?>

190、 在HTTP 1.0中,状态码 401 的含义是____;若是返回“找不到文件”的提示,则可用 header 函数,其语句为____。

答:401表示未受权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header]

19一、 数组函数 arsort 的做用是____;语句 error_reporting(2047)的做用是____。

答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的做用是:report All errors and warnings

19二、 写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把script标记及其内容都去掉):

<?php
$script="如下内容不显示:<script language='javascript'>alert('cc');</script>";
echo preg_replace("/<script[^>].*?>.*?</script>/si", "替换内容", $script);
?>

19二、 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,
而后再用语句____使得Apache把全部扩展名为php的文件都做为PHP脚本处理。
答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php

见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装Microsoft Windows 下的 Apache 2.0.x

19三、 语句 include 和 require 都能把另一个文件包含到当前文件中,它们的区别是____;为了不屡次包含同一文件,能够用语句____来代替它们。
答:在如何处理失败时,include() 产生一个警告而 require() 则致使一个致命错误;require_once()/include_once()

19四、 一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.
答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G

19五、 SQL 中LEFT JOIN的含义是__,若是 tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试之后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句____.

答:天然左外链接

create database phpinterview;
use phpinterview
create table tbl_user
(
ID int not null,
name varchar(50) not null,
primary key (ID)
);
create table tbl_score
(
ID int not null,
score dec(6,2) not null,
subject varchar(20) not null
);

insert into tbl_user (ID, name) values (1, 'beimu');
insert into tbl_user (ID, name) values (2, 'aihui');
insert into tbl_score (ID, score, subject) values (1, 90, '语文');
insert into tbl_score (ID, score, subject) values (1, 80, '数学');
insert into tbl_score (ID, score, subject) values (2, 86, '数学');
insert into tbl_score (ID, score, subject) values (2, 96, '语文');

select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id

19六、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____
答:结束标识符所在的行不能包含任何其它字符除";"

19七、 写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。

<?php
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!="." && $file!="..")
{
if(is_dir($dir."/".$file))
{
$files[$file]=my_scandir($dir."/".$file);
}
else
{
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return $files;


}
print_r(my_scandir("D:Program FilesInternet ExplorerMUI"));
?>

 

 

19八、 $arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)
答:echo $array[0];

19九、 请将41题的数组的值用','号分隔并合并成字串输出(1分)
答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}

200、 $a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)
答:echo $a{0} 或 echo substr($a,0,1)

20一、 PHP能够和sql server/oracle等数据库链接吗?(1分)
答:固然能够

20二、 请写出PHP5权限控制修饰符(3分)
答:public(公共),private(私用),protected(继承)

20三、 请写出php5的构造函数和析构函数(2分)
答:__construct , __destruct

20四、 完成如下:
   (一)建立新闻发布系统,表名为message有以下字段 (3分)
  id 文章id
  title 文章标题
  content 文章内容
  category_id 文章分类id
    hits 点击量
答:CREATE TABLE 'message'(
   'id' int(10) NOT NULL auto_increment,
   'title' varchar(200) default NULL,
   'content' text,
   'category_id' int(10) NOT NULL,
   'hits' int(20),
   PRIMARY KEY('id');
   )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    (二)一样上述新闻发布系统:表comment记录用户回复内容,字段以下 (4分)
  comment_id 回复id
  id 文章id,关联message表中的id
  comment_content 回复内容
  现经过查询数据库须要获得如下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
  文章id 文章标题 点击量 回复数量
  用一个SQL语句完成上述查询,若是文章没有回复则回复数量显示为0
答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
   IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN 
   comment ON message.id=comment.id GROUP BY message.`id`;

  (三)上述内容管理系统,表category保存分类信息,字段以下 (3分)
  category_id int(4) not null auto_increment;
  categroy_name varchar(40) not null;
  用户输入文章时,经过选择下拉菜单选定文章分类
  写出如何实现这个下拉菜单
答:function categoryList()
{
    $result=mysql_query("select category_id,categroy_name from category")
            or die("Invalid query: " . mysql_error());
    print("<select name='category' value=''>\n");
    while($rowArray=mysql_fetch_array($result))
    {
       print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>\n");
    }
    print("</select>");
}

20五、 写一个函数,尽量高效的,从一个标准 url 里取出文件的扩展名
   例如: http://www.sina.com.cn/abc/de/fg.php?id=1 须要取出 php 或 .php
答案1:
   function getExt($url){
   $arr = parse_url($url);
   
   $file = basename($arr['path']);
   $ext = explode(".",$file);
   return $ext[1];
}
答案2:
    function getExt($url) {
    $url = basename($url);
    $pos1 = strpos($url,".");
    $pos2 = strpos($url,"?");
    if(strstr($url,"?")){
         return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
    } else {
      return substr($url,$pos1);
    }
}

20六、 在 HTML 语言中,页面头部的 meta 标记能够用来输出文件的编码格式,如下是一个标准的 meta 语句
  请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的相似 meta 标记中的 charset 部分值改成 big5
  请注意:
  1. 须要处理完整的 html 页面,即不光此 meta 语句
  2. 忽略大小写
    3. ' 和 " 在此处是能够互换的
    4. 'Content-Type' 两侧的引号是能够忽略的,但 'text/html; charset=gbk' 两侧的不行
  5. 注意处理多余空格

20七、 写一个函数,算出两个文件的相对路径
  如 $a = '/a/b/c/d/e.php';
  $b = '/a/b/12/34/c.php';
  计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
答:function getRelativePath($a, $b) {   
    $returnPath = array(dirname($b));   
    $arrA = explode('/', $a);   
    $arrB = explode('/', $returnPath[0]);   
    for ($n = 1, $len = count($arrB); $n < $len; $n++) {   
        if ($arrA[$n] != $arrB[$n]) {   
            break;   
        }    
    }   
    if ($len - $n > 0) {   
        $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));   
    }   
       
    $returnPath = array_merge($returnPath, array_slice($arrA, $n));   
    return implode('/', $returnPath);   
   }   
   echo getRelativePath($a, $b);

20八、 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量__$_SERVER['PHP_SELF']__中;而连接到当前页面的URL记录在预约义变量__$_SERVER['HTTP_REFERER']__

20九、 执行程序段<?php echo 8%(-2) ?>将输出__0__。

2十、 在HTTP 1.0中,状态码 401 的含义是____;若是返回“找不到文件”的提示,则可用 header 函数,其语句为____。

2十一、 数组函数 arsort 的做用是__对数组进行逆向排序并保持索引关系__;语句 error_reporting(2047)的做用是__报告全部错误和警告__。

2十二、 PEAR中的数据库链接字符串格式是____。

21三、 写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把scrīpt标记及其内容都去掉):preg_replace("/<script[^>].*?>.*?</script>/si", "newinfo", $script);

21四、 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,而后再用语句____使得Apache把全部扩展名为php的文件都做为PHP脚本处理。
LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php,

21五、 语句 include 和 require 都能把另一个文件包含到当前文件中,它们的区别是____;为了不屡次包含同一文件,能够用语句__require_once||include_once__来代替它们。

21六、 类的属性能够序列化后保存到 session 中,从而之后能够恢复整个类,这要用到的函数是____。

21七、 一个函数的参数不能是对变量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__设为on.

21八、 SQL中LEFT JOIN的含义是__天然左外连接__。若是 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试之后被开除了,没有其记录)的学号(ID)

和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句____。

21九、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。

220、 写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。
答:
function my_scandir($dir)
{
     $files = array();
     if ( $handle = opendir($dir) ) {
         while ( ($file = readdir($handle)) !== false ) {
             if ( $file != ".." && $file != "." ) {
                 if ( is_dir($dir . "/" . $file) ) {
                     $files[$file] = scandir($dir . "/" . $file);
                 }else {
                     $files[] = $file;
                 }
             }
         }
         closedir($handle);
         return $files;
     }
}

22一、 简述论坛中无限分类的实现原理。
答:
<?php
/*
数据表结构以下:
CREATE TABLE `category` (
`categoryID` smallint(5) unsigned NOT NULL auto_increment,
`categoryParentID` smallint(5) unsigned NOT NULL default '0',
`categoryName` varchar(50) NOT NULL default '',
PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES 
(0, '一级类别'),
(1, '二级类别'),
(1, '二级类别'),
(1, '二级类别'),
(2, '三级类别'),
(2, '333332'),
(2, '234234'),
(3, 'aqqqqqd'),
(4, '哈哈'),
(5, '66333666');

*/

//指定分类id变量$category_id,而后返回该分类的全部子类
//$default_category为默认的选中的分类
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result)) 
{
$category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows

[categoryName]);
}
if (!isset($category_array[$category_id]))
{
return "";
}
foreach($category_array[$category_id] AS $key => $category)

if ($category['id'] == $default_category)
{
echo "<option selected value=".$category['id']."";
}else
{
echo "<option value=".$category['id']."";
}

if ($level > 0)
{
echo ">" . str_repeat( " ", $level ) . " " . $category['name'] . "</option>\n";
}
else
{
echo ">" . $category['name'] . "</option>\n";
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}

/*
函数返回的数组格式以下所示:
Array 
(
[1] => Array ( [id] => 1 [name] => 一级类别 [level] => 0 [ParentID] => 0 )
[4] => Array ( [id] => 4 [name] => 二级类别 [level] => 1 [ParentID] => 1 )
[9] => Array ( [id] => 9 [name] => 哈哈 [level] => 2 [ParentID] => 4 )
[3] => Array ( [id] => 3 [name] => 二级类别 [level] => 1 [ParentID] => 1 ) 
[8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
[2] => Array ( [id] => 2 [name] => 二级类别 [level] => 1 [ParentID] => 1 )
[7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 ) 
[5] => Array ( [id] => 5 [name] => 三级类别 [level] => 2 [ParentID] => 2 ) 
[10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 ) 
)
*/
//指定分类id,而后返回数组
function Category_array($category_id = 0,$level=0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query($sql);
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
}

foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach ($val AS $k=> $v)
{
$options[$k] =
array(
'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID']
);

$children = Category_array($k, $level+1);

if (count($children) > 0)
{
$options = $options + $children;
}
}
}
}
unset($category_array[$category_id]);
return $options;
}

?>

<?php

class cate
{

        function Get_Category($category_id = 0,$level = 0, $default_category = 0)
        {
             echo $category_id;
             $arr = array(
              '0' => array(
                             '1' => array('id' => 1, 'parent' => 0, 'name' => '1111'),
                             '2' => array('id' => 2, 'parent' => 0, 'name' => '2222'),
                            '4' => array('id' => 4, 'parent' => 0, 'name' => '4444')    
                          ),
              '1' => array(
                              '3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),
                            '5' => array('id' => 5, 'parent' => 1, 'name' => '555555')     
                            ),
                          
              '3' => array(
                            '6' => array('id' => 6, 'parent' => 3, 'name' => '66666'),
                            '7' => array('id' => 7, 'parent' => 3, 'name' => '77777')
                            ),
              '4' => array(
                            '8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),
                            '9' => array('id' => 9, 'parent' => 4, 'name' => '9999')
                            )    
             );

             if (!isset($arr[$category_id]))
             {
                return "";
             }
    
             foreach($arr[$category_id] AS $key => $cate)
             {
                 if ($cate['id'] == $default_category)
                 {
                     $txt = "<option selected value=".$cate['id']."";
                 }else{
                     $txt = "<option value=".$cate['id']."";
                 }
            
                 if ($level > 0)
                 {
                    $txt1 = ">" . str_repeat( "-", $level ) . " " . $cate['name'] . "</option>\n";
                 }else{
                     $txt1 = ">" . $cate['name'] . "</option>\n";
                 }
                 $val = $txt.$txt1;
                 echo $val;
                 self::Get_Category($key, $level + 1, $default_category);
             }
            
        }
        
        
        function getFlush($category_id = 0,$level = 0, $default_category = 0)
        {
            
            ob_start();

            self::Get_Category($category_id ,$level, $default_category);

            $out = ob_get_contents();

            ob_end_clean();
            return $out;
        }    
}
$id =$_GET['id'];
echo "<select>";
$c = new cate();
//$c->Get_Category();
$ttt= $c->getFlush($id,'0','3');
echo $ttt;
echo "</select>";
?>

 

22二、 要求在一组数中,插入一个新数,并维护原来的排序方式不变

 

22三、 用二分法在一个数组中查找你所需元素

 

22四、 打印一个杨辉三角

1

1   1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10  5  1

22五、 使用PHP描述冒泡排序和快速排序算法,对象能够是一个数组

 

22六、 写一个二维数组排序函数,可以具备通用性

 

22七、 写一个function实现数组内每一个元素之间加法的递代运算?

注:数组元素所有为天然数.

 

例:

$data=array(1,2,3);

程序要求打印出数组每一个数组元素相互之间各类可能性加法(包括元素自已自己加法)

 

1+1=2,1+2=3,1+3=5,

2+2=4,2+3=5,

3+3=6

 

打印出如下结果

Array   

 (   

     [0] => Array   

         (   

             [0] => 2   

             [1] => 3   

             [2] => 4   

         )   

     [1] => Array   

         (   

             [1] => 4   

             [2] => 5   

         )   

     [2] => Array   

         (   

             [2] => 6   

         )   

 )

 

22八、 设有n 种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n 种物品中选取若干件(同一种物品能够屡次选取),使其重量的和小于等于M,而价值的和为最大。

 

22九、 设随机抽到A的几率为0.1,B的几率为0.2,C的几率为0.3,D的几率为0.4,如今求按此几率随机抽出一个字母的算法,

 

230、 一个小孩买了价值少于1美圆的糖,并将1美圆的钱交给售货员。售货员但愿用数目最少的硬币个数找给小孩。假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的硬币,写一个算法让售货员用最少的硬币个数找给小孩

 

23一、 五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分红五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分红五堆后,仍是多了一个,它也吃掉这个桃子,并拿走了其中一堆。第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢?

 

23二、 公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡。请求出公鸡,母鸡和小鸡的数目。

 

23三、 小猴第一天摘下若干枣子,立即吃掉了一半,不过瘾又多吃了一个;次日吃了剩下的一半又多吃了一个;之后每一天都吃了前一天剩下的一半多一个。到第十天小猴再想吃时,见到只剩下一只枣子了。问第一天这堆枣子有多少?

 

23四、 有一艘大船准备用来装载货物。全部待装货物都装在货箱中且全部货箱的大小都同样,但货箱的重量都各不相同。设第i 个货箱的重量为wi(1≤i≤n),而货船的最大载重量为c,如何在货船上装入最多的货物。

 

23五、 小球从10米高处自由下落,每次弹起的高度是下落高度的70%,当小球弹起的高度不足原高度的千分之一时,小球很快会中止跳动,计算小球在整个弹跳过程当中所经历的总路程(忽略弹起高度不足原高度千分之一的部分)。

 

23六、 JS下有一个字符串var str = '1|2|3|4|5|6#1|2|3|4#1|2|3|4|5|6|7|8'; 请用“#”号将其分割为数组,再用“|”将其分割为2维数组。能够用例如ary[0][0]这样的各式取出数组中的每一个元素。最后输出其中最长数组的编号(1,2,3这样的天然数),这个数组中元素的个数。以及大数组中每一个元素。如图:

 

22八、 假设数据库中有两个表table1和table2,这两个表结构相同,都有三个字段id、name和description,分别存放编号、名称和描述。

如今请作一个页面,包含两个下拉菜单,第一个下拉菜单内是table1中的name,第二个下拉菜单内是table2中的name。下拉菜单的默认值是无,当选择了table1中的任意一个name时,出现一个textarea框显示name对应的description。当选择了table2中的任意一个name时,出现一个textarea框显示name对应的description,而且保留上一个下拉菜单的值和textarea中的值。Textarea中的值可修改,须要作到修改第一个textarea的值,而后更改第二个下拉菜单的值后,第一个textarea中的修改值仍然保留。最后是一个提交按钮,只有按下提交按钮,才会把textarea中的数据才会存入数据库。如图:

默认界面:

 

选择第一个下拉菜单的值:

 

修改第一个菜单的中描述的值,而后选择第二个菜单的name值

 

提交后才会存入数据库:

 

23八、 有一个数组array('a','b','c','d','e','f'),请使用两段代码分别达成图1和图2中的效果。

图1:

 

图2:

 

 

 

23九、 请使用一句话将相似“1910-09-09”的日期各式转换为“一九一零年九月九日”这样的各式。(须要有通用性,是否是一句话不是关键,但不容许使用if\switch\while\for等语句)。

 

240、 有一张表test,包含四个字段id, question, answer,rank里面有1000条数据。要求作一个页面,随机抽取50道题目(都是单选题),分页显示全部的题目,每页显示1题。按钮包含:第一题—上一页—当前第N题—下一页—最后一题。交卷后将每一题的答案和数据库中的标准答案做比较,相同+2分,最后得出成绩存入rank。

 

 

24一、 简述如何获得当前执行脚本路径,包括所获得参数。

说明:例若有一个脚本www.domain.com,传给他的参数有参数1,参数2,参数3….

传递参数的方法有多是GET有多是POST,那么如今请写出相似

http://www.domain.com/script.php? 参数1=值1&参数2=值2..... 的结果

 

23八、 写出一个能建立多级目录的PHP函数

23九、 有一个留言板,用mysql作数据库

用户信息包括:用户名,密码,email    

留言内容包括:留言ID,标题,内容,发表时间,状态(审核,未审核)

请实现下列需求:

1)数据库结构。无需写建表语句,用相似下面的表格,描述清楚便可

代表

table_aaa

字段名

字段说明

字段类型

索引

name

姓名

Varchar(64)

惟一索引

gender

性别

Enum(‘M’,‘F’)

 

注意,要在索引栏中注明是否须要建立索引,以及要建立的索引的类型

用一个sql语句查询出发表留言数量大于10条的用户名及其留言数量,查询结果按留言数量降序排列

 

240、 写出php的public、protected、private三种访问控制模式的区别

24一、 给你三个数,写程序求出其最大值。

24二、 2五、写出查询发贴数最多的十我的名字的SQL,利用下表:

members(id,username,posts,pass,email)

24三、 如何经过javascript判断一个窗口是否已经被屏蔽。

24四、 有一数组 $a=array(4,3,8,9,2);请将其从新排序(按从小到大的顺序列出)。

24五、 写出匹配邮箱地址和URL的两个正则表达式。相似下面的:

邮箱地址:user_name.first@hztraining.com

URL地址:http://www.hztraining.com/user_profile.php?uid=100

24六、 对于大流量的网站,您采用什么样的方法来解决访问量问题?

24七、 MySQL数据库,一天一万条以上的增量,怎么优化? 

 

24八、 写个函数来解决多线程同时读写一个文件的问题。

 

24九、 一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须本身实现,不能使用php函数)

 

250、 写一个函数,算出两个文件的相对路径

  如 $a = '/a/b/c/d/e.php';

  $b = '/a/b/12/34/c.php';

计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上

25一、 用写一个类实现会员管理,要求实现:

1)用文件存储会员信息,会员注册输入用户名和电子邮件就行。   

2)用户信息包括:用户名,电子邮件。

3)要求用户能够登陆、退出和注销用户。

4)若是用户没有退出,下次登陆自动显示用户名。

5)保存用户上次浏览时间。

相关文章
相关标签/搜索