TP钱包官网最新版特性与下载 PHP面试试题


发布日期:2025-05-14 04:50    点击次数:55


1,用PHP打印出前一天的时间,格式是2006-5-10 22:21:21echo date("Y:m:d H:i:s",strtotime("-1 day"));?>2,echo(),print(),print_r()的区别echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象3,能够使HTML和PHP分离开使用的模板smarty, PHPLib, FastTemplate, Savant,MiniTemplator,TagTemplate4,如何实现PHP、JSP交互$foo = new Java(’java.lang.System’);5,使用哪些工具进行版本控制CVS或SVNCVS Server on Apache作服务端,WinCVS作客户端Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端6,如何实现字符串翻转$str=strrev("Wilson Peng");echo $str;?>7,优化MYSQL数据库的方法(1)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM(2)使用连接(JOIN)来代替子查询:(3)使用联合(UNION)来代替手动创建的临时表(4)事务处理:保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败mysql_query(”BEGIN”);mysql_query(”INSERT INTO customerinfo (name) VALUES (’$name1′)”;mysql_query(”SELECT FROM `orderinfo` where customerid=”.$id”);mysql_query(”COMMIT”);(5)锁定表,优化事务处理:我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作mysql_query(”LOCK TABLE customerinfo READ, orderinfo WRITE”);mysql_query(”SELECT customerid FROM `customerinfo` where id=”.$id);mysql_query(”UPDATE `orderinfo` SET ordertitle=’$title’ where customerid=”.$id);mysql_query(”UNLOCK TABLES”);(6)使用外键,优化锁定表(7)建立索引:(8)优化查询语句最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作SELECT FROM order WHERE YEAR(orderDate)<2008;(慢)SELECT FROM order WHERE orderDate<"2008-01-01";(快)SELECT FROM order WHERE addtime/7<24;(慢)SELECT FROM order WHERE addtime<247;(快)SELECT FROM order WHERE title like "%good%";SELECT FROM order WHERE title>=”good” and name<"good";8,实现中文字串截取无乱码的方法$str = '我是一串比较长的中';echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');?>mb_substr:我是一串比较mb_strcut:我是mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象9,用PHP写出显示客户端IP与服务器IP的代码echo $_SERVER[‘REMOTE_ADDR’];getenv('REMOTE_ADDR');//客户端IP$ip=gethostbyname ("www.murray.cn");//服务器IPecho $ip;?>10,在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量中;而链接到当前页面的URL记录在预定义变量中echo $_SERVER['PHP_SELF'];echo $_SERVER["HTTP_REFERER"];11,$null = NULL;$bool = FALSE;$notSet;$array = array();//以下是问题$a = "hello";$b = &$a;unset($b);//答案为:helloecho $a;$b = "world";//答案为:helloecho $a;//以下是问题$a = 1;$x = &$a;$b = $a++;//答案为:1echo $b;//以下是问题$x = empty($array);//答案为:1echo $x;//答案为:trueecho $x?"true":"false";?>12,表单中 get与post提交方法的区别get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息13,session与cookie的区别session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。两者都可通过时间来设置时间长短14,数据库中的事务是什么事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消15,MYSQL取得当前时间的函数是 now()格式化日期的函数是 date()16,语句include和require的区别是什么require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行requireinclude->include有返回值,而require没有(可能因为如此require的速度比include快)17,如何修改SESSION的生存时间将php.ini中的session.gc_maxlifetime设置为9999重启apache或:$savePath = “./session_save_dir/”;$lifeTime = 小时 秒;session_save_path($savePath);session_set_cookie_params($lifeTime);session_start();18,有一个网页地址,比如,如何得到它的内容$readcontents = fopen(””, “rb”);$contents = stream_get_contents($readcontents);fclose($readcontents);echo $contents;或echo file_get_contents(””);19,在HTTP 1.0中,状态码401的含义是 未被授权如果返回“找不到文件”的提示,则可用 header 函数,其语句为 header(”Location:www.murray.cn”);20,在PHP中,heredoc是一种特殊的字符串,它的结束标志必须heredoc的语法是用”<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串例子:$str = << my name is Jiang Qihui!murray;21,tp钱包官网下载请说明php中传值与传引用的区别。什么时候传值什么时候传引用?按值传递:函数范围内对值的任何改变在函数外部都会被忽略按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改优缺点:按值传递时, tpwallet最新版官网php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。22,在PHP中error_reporting这个函数有什么作用设置错误级别与错误信息回报23,请写一个函数验证电子邮件的格式是否正确$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);24,如何得到当前执行脚本路径,包括所得到参数$script_name = basename(__file__);print_r($script_name);25,JS表单弹出对话框函数是alert(),prompt(),confirm();获得输入焦点函数是focus();26,如何声明一个名为”myclass”的没有方法和属性的类class myclass{ }如何实例化一个名为”myclass”的对象new myclass()如何访问和设置一个类的属性$object = new myclass();$newstr = $object->test;$object->test = “info”;27,可以打开一个文件,以对文件进行读和写操作: fopen()28,$num = 10;function multiply(){$num = $num 10;}multiply();echo $num;//输出:1029,写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名function getExt($url){$arr = parse_url($url);$file = basename($arr['path']);$ext = explode(”.”,$file);return $ext[1];}30,PHP5权限控制修饰符public(公共),private(私用),protected(继承)

===================================================1 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?答: 传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。2 在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.3 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。答:<?phpif(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}?>

4 简述如何得到当前执行脚本路径,包括所得到参数。<?phpecho“http://”.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].”?”.$_SERVER['QUERY_STRING'];//echo “http://”.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];?>

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

<?phpfunction 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);?>

6 请举例说明在你的开发过程中用什么方法来加快页面的加载速度答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

=============================================

1. 写出如下程序的输出结果<?$str1 = null;$str2 = false;echo $str1==$str2 ? ‘相等’ : ‘不相等’;//相等$str3 = ”;$str4 = 0;echo $str3==$str4 ? ‘相等’ : ‘不相等’;//相等$str5 = 0;$str6 = ’0′;echo $str5===$str6 ? ‘相等’ : ‘不相等’;//不相等?>

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

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

3. 写出如下程序的输出结果<?$test = ‘aaaaaa’;$abc = & $test;unset($test);echo $abc;//’aaaaaa’?>

4. 写出如下程序的输出结果<?$count = 5;function get_count(){static $count = 0;return $count++;}

echo $count; //5++$count;echo get_count();//0echo get_count();//1?>

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

echo $var1; //0echo $var2; //2?>

6. 写出如下程序的输出结果<?function get_arr($arr){unset($arr[0]);}$arr1 = array(1, 2);$arr2 = array(1, 2);

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

echo count($arr1);//1echo count($arr2);//2?>

=================================================

1. 用PHP打印出前一天的时间,打印格式是2007年5月10日 22:21:212. PHP代码如下:$a=”hello”;$b=&$a;unset($b);$b=”world”;echo $a;其结果是?3. PHP代码如下:$str=”cd”;$$str=”landog”;$$str.=”ok”;echo $cd;其结果是?4. 用PHP写一段代码,实现不使用第3个变量,交换$a、$b的值,$a、$b的初始值自己定。5. 根据题目要求,用PHP写出代码。表名UserID Name Tel Content Date1 张三 13333663366 大专毕业 2006-10-113 张三 13612312331 本科毕业 2006-10-155 张四 020-5566556 中专毕业 2006-10-154 王五 13521212125 大专毕业 2006-12-252 …………6 …………假设数据库连接如下:$mysql_db=mysql_connect(“local”,”root”,”pass”);@mysql_select_db(“DB”,$mysql_db);(1)查询出所有Name等于“张三”的记录,并输出。(2)按ID升序查询,只返回排序后的前3条记录,并输出。6. javascript能否定义二维数组,如果不能你如何解决?7. 假设a.html和b.html在同一个文件夹下面,用javascript实现当打开a.html五秒钟后,自动跳转到b.html。8. 有两个文件a.html和a.php,代码如下:a.html

<html><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><title>PHP程序员面试</title></head><body><center><form method=”post” action=”a.php”><table border=”1″><tr><td align=”right”>姓名:</td><td align=”left”><input type=”text” ></td></tr><tr><td align=”right”>电话:</td><td align=”left”><input type=”text” ></td></tr><tr><td align=”right”>邮箱:</td><td align=”left”><input type=”text” ></td></tr><tr><td align=”right”>地址:</td><td align=”left”><input type=”text” ></td></tr><tr><td align=”center” colspan=”2″><input type=”submit” value=”提交”><input type=”reset” value=”重填”></td></tr></table></form></center></body></html>

a. php

<?php$user_name = $_GET['user_name'];$user_tel = $_GET['user_tel'];$user_email = $_GET['user_email'];$user_add = $_GET['user_add'];echo “用户名:$user_name<br>电话:$user_tel<br>邮箱:$user_email<br>地址:$user_add<br>”;?>

(1)请画出a.html在浏览器的显示效果图。(2)在a.html中输入:用户名=张三,电话=020-38259977,邮箱=sunrising@srtek.cn,地址=广州升瑞,按提交按钮后输出结果是?9. 你是否使用过版本控制工具,如果有,请简要说明。10. 利用CSS样式表定义已访问的超链接字体大小为14pt,颜色为red。11. 移动任意一位数或符号,使等式成立, 102 = 101-1。注:是移动不是交换,等号不能分开。12. 规律题,3、1、4、1、5、9、2、( ), 请按照规律在括号内写出下一表达式。13. 规律题,5、8、-3、5、-2、3、-1、( ),请按照规律在括号内写出下一表达式。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++答案:

1. echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’));

2. hello

3. landogok

4. $a = “abcd”;$b = “1234″;echo “初始化时 a=$a,b=$b<br>”;$a = $a . $b;$b = strlen( $b );$b = substr( $a, 0, (strlen($a) – $b ) );$a = substr( $a, strlen($b) );echo “交换后 a=$a,b=$b<br>”;

5. (1)$sql = “select from User where > $result = mysql_query( $sql );while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){echo $row[‘Name’];}(2) $sql = “select from User order by ID asc limit 0,3”;$result = mysql_query( $sql );while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){echo $row[‘Name’];}6. javascript不支持二维数组定义,可以用arr[0] = new array()来解决

7. javascript代码如下:<script>function go2b(){window.location = “b.html”;window.close();}setTimeout( “go2b()”,5000 ); //5秒钟后自动执行go2b()</script>

8.

(1)如下所示:

略。因为懒得插入图片,如果想看结果可以把代码保存为html文件,再用浏览器打开查看。

(2)输出结果应为:

姓名:

电话:

邮箱:

地址:

因为表单是用post方式提交,但在a.php中却用get方式来读取,所以不会读到任何值。

9. 略

10. a:visited { font-size: 14pt; color: red; }

11. 102 = 101-1

12. 答案为6,因为∏=3.1415926

13. 答案为2,规律为n=(n-2) – |(n-1)| ,n>=3

================================================================

1、使用单引号括起来的字符串

当使用双引号来括字符串时,PHP解释器会对其进行变量替换、转义等操作,如 “\n”。如果只想输出一个基本的字符串,用单引号会节省一些资源。当然,如果需要进行变量替换的,那就必须用双引号了。

2、字符串的输出

以下哪一条语句的运行速度最快?

print “Hi my name is $a. I am $b”$$echo “Hi my name is $a. I am $b”$$echo “Hi my name is “.$a.”. I am “.$b;echo “Hi my name is “,$a,”. I am “,$b;echo ‘Hi my name is ‘,$a,’. I am ‘,$b;

最后一条的运行速度是最快的。 print比echo要慢,在字符串中进行变量替换时会慢,而连接字符串要比用逗号连接来得慢,最后一句则是第一个习惯的体现。所以,不在字符串中进行变 量替换不仅会加快程序运行速度,也会让你的代码在任何语法高亮显示的编辑器中显得更为易懂(变量会被高亮显示出来)。很少人知道echo的参数可以用逗号 连接,且速度会比字符串连接要来得快。最后再用上第一个习惯,那这条语句就非常好了。

3、在数组索引中使用单引号

正 如你在上面的测试题中所看到的,$x[sales]从严格意义上来说是错误的,索引应该被括起来,即$x['sales']。这是因为PHP会将 没有括起来的索引辨认为“裸”字符串,并把它解释为一个常量。当找不到该常量的定义时,才将其解释为一个字符串,所以这条语句才是可运行的。把索引括起来 可以省去这部分工作,如果将来正好要用这一字符串定义常量时也就不会有错误了。

4、不使用开始标志的缩写形式

你正在使用 这样的符号吗?“<?”是非常糟糕的符号,它会引起与XML解释器的冲突。而且一旦你发布了这些代码,那么使用者就必须修改php.ini文件来打 开对此符号的支持。所以实在没有理由去使用这种形式。用“<?php“吧。

5、尽量不要使用正则表达式

在进行 常规的字符串操作时,尽可能不要去使用正则表达式(preg和ereg系列函数)。str_replace函数要比preg_replace快得多,甚至 strtr函数也要比str_replace来得快。省去这些不必要的麻烦吧,你的老板会感谢你的。

6、不要在循环声明中使用函数

这个问题不单单出现在PHP中,你可以在其他语言的代码中经常看到:

差:for($i=0;$i< count($array);$i++){…}

好:$count=count($array);for($i=0;$i& lt;$count;$i++){…}

如果在循环声明中使用了 count函数,那每次循环都会调用一次。如果循环次数很多,会浪费非常多的时间。

7、不要使用 register_globals和magic quotes

老版本的PHP在安装时会默认打开这两个功能,这会引起安全漏洞、编程错误及其他的问题,如只有用户输入了数据时才会创建变量等。如今这两个功 能都被舍弃了,每个程序员都应该避免使用。

8、一定要对变量进行初始化(这 里的“初始化”指的是“声明”)

当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一 个好主意。这会造成程序的粗糙,或者使代码变得另人迷惑,因为你需要探寻这个变量是从哪里开始被创建的。另外,对一个没有初始化的变量进行递增操作要比初 始化过的来得慢。所以对变量进行初始化会是个不错的主意。

9、对代码进行注释

这个问题已经提过很多次了,但再多次也 不够。我知道有些地方是不聘用不对代码进行注释的程序员的。我在前一次工作面试后和副总、面试官一起浏览我写的代码,当他们对我所做的代码注释印象深刻, 还了解了一下我的这一习惯。一天之后,我得到了这个工作。

我知道有些自称为PHP大师的人声称自己的代码写得很好,不需要添加什么注 释。在我看来,这些人都是垃圾。学一写注释的规范和技巧,熟悉一下phpDocumentor或Doxygen之类的注释辅助软件,都是值得的。

10、 遵循一个编程规范

关于这一点,是你需要在面试中询问你潜在的老板的,问问他们正在使用什么编程规范。PEAR?Zend?内部规范? 要提及你正在使用的编程规范,不管是你自己创建的,还是目前普遍流行的一种。对于PHP这种松松垮垮的语言来说,如果没有一个好的编程规范,那么那些代码 就会看起来想一堆垃圾。发臭的,令人作呕的垃圾。一些基本的规范包括空格规范、打括号匹配、命名风格等。这对任何一个追求高质量的代码的人来说都是必须 的。

有人说:“我讨厌你的4个空格的缩进。”我要说,什么?用4个空格来缩进?这比用制表符过占用3个字符的空间。更重要的是,只要 是使用比记事本高级的编辑器,你可以自定义制表符的缩进值。所以每个程序员都可以以其最习惯的方式来看代码。可以时设置为4,也可以设置为0(如果你是个 受虐狂)。反正我不在乎,但你就是不能用空格来缩进!

=========================================================

填空题:1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量__$_SERVER['PHP_SELF']__中;而链接到当前页面的URL记录在预定义变量__$_SERVER['HTTP_REFERER']__

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

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

4.数组函数 arsort 的作用是__对数组进行逆向排序并保持索引关系__;语句 error_reporting(2047)的作用是__报告所有错误和警告__。

5.PEAR中的数据库连接字符串格式是____。

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

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

8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句__require_once