您的位置:首页 > 职场人生

PHP基础面试题收集

2017-05-11 16:38 483 查看
###函数 


字符串函数

如何获取字符串的长度?
strlen()
字符串大小写的转换的函数有?
strtoupper(): 将字符串中的小写字符转变为大写的字符 strtolower(): 将字符串中大写的字符转变为小写的字符 ucfirst(): 首字符大写(只针对首字符,不对其他的字符进行操作) ucwords():单词首字母大写(只针对每一个单词首字符,不对其他的字符进行操作)
去除空格的函数有?
trim() 对表单进行处理的时候 百分之百要用到去空格函数 ltrim|rtrim 删除字符串开头|结尾的空白字符(或其他字符)
查找一个字符串在另一个字符串中第一次出现的位置?
strpos() strstr() 查找字符串的首次出现的位置(大小写敏感) stristr() 查找字符串的首次出现的位置(大小写不敏感)
如何替换字符串中的某个字符?
str_replace()
字符串的重复函数是?
str_repeat()
字符串的填补函数是?
str_pad()
如何完成字符串的反转?
strrev(); 
ps:汉字不能反转


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


数字格式化函数是?
number_format()
打断字符串为指定数量的字串的函数?
wordwrap()
字符串按要求的字符编码来转换的函数?
iconv()
字符串的截取函数是?
substr()
字符串的截取比较是?
substr_compare()


HTML函数

将html标签转换为html实体的函数?
htmlspecialchars()
将html实体转换为html标签的函数?
htmlspecialchars_decode()
从字符串中去除 HTML和 PHP 标记的函数?
strip_tags()
去除字符串中转义斜杠的函数?
stripslashes()
####其他函数 **Strtotime(str)**将字符串转换成时间戳
strtotime(“2008/6/8”)
strtotime(“+3 Days”);
strtotime(“now”); //yesterday tomorrow
date(“Y-m-d H:i:s”,time()) 格式化时间戳
检测一个变量是否有设置的函数是否?是否为空的函数是?
isset() empty()
PHP里面如何定义一个常量(constant)?
通过define()指令,例如:define(“MYCONSTANT”, 100)
检测变量是否为布尔类型的函数是?
is_bool
is_float 检测变量是否是浮点型
is_int 检测变量是否是整数
is_string 检测变量是否是字符串
is_null 检测变量是否是空类型
用PHP打印出前一天的时间,打印格式是2007年5月10日22:21:21?

echo date('Y-m-d H:i:s',strtotime('-1 day'));
//ps:strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳


写出一个函数,尽可能的高效,从一个标准的URL里取出文件的扩展名例如:http://www.baidu.com/abc/de/fg.php/?id=1,需要取出 php
或者.php?

$url ="http://www.baidu.com/abc/de/fg.php/?id=1";
//获得文件目录名字,http://www.baidu.com/abc/de/fg.php
echo $path = pathinfo($url,PATHINFO_DIRNAME );
//获得文件的扩展名,php
$path = pathinfo($path,PATHINFO_EXTENSION);
echo $path;


下列哪个PHP函数是用正则表达式将字符串分割到数组中?
A split B implode C explode D join 
选择 A

注释: split:用正则表达式将字符串分割成数组. implode:将数组组合成一个字符串 explode:使用一个字符串分割字符串成数组
join:implode的别名


哪个PHP函数可以实现向上取整(又称进一取整)?
ceil()
###数组
$arr = array(‘james’, ‘tom’, ‘symfony’); 请打印出第一个元素的值
echo $array[0]
array_search()-在数组中搜索给定的值
in_array():判断某个数组元素值是否存在
**array_key_exists():**判断某个数组元素的标识符是否存在
**array_values():**从数组中取得所有的数组元素值,组成一个新的索引数组,如果正确,返回的是组成的索引数组,不正确则返回false

<?php
$arr =array('a'=>0,'b'=>1,'c'=>2);
$res =array_values($arr);
print_r($res);
?>

Array
(
[0] => 0
[1] => 1
[2] => 2
)


**array_keys():**从数组中取出所有的数组元素的标识符,组成一个新的索引数组
**extract($数组名):**将关联数组映射到一张变量表中,以键名当作变量名,以数组元素值当作变量值,如果对变量的值做了修改(重定义),那么他不会影响数组中的数组元素值

<?php
$arr =array('a'=>'alice','b'=>'bob','c'=>'clare');
$res =extract($arr);
print_r($a);
print_r($b);
print_r($c);
?>
'alice'
'bob'
'clare'


**list():**将数组中的元素值赋给不同的变量

结构:list(变量1,变量2,变量3…)=array(…);

注意:只能对索引数组进行操作

array_push(数组名,参数1,参数2,参数3…) 入栈:从堆栈结构的顶部压入数据的操作 array_pop(数组名) 出栈:从堆栈结构的顶部弹出(删除)数据的过程
array_unshift(数组名,参数1,参数2,参数3…) 入队:从队列的头部压入一些数据,这种操作叫做入队 array_shift(数组名) 出队:从队列的头部删除一些数据,这种操作叫做出队
array_search:
他用来查找数组元素查找数据在数组中的位置,如果该数组有该数据,返回的是该数据在数组中的数组元素的下标或者键名;

<?php
$arr = array('name'=>'lucy','age'=>23,'sex'=>'girl');
echo array_search('lucy',$arr);
?>
'name'


**array_merge($arr1,$arr2):**将参数列表中的数组进行合并 array_slice(数组名,切割的起始位置,切掉的长度)
切割数组中的连续的几个数组元素,切割后返回的是切割掉的数组元素组成的新数组,,切割不成功返回空数组
array_splice(数组名,切割起始位置,切割的长度,替换的新数据)
返回值是切割掉的数据
不常用数组:
sort()
rsort()
ksort()
krsort()
array_unique():去除重复的数组元素值,返回去除重复元素值之后的数组
array_count_values():返回的数组,统计数组中所有的值出现的次数
array_rand():从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个标识符
array_sum():将数组中的所有值的和以整数或浮点数的结果返回
array_product():计算乘积
array_diff(数组1,数组2):用来求数组的差集,用第一个数组减去第二个数组
array_diff_key()
arraydiffassoc()
array_intersect()
arrayintersectkey()
###OOP
类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是?
serialize() unserialize()
请写出PHP5权限控制修饰符

public(公共),private(私用),protected(继承) php class中static,public,private,protected的区别?

static 静态,类名可以访问

public 表示全局,类内部外部子类都可以访问;

private表示私有的,只有本类内部可以使用;

protected表示受保护的,只有本类或子类或父类中可以访问;

写几个魔术方法并说明作用? __call()当调用不存在的方法时会自动调用的方法 __autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件 __set()当给未定义的变量赋值时会自动调用的方法 __get()当获取未定义变量的值时会自动调用的方法 __construct()构造方法,实例化类时自动调用的方法
__destroy()销毁对象时自动调用的方法 __unset()当对一个未定义变量调用unset()时自动调用的方法 __isset()当对一个未定义变量调用isset()方法时自动调用的方法 __clone()克隆一个对象 __tostring()当输出一个对象时自动调用的方法
###数据库 MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?
Varchar是变长,节省存储空间,char是固定长度。查找效率要varchar型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些
MyISAM 和 InnoDB 的基本区别?索引结构如何实现?
MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,而InnoDB类型支持事务,行锁,有崩溃恢复能力。读写速度比MyISAM慢
MYSQL取得当前时间的函数是?,格式化日期的函数是?
now(),date()
对于大流量的网站,您采用什么样的方法来解决访问量问题?
确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表, 程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量
防止SQL注入漏洞可以用哪些函数?
addslashes()
mysql_escape_string()
对于大流量的网站,您采用什么样的方法来解决访问量问题?
优化程序,优化数据库,如果程序和数据库已经最优化,使用以下解决方法: 1、确定当前服务器设备是否满足流量需求。 2、使用Memcache缓存技术,把动态内容缓存到文件中,动态网页直接调用这些文件,而不必再访问数据库。 3、禁止外部盗链,图片和文件外部盗链会给服务器带来大量的负载压力,可以通过refer来禁止外部盗链,或者使用apache来配置禁止盗链。 4、控制大文件的下载,大文件的下载对于非SCSI硬盘来说会占用大量的资源,导致服务器的响应能力下降。 5、使用不同的主机分流主要流量,使服务器均衡负载。
6、使用流量统计软件统计分析网站流量,可以知道哪些地方耗费了大量的流量,哪些页面需要再进行优化。
数据库索引有几类,分别是什么?什么时候该用索引?
普通索引、主键索引、唯一索引 并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。
你对Memcach的理解,优点有哪些?
Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。 Memcache的优点:稳定、配置简单、多机分布式存储、速度快。
###其他 如何在页面之间传递变量(至少两种方式)
GET,POST,COOKIE,SESSION,隐藏表单
请问GET 和POST的区别是什么?
GET方法传输数据,所有的信息都会出现在URL地址中,最多只能传输1024字节,而POST可以通过表单传输大量数据,最多可以传输2M数据,可以根据需求调节.
能够使HTML和PHP分离开使用的模板
Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate
JS表单弹出对话框函数是?获得输入焦点函数是?
弹出对话框: alert(),prompt(),confirm()
php读取文件内容的几种方法和函数?
打开文件,然后读取。Fopen() fread()
打开读取一次完成 file_get_contents()
请列出3个PHP中的预定义全局变量?
$_SESSION
$_COOKIE
$_SERVER
$_GET
$_POST
用PHP写出显示客户端IP与服务器IP的代码
echo $_SERVER[‘REMOTE_ADDR’];
echo $_SERVER[‘SERVER_ADDR’];
HTTP 状态中302、403、 500代码含义?
一二三四五原则:一 消息系列 二 成功系列 三 重定向系列 四错误系列 五 服务器端错误系列
302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。
javascript能否定义二维数组,如果不能你如何解决?
javascript不支持二维数组定义,可以用arr[0] = new array()来解决
以下代码的执行结果是?

<?php
$test ='test1';
$abc =&$test;
unset($test);
echo $abc?$abc:'test2';


A.test1   B.test2   C.执行报错   D输出为空
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: