PHP大公司面试题集合
1.HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。
答案:
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
2.include require include_once require_once的区别。
引用文件的方法有两种:require 及 include。
require 的使用方法如 require("file.php"); 这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include("file.php"); 这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
_once 后缀表示已加载的不加载。
3.请写出数据类型(int char varchar datetime text)的意思,请问varchar和char有什么区别。
int:整数类型,4 字节大小,范围(-2 147 483 648,2 147 483 647)
char:字符串类型,大小0-255字节
varchar:字符串类型,大小0-65535 字节
datetime:表示时间值的日期和时间类型,大小8个字节,格式:YYYY-MM-DD HH:MM:SS
text:字符串类型,0-65535字节,用于长文本数据存储
char与varchar的区别:
char (13)长度固定, 如'www.nynds.com' 存储需要空间 13个字符
varchar(13) 可变长 如'www.nynds.com' 需要存储空间 14字符
从上面可以看得出来char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。
而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。所以实际应用中用户可以根据自己的数据类型来做。
由于某种原因char 固定长度,所以在处理速度上要比varchar快速很多。
4.Mysql的存储引擎myisam和innodb的区别。
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。
5.用PHP打印出前一天的时间格式是2006-5-10 22:21:21
echo date("Y-m-d H:i:s",time()-3600*24);
6.echo(),print(),print_r()的区别。
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
7.如何实现字符串翻转
(1)英文字符串反转
$str = 'abc,def.'; // 时刻记住推荐使用单引号'',效率高 $newstr = strrev($str); echo '原字符串是:'.$str; // 'abc,def.' echo ' 翻转后的字符串是:'.$newstr; // '.fed,cba' echo '<br />';
// 但是当有中文存在的时候,则出现了乱码
$str = 'a这b是c子,符d串ef.'; $newstr = strrev($str); echo '原字符串是:'.$str; // 'a这b是c子,符d串ef.' echo ' 翻转后的字符串是:'.$newstr; // 输出一串乱码 echo '<br />';
(2)中英文字符串反转
echo "<meta charset = 'utf-8'>"; function myStrrev($str,$encoding='utf-8'){ $newstr = ''; $len = mb_strlen($str); for($i=$len-1; $i>=0; $i--){ $newstr .= mb_substr($str,$i,1,$encoding); } return $newstr; } $string = '相信women是正确的。'; echo $string; echo '<br />'; echo myStrrev($string); // '的。的确正是nemow信相'
8.实现中文字符串截取无乱码的方法
//$start:指定开始截取字符串的位置;$length指定截取字符的长度
function substr2($string, $start, $length){ $len = strlen($string); if($len > $length){ $str = ''; $len1 = $start + $length; //截取到原字符串的位置 for($i=$start; $i<$len1; $i++){ if(ord(substr($string, $i, 2)) > 0xa0){ //在ASCII中,0xa0表示汉字的开始 $str.=substr($string, $i, 2); $i++; } else{ $str.=substr($string, $i, 1); } } return $str.'...'; } else{ return $string; } }
9.如何用PHP的环境变量得到一个网页地址的内容?IP地址又要怎样得到?
"http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF'] ;// 获取网页地址 $_SERVER['REMOTE_ADDR'] //获取IP地址
10.求两个日期的差数,例如2017-2-5~2017-3-6的日期差数
$day=(strtotime('2017-2-5')-strtotime('2017-3-6'))/8600;