PHP面试题集锦
整理下网上及个人面试过程中碰到的面试题,供找工作的phper参考。
1.用php打印时间格式“2017-01-01 12:12:32”。
答:$date = date("Y-m-d H:i:s");
print_r($date);
2.get和post的区别?
答:(1)get是从服务器上获取数据,post是向服务器传送数据
(2)get是把参数队列加到提交表单的ACTION属性所指的url中,值和表单内的字段一一对应,在url中可见。post是通过HTTP post机制,将表单中各个字段及内容放置在HTML HEADER内一起传送到ACTION所指的url地址。用户看不到这个过程。
(3)get可传送的数据量小且不安全,post可传送的数据量较大且相对安全。
3.echo(),print(),print_r()的区别是什么?
答:四种方法可以输出字符串:echo,print(), printf(),print_r()。
echo 不是一个函数,而是一个语言结构,可以一次输出多个值,多个值之间用逗号隔开。
print() 函数print()打印一个值(他的参数),如果字符串成功显示返回true,否则返回false。
printf() 源于C语言的printf(),该函数输出格式化的字符串。
print_r() 可以把字符串和数字简单的打印出来,而数组则以键值列表的形式展示。
4.能够使html和PHP分离开使用的模板?
答:smarty
5.使用哪些工具进行版本控制?
答:svn,git,cvs
6.include和require有什么区别?为避免一次包含多个文件,使用什么代替?
答:include 被包含文件不存在或无法打开时,会报错,但系统依然往下执行;
require 被包含文件不存在或无法打开时,会报错,并终止程序运行;
include_once
require_once
7.用php获取客户端ip和服务端ip。
答: 客户端ip:$_SERVER("REMOTE_ADDR");
服务器端:gethostbyname("www.baidu.com");
8.单引号和双引号的区别?
答:一般情况下两者是通用的,但是双引号会解析变量,单引号不解析。
9.常用的超全局变量。(最少列举5个)
答:$GLOBALS
$_GET
$_POST
$_REQUIRE
$_FILES
$_SESSION
$_COOKIE
$_SERVER
10.seeion和cookie的区别?
答:1.cookie产生于服务器,存储在客户端,存储的信息少,每个网站只能在客户端存储6个cookie,而且不安全,可用通过分析cookie进行cookie欺骗。
2.seeion产生于服务器,存储在服务器,存储的信息较多,但是较多的session信息会影响服务器的响应速度,相对安全。
11.如何改变cookie的有效期?
答:setcookie($key, $value, time()+$time);
12.优化数据库的方法?
答:1.选取最适用的字段属性,讲表中字段的宽度设的尽可能小,尽量把字段设为NOT NULL
2.适用连接(JOIN)来代替子查询
3.适用联合(UNION)来代替手动创建的临时表
4.事务处理
5.锁定表,优化数据处理
6.适用外键,优化锁定表
7.简历索引
8.优化查询语句
13.对于大流量网站,采用什么方法来解决访问流量的问题?
答:1.确认硬件系统满足当前访问量的要求
2.数据库读写分离,优化数据表
3.控制大文件的下载
4.使用不同主机分流主要流量
5.使用流量分析统计软件,对流量集中网站进行重点优化
14.说说php中传值和传引用的区别,什么时候传值,什么时候传引用?
答:1.传值,如果是非对象,会传一个值的拷贝,对这个变量做任何修改都不影响原值
2.传引用,传应用或者传引用,传递的是真实的内存地址,对这个变量的改变会影响原值,传送大型变量时效率高
15.PHP的意思是?
答:超文本预处理器,是一种开源脚本。使用广泛,主要适用于web开发领域。
16.字符串"\r","\n","\t","\x20"分别代表什么?
答:"\r"在linux中代表的是回到当前行最开始的地方,mac中表示回到下一行最开始的地方。
"\n"表示换行
"\t"制表符
"\x20"是32在ASC11表中16进制的表示
17.一下语句的输出结果是什么?
$a = 3;
echo "$a",'$a',"\\\$a","${a}","$a"."$a","$a"+"$a";
答:3$a\$a336
18.一下语句的输出结果是什么?
setcookie("a", "value");
print $_COOKIE["a"];
答:value (若知识这两段输出,则会提示PHP Notice:undefined index: a)
19:PHP将一个页面重定向另一个页面怎么写?
答:header();
20:什么是魔术引号(magic_quotes_gpc)?
答:魔术引号(magic quotes)是一个自动将进入PHP脚本的数据进行转义的过程。最好别在编译的时候转义,而是在运行时根据需要进行转义。
21:在类的方法中,如何调用父类的同名方法?
答:parent::methodName();
22.extends的作用时什么?
答:类的继承。
23:@test()和&test()有什么区别?
答:@是错误抑制符,@test()是抑制test()方法中的错误提示
&test()是引用test()方法
24:array+array 和 array_merge()的区别?
答:1.键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为结果返回,而把后面的数组拥有相同键名的值抛弃掉
2.键名为字符时,+仍然会把最先出现的值作为结果返回,抛弃后面数组拥有相同键名的值,array_merge() 会覆盖掉前面拥有相同键名的值
25:请列举最少3个魔术方法并说明他们的用途?
答:构造函数:__construst();
析构函数:__destrust();
__get()控制私有受保护的未定义的成员属性的访问
__set()对私有的受保护的未定义的成员属性进行赋值
__isset()对私有的受保护的未定义的成员属性进行isset()和empty()判断
26:PHP支持多继承吗?
答:不支持,只能继承一个父类,用extends标识。
27:在php中error_reporting函数有什么作用?
答:设定error展示级别
28:mysql获取当前时间的函数是?格式哈日期的函数是?
答:CURRENT_TIMESTAMP();
DATE_FORMAT();
29:有一个网页,比如百度首页http://www.baidu.com/ ,如何得到它的内容?
答:1.方法一:
echo file_get_contents("http://www.baidu.com/");
2.方法二:(对于 version >= php5)
$webContents = fopen("http://www.baidu.com/", "rb");
$contents = stream_get_contents($webContents);
fclose($webContents);
echo $contents;
30:谈谈对MVC的认识和理解?
答:M--Model 数据结构层
V--View 视图层
C--Controller 逻辑处理
31:写出发帖数最多的是个人的名字的sql。利用member(id, username, posts, pass, email)表。
答: select top 10 id , username from member where order by posts desc.
32.请写一个函数验证邮件地址是否正确。
答: $emailUrl = "123@163.com";
$preg = "/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+([.a-zA-Z0-9_-])+/";
return preg_match($preg, $emailUrl);
33:数据库中的事物是什么?
答:事物是作为一个单元的一组有序的数据库操作。如果组中的所有操作成功,则认为事物成功,哪怕有一个操作失败,也是事物不成功。

浙公网安备 33010602011771号