PHP面试题收集

提示:答案不唯一,祝各位PHPer找到称心的好工作!


1、PHP是啥东东?(PHP的意思)

PHP是一个基于服务端来创建动态网站的脚本语言。(PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor")

2、PHP获取客户端和服务器端IP?

客户端:$_SEVER['REMOTE_ADDR'] 服务端:$_SERVER["SERVER_ADDR"]

3、PHP如何检测一个日期的有效性?

var_dump(checkdate(11,21,2012)); //返回true or false

4、数据库去除重复查询

select distinct `title` from `table`;

5、冒泡算法

<? $arr = array(345,4,17,6,52,16,58,69,32,8,6666,234); for($i=1; $i<count($arr); $i++){     for($j=count($arr)-1; $j>=$i; $j--){              if($arr[$j] < $arr[$j-1]){             $temp = $arr[$j-1];             $arr[$j-1] = $arr[$j];             $arr[$j] = $temp;         }              } } print_r($arr); ?>

6、echo,print,print_r区别?

echo    输出,不是函数,没有返回值,故输出速度比print快。 print   打印字符串,本身是个函数,有返回值。 print_r 则是打印复合类型  如数组 对象

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

答:get用户端将数据加到URL后,格式为”?字段1=输入数据1&字段2=输入数据2&..."。
  由于get提交参数后会在地址栏中显示出来,所以会产生严重的安全问题。
  get传输的数据量小,get传输的数据量小,这主要是因为受url长度限制;而post可以传输大量的数据。
  get限制表单中数据集的范围为asc2码,而post可以支持整个iso10646字符集。

8、session与cookie的区别?

cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

9、数据库中的事务是什么?

答:事务就是一系列的操作,这些操作完成一项任务。只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件。即撤消前面的操作,这样可以保证数据的一致性。而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作。

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

<?
echo date('Y-m-d H:i:s',mktime(date("H"), date("i"), date("s"), date("m") , date("d")-1, date("Y"))); 
echo date('Y-m-d H:i:s',date(strtotime("-1 day"))); 
echo date('Y-m-d H:i:s', strtotime('-1 day'));
//三种方法都可以
?>

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

能够使HTML和PHP分离使用的模板引擎:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

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

svn版本控制系统、cvs版本控制系统 等等

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

strrev()函数 用于反转字符串

14、优化MYSQL数据库的方法

1、选取最适用的字段属性
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、事务
5、锁定表
6、使用外键
7、使用索引
8、优化的查询语句
9、必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度
10、所得皆必须,只从数据库取必需的数据
11、数据库设计方面,设计结构良好的数据库,必要的时候,去正规化,允许部分数据冗余,避免JOIN操作,以提高查询效率 
12、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master 
详细见:http://tech.ccidnet.com/art/1108/20070619/1117649_1.html

15、MYSQL取得当前时间的函数是?格式化日期的函数是?

取得当前时间用 now()
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format)

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

1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。
2、自己书写截取函数,但效率不如用mbstring扩展库来得高。
3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。

17、请简单阐述您最得意的开发之作

PHPerxuqin-PHP开发者的上网首页(http://www.phperxuqin.com/)

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

1、确认服务器硬件是否足够支持当前的流量。
2、优化数据库访问。
3、禁止外部的盗链。
4、控制大文件的下载。
5、负载均衡,使用不同主机分流主要流量。
6、使用流量分析统计软件,针对问题做进一步的优化。

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

1、PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。
2、PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。
3、require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行
4、include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行
5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。

20、如何修改SESSION的生存时间?

一:在php.ini 中设置 session.gc_maxlifetime = 1440 //默认时间

二:代码实现
$lifeTime = 24 * 3600; // 保存一天 
session_set_cookie_params($lifeTime); 
session_start();

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

301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
401:表示未经授权
header("HTTP/1.0 404 Not Found");

22、


继续...

你可能感兴趣的:(php面试题)