PHP面试题

一、基础及程序题(建议使用你擅长的语言:C/C++、PHP、Java)

1.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)

//冒泡排序(数组排序)
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 quicksort($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 = quicksort($left_arr);
$right_arr = quicksort($right_arr);

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

2.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。假设每个中文也是一个字符,普通的数字、符号、字母也是一个字符。(提示:GB编码的中文字符高位范围是 0x81-0xFE )

/**
* 截取字符串子串 (1)(GBK)
*
* @param string $str 原始字符串
* @param int $len 需要截取字符串的长度
* @return string 返回截取到的字符串
*/
function GBSubstr($str, $len){
$count = 0;
for($i=0; $i<strlen($str); $i++){
if($count == $len) break;
if(preg_match("/[/x80-/xff]/", substr($str, $i, 1))) ++$i;
++$count;       
}
return substr($str, 0, $i);
}


/**
* 截取字符串子串函数(2)(GB)
*
* @param string $src 源字符串
* @param int $start 开始截取的位置
* @param int $length 需要截取字符串的长度
* @return string 返回截取的字符串
*/

function GBSubstr2($src, $start=0, $length=0){
$suffix="";
$len = strlen($src);
if ( $len <= $length ) return $src;

$cut_length = 0;
for( $idx = 0; $idx<$length; $idx++){
$char_value = ord($src[$idx]);
if ( $char_value < 0x80 || ( $char_value & 0x40 ) )
$cut_length++;
else
$cut_length = $cut_length + 3;
}
$curstr = substr($src, 0, $cut_length) ;
preg_match('/^([/x00-/x7f]|.{3})*/', $curstr, $result);
return   $result[0];
}


/**
* 中文字符串截取(3)(支持GB2312/GBK/UTF-8/BIG5)
*
* @param string $str 要截取的字串
* @param int $start 截取起始位置
* @param int $length 截取长度
* @param string $charset 字符串的字符集,包括有 utf-8|gb2312|gbk|big5 编码
* @param bool $suffix 是否加尾缀
* @return string 返回接续字符串的结果
*/
function CSubstr($str, $start=0, $length, $charset="gbk", $suffix=false){
if(function_exists("mb_substr")){
return mb_substr($str, $start, $length, $charset);
}
$re['utf-8'] = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff][/x80-/xbf]{3}/";
$re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/";
$re['gbk'] = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/";
$re['big5'] = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/";

preg_match_all($re[$charset], $str, $match);
$slice = join("", array_slice($match[0], $start, $length));

if($suffix) {
return $slice ."…";
}
return $slice;
}

3.写一个遍历指定目录下所有子目录和子文件的函数(提示:可以使用递归的方法)

/**
* 递归的遍历一个指定目录
*/
function dir_all ( $path ) {
$handler = opendir($path);
while (false!==($tmp = readdir($handler))) {  
if(is_dir( "$path/$tmp" )) {
if ($tmp=="." | $tmp=="..") continue;
echo $tmp."<br>/n";
dir_all ("$path/$tmp");
} else {
echo $tmp ."<br>/n";
}
}
}

4.写出匹配邮箱地址和URL的两个正则表达式。类似下面的:
邮箱地址:user_name.first@example.com.cn
URL地址:http://www.example.com.cn/user_profile.php?uid=100
(提示:使用标准的正则表达式,就是PHP中preg_* 类的正则处理函数能够解析的正则)

邮箱://w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/
URL:/^http:[/w]+/.[/w]+[/S]*/

二、数据库技术题

1.写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)

MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十几个引擎

2.说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)

MySQL、SQLite、BDB(Berkeley DB)、PostgreSQL、Firebird

3.MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?

Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些

4.说出MySQL 4.0和MySQL 4.1版本的最主要的两个区别。如果你使用过MySQL 5,请说说MySQL 5跟MySQL 4的主要区别。(后半题选作)

MySQL 4.1 主要是比MySQL 4.0多了子查询和字符编码的支持两个特点。
MySQL5增加的功能比MySQL4要更多,包括存储过程、视图、事务等等

5.MySQL数据库基本的三个优化法则是什么?(提示:从服务配置、应用、开发角度考虑) 

(1)系统服务优化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量
(2)给所有经常查询的字段增加适当的索引
(3)优化SQL语句,减少Ditinct、Group、Join等等语句的操作

三、综合技术题

1.请使用JavaScript写出三种产生一个Image 标签的方法(提示:从方法、对象、HTML角度考虑) 

 (1)var img = new Image();
(2)var img = document.createElementById(“image”)
(3)img.innerHTML = “<img src=”xxx.jpg” />”

2.请使用CSS样式,描述两种方法在当前列中只显示一个div对象

(1)<div style=”width:19999px;”></div>
(2)<div style=”clear:both;”></div>

3.请描述出两点以上XHTML和HTML最显著的区别

(1)XHTML必须强制指定文档类型DocType,HTML不需要
(2)XHTML所有标签必须闭合,HTML比较随意

4.出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展)

MB_Sring、Iconv、Curl、GD、SHM、libxml、socket、MySQL、PDO 等等

5.了解MVC模式吗?请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)

FleaPHP、Zend Framework、CakePHP、Symfony、Plite、php.MVC、PHP on Trax、Smutty 等等

6.写出15个以上你所知道的常用的Linux命令和它的功能

cd directory 进入指定的目录
cd .. 进入上一级目录
cd /directory 进入目录
cd 进入用户自己的目录
cp file_from file_to 拷贝文件
ln [-s] source linkname 为一个文件建立连结
ls [directory] 查看指定目录下的文件
ls -l [directory] 查看指定目录下文件的详细
ls -a [directory] 查看指定目录下的所有文件
mkdir new_directory 建一个新目录
more file 查看一个文本文件的内容
rm file 删除一个文件
rm -r directory 删除一个目录
rmdir directory 删除一个目录
find . -name "file" 从当前目录开始查找指定的文件
adduser 创建新用户
alias 设置别名或替代名
bg fg 使挂起的进程继续运行
ps ax 查询当前进程
mount 连接文件系统
more less 浏览文件内容
chown chgrp 改变文件的拥有者
chmod 改变文件属性
halt 关闭系统
man 显示手册页
passwd 改变用户口令
grep 查找字符串
find 查找文件
dd 复制磁盘或文件系统
kill 杀掉一个进程
killall 杀掉进程

7.使用过Vim编辑器吗?如果使用过,如何在vim里切分多个可视化窗口,包括横排和纵排。(本题选作)

横:split(sp)
纵:vsplit(vsp)

8.说说Linux下的find命令和grep命令的区别(本题选作)

Find:按照文件名查找
Grep:按照文件内容查找

9.请描述出七层网络模型的名称,由下到上(可以使用中文描述)

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

10.说说下面这些这些协议的全称和中文解释(提示:都是工作在应用层)SMTP、POP3、HTTP、FTP、DNS

SMTP (Simple Mail Transfer Protocol) 简单邮件传输协议
POP3 (Post Office Protocol 3) 邮局协议第3版
HTTP (Hypertext Transfer Protocol) 超文本传输协议
FTP   (File Transfer Protocol)文件传输协议
DNS   (Domain Name System and Domain Name Service protocol) 域名系统(服务)协议

11.使用过Memcache缓存吗,如果使用过,能够简单的描述一下它的工作原理吗?(本题选作)

Memcahce是把所有的数据保存在内存当中,采用hash表的方式,每条数据又key和value组成,每个key是独一无二的,当要访问某个值的时候先按照找到值,然后返回结果。Memcahce采用LRU算法来逐渐把过期数据清除掉。

12.请大致的说说Session的工作原理。(提示:与Cookie有相应的关系)

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。

保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是 JSESSIONID。

由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为
http://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
另一种是作为查询字符串附加在URL后面,表现形式为
http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。
为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

13.说说你所了解的搜索引擎包含那些技术?(本题选作) 

爬虫(采集)、切词(分词)、索引(存储)、查询以及其他相关技术

四、项目及设计题

1.一个Web开发团队开发中,大致说说你所了解的所有成员的分工合作情况

2.说说你做过的最得意的项目或者个人开发作品(可以是个人作品,也可以是合作项目)

3.假设给你5台服务器,请大致的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV 300万左右的中型网站  。

参考结构:
3台Web服务器,两台MySQL数据库服务器,采用Master/Slave同步的方式减轻数据库负载,Web服务器可以结合Memcahe缓存来减少负载,同时三台Web服务器内容一致,可以采用DNS轮训的方式来进行负载平衡

五数据库技术题

6.写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)
MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十几个引擎

7.说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)
MySQL、SQLite、BDB(Berkeley DB)、PostgreSQL、Firebird

8.MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?
Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些

9.说出MySQL 4.0和MySQL 4.1版本的最主要的两个区别。如果你使用过MySQL 5,请说说MySQL 5跟MySQL 4的主要区别。(后半题选作)

MySQL 4.1 主要是比MySQL 4.0多了子查询和字符编码的支持两个特点。
MySQL5增加的功能比MySQL4要更多,包括存储过程、视图、事务等等

10.MySQL数据库基本的三个优化法则是什么,除了增加硬件和带宽?(提示:从服务配置、应用、开发角度考虑)
(1)系统服务优化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量
(2)给所有经常查询的字段增加适当的索引
(3)优化SQL语句,减少Ditinct、Group、Join等等语句的操作


1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21

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

2、echo(),print(),print_r()的区别

echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象

3、能够使HTML和PHP分离开使用的模板

其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有PHPLib,FastTemplate,Savant这里有个模板引擎列表:http://www.sitepoint.com/forums/showthread.php?t=123769

4、如何实现PHP、JSP交互?

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

5、使用哪些工具进行版本控制?
CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

6、如何实现字符串翻转?

用strrev函数呗,不准用PHP内置的就自己写:
function strrev($str)
{
$len=strlen($str);
$newstr = '';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}

7、优化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可以提高一个数量级的查询速度.

8、谈谈事务处理

如同是个编程语言都会有答应Hello World的例子一样,是本数据库的教材都会讲A给B的账户转账50美元的例子,回答这个就好了.不过据我所知,用MySQL的企业,很少用MySQL来实现事务处理.何况现在Oracle收购了InnoDB的公司.

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

参见第七题的答案,那个地方搞好了这个问题就迎刃而解了.

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

哈哈哈,我猜出题的人是不是被substr的中文处理问题烦恼很久了,是不是还用了网上流传的用正则匹配中文字符然后截取的函数,其实,有非常简单的解决方法:mb_substr()

--------------------------------------------------------------------------

4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

TortoiseSVN-1.2.6 svn-1.2.3
5.您是否用过模板引擎? 如果有您用的模板引擎的名字是?

smarty
6.请简单阐述您最得意的开发之作.

这个自己想,因为你不再是菜鸟,每个人都有不同的思路,思路也会随之自己的知识而改变……
7.对于大流量的网站,您采用什么样的方法来解决访问量问题?

首先,确认服务器硬件是否足够支持当前的流量
其次,优化数据库访问。
第三,禁止外部的盗链。
第四,控制大文件的下载。
第五,使用不同主机分流主要流量
第六,使用流量分析统计软件。

8.用PHP写出显示客户端IP与服务器IP的代码: 

//显示客户端I
function get_client_ip() {#
if(getenv('HTTP_CLIENT_IP')) {
$client_ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$client_ip = getenv('REMOTE_ADDR');
} else {
$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];
}
return $client_ip;
}
//服务器IP
function get_server_ip(){
if (isset($_SERVER))
{
if($_SERVER['SERVER_ADDR']) $huoqu_ip=$_SERVER['SERVER_ADDR'];
else $huoqu_ip=$_SERVER['LOCAL_ADDR'];
}
else
{
$huoqu_ip=getenv('SERVER_ADDR');
}
return $huoqu_ip;
}

9.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

/**
* 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。
* @param string $dir

* @return array
*/
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] = rec_scandir($dir . "/" . $file);
                 }else {
                     $files[] = $file;
                 }
             }
         }
         closedir($handle);
         return $files;
     }
}

10.简述论坛中无限分类的实现原理。

无限分类是不可能的. 来个100层分类shu状显示看看.

11、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)
未授权(Unauthorized)
Header("http/1.0 403 Forbidden");


--------------------------------------------------
1- 给你三个数,写程序求出其最大值。

print $a > $b ? ($a>$c ? $a : $c) : ($b>$c ? $b : $c);
2- 谈谈asp,php,jsp的优缺点

ASP全名Active Server Pages,是一个WEB服务器端的开发环境,
利用它可以产生和运
行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script
)作为自己的开发语言。
  PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法
, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数
据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(
http://www.php.ne
t)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。
  JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--
脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav
a 上的不凡造诣,将Java 从Java 应用程序
和 Java Applet 之外,又有新的硕果,就是Js
p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点
程序。
  三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。
但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的
第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式
,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PH
P、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到
HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术
,客户端浏览器不需要任何附加的软件支持。


3- 谈谈对mvc的认识

MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,
Controller定义用户界面对用户输入的响应方式。
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。
1)模型(Model)
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.
2)视图(View)
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
3)控制器(controller)
控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

4- 写出发贴数最多的十个人名字的SQL,利用下表:
members(id,username,posts,pass,email)

SELECT username, COUNT(posts) AS total_post FROM members GROUP BY id ORDER BY total_post DESC LIMIT 10;
--------------------------------------------------

1-如何通过javascript判断一个窗口是否已经被屏蔽。

<script>  

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

 if(result==null)  

 {  

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

 }  

 </script>

2-写出session的运行机制
放个cookie保存session_id, 在sessen.save_path里放个SESS_(session_id)的文件保存serialize过的数据
3-有一数组 $a=array(4,3,8,9,2);请将其重新排序,按从小到大的顺序列出。

sort($a);
print implode(/"/n/", $a);

4-防止SQL注射漏洞一般用_____函数。

sprintf, settype
5-查询在线人数,并能处理异常掉线的SQL
....WHERE ________ < now()

 

--------------------------------------------------

1. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?

传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。
2. 在PHP中error_reporting这个函数有什么作用?

设定php脚本的错误报告级别
3. 请写一个函数验证电子邮件的格式是否正确

/*
检查邮件地址是否为邮件地址,返回逻辑值
*/
function CheckMailAdr($str){
return(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$str
));
}

4. 简述如何得到当前执行脚本路径,包括所得到参数。
说明:例如有一个脚本 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"
;
}


5.如何修改SESSION的生存时间.

手动设置 Session 的生存期:<?php
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
  其实 Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
  如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。

6..有一个网页地址 http://www.domain.com/xxx.php,如何得到它的内容?

//需要读取的page地址
    $http_page_url="
http://www.domain.com/xxx.php";
  //打开远程文件
        $read_file=fopen($http_page_url,"rb");

        if (!feof($read_file)) {
             //读取远程文件
                $file_stream = "";
               do {
                       $data = fread($read_file, 8192);
                        if (strlen($data) == 0) {
                          break;
                        }
                        $file_stream.= $data;
               } while(true);
        } 
$file_stream就是你要的东西了

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


8. 请举例说明在你的开发过程中用什么方法来加快页面的加载速度。

A.生成静态HTML,见http://www.look-cn.com(首页以及栏目分类)或http://new.look-cn.com或http://www.16899168.com/media(媒体预测,用正则抓取自某知名网站)或http://www.16899168.com/leagues(比赛分析)
B.生成XML见http和买部分://www.16899168.com
C.可不用数据库的尽量不用数据库,把变量参数存于文本.look-cn有部分就这样做的
D.用ZEND加速

9echo(),print(),print_r()的区别

echoPHP语句, printprint_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(
int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值